文件处理和归档 paster 命令合并文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 paster命令语法 paste [OPTION]… [FILE]… # 建如下两个文件,paste 命令的示例文件 $ cat file1 Linux Unix Windows Solaris HPUX # 文件 2 $ cat file2 Dell IBM HP Oracle HP 默认情况下,使用paste命令合并文件,各文件中的各行将以制表符Tab作为分隔符进行合并并输出 paste file1 file2 Linux Dell Unix IBM Windows HP Solaris Oracle HPUX HP $ paste file2 file1 Dell Linux IBM Unix HP Windows Oracle Solaris HP HPUX 使用-d选项,,可以指定各个文件中的各行在合并时所使用的分隔符 paste -d'|' file1 file2 当合并两个以上文件时,也可以指定多个分隔符 paste -d':,' file1 file2 file3 使用-s选项,paste命令可以顺序地合并文件,即它顺序地将每个文件中的所有行的内容合并为一行 使用-s选项与-d选项结合,可以指定合并时的分隔符 使用paste命令,将文件的内容由一列转换为两列 $ paste - - < file1 Linux Unix Windows Solaris HPUX 使用paste命令,将文件的内容由一列转换为两列,并使用冒号“:”分隔: $ paste -d: - - < file1 Linux:Unix Windows:Solaris HPUX: 使用paste命令,将文件的内容由一列转换为三列 $ paste - - - < file1 Linux Unix Windows Solaris HPUX
dd 命令备份和拷贝文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 dd命令可以通过可能的转换格式复制指定的输入文件到指定的输出。同时,可以指定输入和输出的块大小,以处理原始物理数据的读写。块大小的默认单位是字节(bytes),也可以在数字后跟特定的单位来指定的块大小。((1024 *1024 *1024 bytes)、GB (1000 *1000 *1000 bytes)、M(1024 *1024 bytes)、MB (1000 *1000bytes)、w(2bytes)和c(1 bytes) dd命令有如下两个基本参数 if =<inputfile>——指定输入文件的路径。默认为标准输入 of =<outputfile>——指定输出文件的路径。默认为标准输出 例如,直接复制一个磁盘/dev/sda的数据到另一个磁盘/dev/sd dd if =/dev/ sda of =/dev/ sdb 复制一个DVD 光盘的数据到一个iso文件: dd if =/dev/ dvd of =dvd.iso 擦除一个分区的数据: dd if =/dev/ zero of =/dev/ sda2 /dev/zero是Linux 系统中的一个特殊文件。从文件/dev/zero读出的内容均为空字符,它的一个典型用途就是提供用于初始化数据存储器的字符流 dd命令还有另外如下两个比较重要的参数: bs=<n>——指定输入和输出的块大小。默认单位为字节。 count=<n>——从输入读取的块数量 例如,创建一个1MB大小的文件,并且块大小为1024bytes: dd if =/dev/ zero of =/tmp/ outfile bs=1024 count=1024 下述命令的组合可以用于设备的标准测试,并分析其在块大小为1024 字节时的顺序读写的性能 dd if =/dev/ zero bs=1024 count=1000000 of =/home/y antaol/1Gb.file dd if =/home/y antaol/1Gb.file of =/dev/ null bs=64k gzip命令用于压缩文件,以减少文件的大小,也可以用于解压缩文件。
gzip、bzip2 命令压缩和归档文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 gzip 命令用于压缩文件,以减少文件的大小,也可以用于解压缩文件。 如果是文本文件,使用gzip命令压缩后大小将减少60 %~70 %。 直接使用gzip,不指定选项,将压缩指定文件,生成一个默认以.gz结尾的文件,并删除源文件 gzip 文件名 使用-c选项,会将内容输出到标准输出,使用重定向可以将输出内容写入到指定文件,保留原始文件 gzip -c image2.jpg > image2.jpg.gz 使用-d选项,gzip命令将解压缩指定的文件 gzip -d image1.jpg.gz 使用-r选项,gzip命令将递归地压缩指定目录下的文件: gzip -r . 使用- 例如,以最快的速度压缩文件 gzip -1 image1.jpg bzip2 bzip2命令也同样用于压缩和解压缩文件。bzip2比gzip压缩速率高,速度稍慢 使用-k选项,可以压缩文件并保留原始文件 bzip2 -k image1.jpg bzip2命令的 -d选项也同样用于解压缩文 -f选项表示覆盖已经存在的文件 bzip2 -df image1.jpg.bz2
gunzip、bunzip 命令解压缩文件 gunzip 命令与 gzip 命令相对应,用于解压缩由 gzip 命令压缩的文件。其作用与 gzip 命令的-d 选项相同。 bunzip2 命令与 bzip2 命令相对应,用于解压缩由 bzip2 命令压缩的文件。其作用与 bzip2 命令的-d 选项相同。
tar 命令打包和解包文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 使用-cvf选项,创建一个未经压缩的tar包: tar -cvf home_yantaol.tar /home/yantaol -c:创建一个新的归档。 -v:冗长地列出被处理的文件。 -f:指定归档文件的名称,即上述命令中的home_yantaol.tar是-f选项的参数 上述的-cvf选项,对归档后的文件并不提供任何的压缩。结合-z选项使用,就可以将归档后的文件使用gzip压缩: 即一般有:tar -zxvf 文件 解压文件 tar -zcvf 文件压缩 使用-tvf选项,可以在不解包的情况下列出tar包文件中的内 容: tar -tvf home_yantaol.tar 使用-rvf选项,可以添加文件或目录到一个已存在的tar包: tar -rvf home_yantaol.tar /home/yantaol/newfile 使用-W选项,用于核实tar包的内容。 tar -cWvf home_yantaol.tar /home/yantaol
监测和管理磁盘 mount、umount 命令挂载和卸载存储介质 在 Linux 系统中,不同分区上的文件系统,或可移动设备(CD、DVD、U 盘等),或 NFS(网络文件系统)共享目录可以被挂载到目录树中的某一节点,之后还可以再被卸载。挂载和卸载一个文件系统,分别使用 mount 和 umount 命令。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 mount 直接运行mount命令,不带任何参数,将显示所有当前挂载的文件系统 默认情况下,mount命令的输出包括各种虚拟文件系统,如sysfs和tmpfs。使用-t选项,mount命令可以只显示某一指定文件系统类型。 只显示当前挂载的文件系统类型是ext3的文件系统: $ mount -t ext3 如要挂载某个文件系统,使用如下格式的mount命令: mount [OPTION]… [DEVICE] [DIRECTORY] [DEVICE]可以是块设备的全路径(例如:/dev/sda3),或是一个通用唯一标识符(例如:UUID="12135a89-ca6d-4fd8-a347-10071d0c19cb" ),或是一个卷标(例如:LABEL= "home" ),或是NFS共享目录的路径(例如:hostname:/local) 挂载一个CD-ROM设备到/mnt目录 mount -t iso9660 -o ro /dev/cdrom /mnt 挂载一个磁盘分区到/mydata目录 mount /dev/sda5 /mydata 使用umount命令卸载文件系统时,只需指定要卸载的设备名或挂载点(即挂载时的目标目录)作为参数即可。 卸载挂载点/opt/share: umount /opt/share
df 命令报告文件系统磁盘空间利用率
1 2 3 4 5 6 7 8 9 10 11 12 df 命令语法df [OPTION]… [FILES]…每行显示的字段分别是设备名、总计块数量、已使用的磁盘空间、可用的磁盘空间、磁盘的使用率和挂载点 使用-a选项,df 命令可以显示所有文件系统的信息,包括虚拟文件系统 使用-h选项,df 命令就能以对人类可读的格式显示相应的结果信息 使用-T选项,df 命令可以显示文件系统类型的信息 使用-t选项,df 命令可以仅显示某一指定文件系统类型的文件系统信息 df -t ext3 使用-x选项,df 命令可以显示除某一文件系统类型以外的文件系统信息 使用-m选项,df 命令将以MB(兆字节)为块大小单位,显示文件系统信息 df -m
du 命令评估文件空间利用率
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 du 命令语法du [OPTION]… [FILE]…直接使用du 命令,不指定任何选项和参数,将以1024字节为大小单位显示当前目录下所有目录的大小 du 如果指定某一具体文件或目录作为参数,du 命令将指定文件的大小,或指定目录中的各目录的大小 du /home/yantaol 使用-a选项,du 命令可以递归地显示目录中各文件和目录的大小 du -a 使用-h选项,du 命令将以人类可读的格式显示文件或目录的大小 du -h 使用-s选项,du 命令将仅显示当前目录或是某一指定目录的总大小 du -sh 使用-0选项,du 命令将以不换行的形式将输出结果显示为一行 使用--exclude选项,du 命令可以排除统计符合指定模式的文件的大小 du -ah --exclude="*.jpg" 使用--time选项,du 命令可以同时列出各条目的修改时间 du -h --time
后台执行命令 cron、crontab 命令执行计划任务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ron 是执行定时计划任务的守护进程 当系统是多用户运行级别时,cron进程会从/etc/init.d中自动启动。cron进程会在目录/var/spool/cron/crontabs/下搜索定时计划任务文件(定时计划任务文件以创建此任务的账户名命名),并将找到的这些定时计划任务载入内存。 注意:目录/var/spool/cront/crontabs中的定时计划任务文件不要直接用文本编辑器编辑,应当使用crontab命令访问和更新它们的内容。因为crontab命令可以检查这些文件中的语法错误 cron进程还会读取/etc/crontab以及目录/etc/cron.d下的内容 cron进程会每分钟唤醒一次,审查所有存储的定时计划任务,检查每个命令,看它是否应该在当前时间运行 cron每分钟会检查一次它的池目录/var/spool/cront/crontabs的修改时间(modtime)是否已经改变。如果修改时间已经改变,cron会检查所有定时计划任务文件的修改时间,并重新加载那些已经被修改的定时计划任务文件。因此,当定时计划任务文件被修改后,不需要重启cron守护进程。 定时计划任务文件由每行命令组成,每行有6个字段,由空格或制表符分隔。前5个字段表示运行任务的时间,最后一个字段是任务的命令。前5个字段的含义依次如下所示。 分钟:其值为0~59。 小时:其值为0~23。 日期:其值为1~31。 月份:其值为1~12或是Jan~Dec(月份英文名称的前3个字母)。 星期:其值为0~6或是Sun~Sat(星期英文名称的前3个字母),0表示星期日。 可以使用表达式描述 星号(*)——匹配所有可能的值。比如“0 6 * * *”表示每天6点。 连字符(-)——定义一个范围。比如“0 2 * * 1-5”表示每周一到周五的凌晨两点。 斜杠(/)——表示每间隔多少时间。比如“*/5 * * * *”表示每5分钟。 逗号(,)——表示“或”的含义。比如“0 0,6,12,18 * * *”表示每天的0点、6点、12点和18点。 使用-l选项,crontab命令可以列出当前用户的所有定时计划任务 crontab -l 使用-e选项,crontab命令将创建或修改当前用户的定时计划任务 使用-u选项,crontab命令可以查看指定用户的定时计划任务 使用-r选项,将没有确认信息地完全移除当前用户的定时计划任务 crontab -r 使用-i选项和-r选项,crontab命令将在移除定时计划任务前提示用户进行确认: crontab -i -r crontab: really delete yantaol's crontab?
at 命令在指定时间执行命令 1 2 3 at 命令用于任务指定时间执行,既可以从标准输入读入命令也可以从指定文件读入 at 命令语法 at [-f file] [-q queue] [OPTION] TIME [DATE]
at 命令允许相当复杂的时间格式。如下 ![](2-Shell 进阶/425e84b89ce5a6ad037b78866caa052c.png)
1 2 3 4 5 6 7 使用-f选项,at 命令可以从指定的文件中读取命令内容,然后在指定的时间运行。 1 时后运行文件myjobs.txt(命令、shell运行脚本)中的内容 at -f myjobs.txt now + 1 hour使用-l选项,可以列出当前用户所有使用at 创建的未运行或正在运行的任务(root 会列出所有用户任务) atq命令具有与命令“at -l”相同的功能 atrm命令可以用于删除现有的任务,参数为上面显示参数编号
&控制操作符将任务放在后台运行 只是后台进程,退出 shell 会全部挂掉
1 2 3 4 5 6 7 8 9 10 11 12 13 制操作符&的使用方法 command &或者script-name & 运行命令“sleep 10”并将其放入后台运行 sleep 10 &使用jobs 命令,我们可以查看后台正在运行的任务信息 使用-l选项,jobs 命令可以显示后台正在运行的任务的进程号等信息 如果想将后台的任务放到前台来运行,有如下两种方法,JOB-ID即为任务编号 %JOB-ID fg JOB-ID 如果想将上述的任务重新再放回后台运行,首先按CTRL+Z组合键,将上述放在前台的任务挂起,然后在命令行提示符下输入如下命令即可: %1 & bg
nohup 命令运行一个对挂起免疫的命令 nohup 能够让命令或者脚本在退出系统后继续在后台运行
1 2 3 4 5 6 nohup 命令语法nohup COMMAND [ARG]… &COMMAND:Shell脚本或命令的名称。 [ARG]:脚本或命令的参数。 &:nohup 命令不能自动地将任务放在后台运行,你必须明确地在nohup 命令的末尾添加操作控制符& nohup sh script.sh &