Shell | Shell 进阶(二)
作者:互联网
Shell | Shell 进阶(二)
一、文件处理和归档
- paster命令合并文件
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 命令备份和拷贝文件
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/yantaol/1Gb.file dd if=/home/yantaol/1Gb.file of=/dev/null bs=64k gzip命令用于压缩文件,以减少文件的大小,也可以用于解压缩文件。
- gzip、bzip2命令压缩和归档文件
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 . 使用-#选项(#代表数字1~9),可以指定gzip命令压缩的级别,-1表示最快的压缩速度(但压缩率较低),而-9表示最慢的压缩速度(压缩率最好)。默认的压缩级别是-6。 例如,以最快的速度压缩文件 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命令打包和解包文件
使用-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 #注意:使用-r选项,不能添加文件或目录到一个压缩过的tar包,即-r选项不能与-z选项和-j选项结合使用。 使用-W选项,用于核实tar包的内容。 tar -cWvf home_yantaol.tar /home/yantaol
二、监测和管理磁盘
- mount、umount命令挂载和卸载存储介质
在Linux系统中,不同分区上的文件系统,或可移动设备(CD、DVD、U盘等),或NFS(网络文件系统)共享目录可以被挂载到目录树中的某一节点,之后还可以再被卸载。挂载和卸载一个文件系统,分别使用mount和umount命令。mount #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) #注意:挂载和卸载文件系统,通常需要root账户权限 挂载一个CD-ROM设备到/mnt目录 mount -t iso9660 -o ro /dev/cdrom /mnt 挂载一个磁盘分区到/mydata目录 mount /dev/sda5 /mydata 使用umount命令卸载文件系统时,只需指定要卸载的设备名或挂载点(即挂载时的目标目录)作为参数即可。 卸载挂载点/opt/share: umount /opt/share
- df命令报告文件系统磁盘空间利用率
df命令语法 df [OPTION]… [FILES]… 每行显示的字段分别是设备名、总计块数量、已使用的磁盘空间、可用的磁盘空间、磁盘的使用率和挂载点 使用-a选项,df命令可以显示所有文件系统的信息,包括虚拟文件系统 使用-h选项,df命令就能以对人类可读的格式显示相应的结果信息 使用-T选项,df命令可以显示文件系统类型的信息 使用-t选项,df命令可以仅显示某一指定文件系统类型的文件系统信息 df -t ext3 使用-x选项,df命令可以显示除某一文件系统类型以外的文件系统信息 使用-m选项,df命令将以MB(兆字节)为块大小单位,显示文件系统信息 df -m
- du命令评估文件空间利用率
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命令执行计划任务
#cron是执行定时计划任务的守护进程 当系统是多用户运行级别时,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命令可以查看指定用户的定时计划任务 #只有root用户有权限查看其他用户的定时计划任务。 使用-r选项,将没有确认信息地完全移除当前用户的定时计划任务 crontab -r 使用-i选项和-r选项,crontab命令将在移除定时计划任务前提示用户进行确认: crontab -i -r crontab: really delete yantaol's crontab?
- at命令在指定时间执行命令
at 命令用于任务指定时间执行,既可以从标准输入读入命令也可以从指定文件读入 at 命令语法 at [-f file] [-q queue] [OPTION] TIME [DATE]
- at命令允许相当复杂的时间格式。如下
使用-f选项,at命令可以从指定的文件中读取命令内容,然后在指定的时间运行。 1时后运行文件myjobs.txt(命令、shell运行脚本)中的内容 at -f myjobs.txt now + 1 hour 使用-l选项,可以列出当前用户所有使用at创建的未运行或正在运行的任务(root 会列出所有用户任务) atq命令具有与命令“at -l”相同的功能 atrm命令可以用于删除现有的任务,参数为上面显示参数编号
- at命令允许相当复杂的时间格式。如下
- &控制操作符将任务放在后台运行
只是后台进程,退出shell会全部挂掉#控制操作符&的使用方法 command & 或者script-name & 运行命令“sleep 10”并将其放入后台运行 sleep 10 & 使用jobs命令,我们可以查看后台正在运行的任务信息 使用-l选项,jobs命令可以显示后台正在运行的任务的进程号等信息 如果想将后台的任务放到前台来运行,有如下两种方法,JOB-ID即为任务编号 %JOB-ID fg JOB-ID 如果想将上述的任务重新再放回后台运行,首先按CTRL+Z组合键,将上述放在前台的任务挂起,然后在命令行提示符下输入如下命令即可: %1 & bg
- nohup命令运行一个对挂起免疫的命令
nohup 能够让命令或者脚本在退出系统后继续在后台运行nohup命令语法 nohup COMMAND [ARG]… & COMMAND:Shell脚本或命令的名称。 [ARG]:脚本或命令的参数。 &:nohup命令不能自动地将任务放在后台运行,你必须明确地在nohup命令的末尾添加操作控制符& nohup sh script.sh &
标签:选项,文件,Shell,进阶,指定,文件系统,命令,使用 来源: https://www.cnblogs.com/zhy-god/p/16610118.html