Shell笔记(2)- Shell命令进阶

2 Shell命令进阶


2.1 文件处理和归档

2.1.1 paster 命令实例:合并文件

  $ paste file1 file2

  以各文件各行制表符Tab作为分隔符进行合并输出

  $ paste -d '|'  file1 file2   // -d制定所使用的分隔符

  $ paste -s file1 file2        //-s 顺序合并每个文件中所有行为一行

  $ paste - - - < file1     // 将文件内容由一列转为三列

2.1.2 dd命令实例:备份和拷贝文件

  dd命令可以备份分区,DVD或U盘,转换数据文件,以及做硬盘或CPU测试

  dd命令可以通过可能的转换格式复制指定的输入文件到指定的输出。同时,可以指定输入和输出的的块大小,以处理原始物理数据的读写。

  块大小默认是字节(bytes),也可以在数字后面跟特定单位来指定块大小,比如:

  G(1024^3bytes),GB(1000^3 bytes),M(1024^2 bytes), MB(1000^2 bytes),w(2bytes)和c(1bytes)

  参数:if=<inputfile> 指定输入文件路径,默认标准输入,of=<outputfile> 指定输出文件路径,默认标准输出

  # dd if=/dev/sda of=/dev/sdb  //直接复制磁盘/dev/sda的数据到/dev/sdb

  # dd if=/dev/dvd of=dvd.iso  //复制DVD光盘的数据到iso文件

  # dd if=/dev/zero of=/dev/sda2  //擦除一个分区的数据,从文件/dev/zero读出的内容均为空字符

  参数:bs=<n>  指定输入和输出的块大小,默认字节, count=<n> 从输入读取的块数量

  # dd if=/dev/zero of=/tmp/outfile bs=1024 count=1024   //创建一个1MB的文件,并且块大小为1024bytes

  # dd if=/dev/sda of=/home/auv/MBR.image   bs=512 count=1  //备份磁盘主引导分区

  # dd if=/dev/zero bs=1024 count=1000000 of=/home/auv/1Gb.file  //测试读性能

  # dd if=/home/auv/1Gb.file of=/dev/null bs=64k   //测试写性能

2.1.3 gzip、bzip2 命令实例:压缩和归档文件

  gzip 压缩后减少60%~70%

  # gzip image1.jpg  

  # gzip -c image2.jpg > image2.jpg.gz  //-c 将压缩内容输出到标准输出

  # gzip -d image.jpg.gz  //解压

  # gzip -r .    //递归压缩当前目录的文件

  # gzip -1 image1.jpg  //-1(~9)代表压缩级别,-1最快(压缩率最低),-9最慢(压缩率最高),默认-6

  bzip2具有更好的压缩率,但速度略慢。

  # bzip2 image1.jpg

  # bzip2 -k image1.jpg    //压缩并保留原始文件

  # bzip2 -df image1.jpg.bz2  //解压  -f 覆盖已经存在的文件。

2.1.4 gunzip、bunzip2命令实例:解压缩文件

  # gunzip image1.jpg.gz

  #gunzip -c image1.jpg.gz > image1.jpg   //将解压后的内容重定向一个文件,以保留原始压缩文件

  #bunzip2 image1.jpg.bz2

  #bunzip2 -k mage1.jpg.bz2  //解压并保留原始文件

2.1.5 tar命令实例:打包和解包文件

  tar命令用于归档文件。

  # tar -czvf home_auv.tar /home/auv

    -c:创建一个新的归档

    -v:列出被处理的文件

    -f:指定归档文件名称

    -z:gzip压缩

    -j:bizp2压缩

  # tar -xzvf home_auv.tar.gz

    -x:从tar包中提取指定的文件和目录

  # tar -tvf home_auv.tar.gz

    -t:不解压列出tar包内容

  # tar -rvf home_auv.tar /home/auv/newfile

    -r:添加文件或目录到tar包中,注意:不可以添加到压缩过的tar包中

  # tar -cWvf home_auv.tar /home/auv

    -W:核实tar包中的内容,注意:不可以核实压缩过的tar包


2.2 监控和管理磁盘

2.2.1 mount、umount命令实例:挂载和卸载存储介质

  mount命令可以挂载不同分区上的文件系统,或可移动设备(DVD、U盘等),或NFS(网络文件系统)共享目录到目录树种的某个节点上。之后可以通过umount卸载。

  $ mount   //输出已挂载信息

  $ mount -t ext3  //只显示当前挂载类型为ext3的文件系统

  $ mount -t iso9660 -o ro /dev/cdrom /mnt  //-o ro 指CD-ROM 设备以只读访问的模式被挂载

  $ mount -t iso9660 -o loop RHEL6.iso /mnt  //挂载iso文件到/mnt目录

  $ mount /dev/sda2 /mydata   //挂载一个磁盘分区到/mydata目录

  $ mount -t nfs hostname:/local /mnt/local  //挂载远程NFS共享目录到/mnt/local目录

  mount命令默认挂载/etc/fstab中列表中的设备,该文件包含了系统中应该被挂载的设备名、目标目录、以及文件系统类型和挂载选项列表。

  $ mount -t ext3 /grubfile //挂载目录/grubfile

  $ mount -t ext3 UUID="234567894567895678-5566-7777-56786787897878"  //挂载目录

  $ mount -t nfs -o remount,ro nasstore:/vol/volume_share/share   //重新以只读方式挂载NAS存储设备上的目录

  $ mount -a 挂载配置文件/etc/fstab中的条目

  $ umount /opt/share  //卸载挂载点目录,注意可以用lsof或fuser命令查看挂载文件系统被那些进程占用。

2.2.2 df命令实例:报告文件系统磁盘空间利用率

  df命令用于显示文件系统的可用的磁盘空间的数量。

  $df    //默认以1K为大小单位,显示设备名、总块数、已用、可用的磁盘空间以及挂载点

  $df -a   //显示所有信息,包括虚拟文件系统

  $df -h  //合理的单位显示信息

  $df -T    //显示文件系统类型

  $df -t ext3 //过滤显示ext3类型文件系统

  $df -x ext3 //显示其余文件系统

  $df -m  //以MB显示

2.2.3 du命令实例:评估文件空间利用率

  $du   //显示当前目录的所有目录的大小

  $du /home/auv //指定某文件或目录的大小

  $du -a  //显示各个目录的大小

  $du -h  //人类可读显示

  $du -sh  //显示某个目录总大小

  $du -ah --exclude="*.jpg"  //排除显示

  $du -h --time   //同时显示各个目录的修改时间


2.3 后台执行命令

2.3.1 cron、crontab命令实例:执行计划任务

  cron是执行定时计划任务的守护进程。多用户运行级别下,cron进程会从/etc/init.d中自动启动,会在目录/var/spool/cron/crontabs/下搜素定时计划任务文件,并将找到的定时计划任务载入内存。

  • cron还会读取/etc/crontab以及目录/etc/cron.d下的内容。
  • cron进程每分钟唤醒一次,审查所有存储的定时计划任务,检查每个命令,看它是否应该在当前时间允许。
  • cron进程每分钟检查一次它的池目录/var/spool/cront/crontabs的修改时间(modtime)是否改变,如果改变,则重新加载已修改的定是计划任务文件。因此修改定时计划任务文件后,无需重启cron守护进程

  # 30 6 * * 0 /home/auv/backup.sh 

  代表 每周日6点30分执行,5个字段分别代表 分、小时、日期、月份、星期  

  * 匹配所有,- 连字符定义一个范围,/ 表示每间隔多少时间,, 代表或

  # crontab -l  //列出

  # crontab -e   //创建或修改

  # crontab -u auv -l   //查看指定用户 

  # crontab -r  //移除当前用户定时计划任务

  # crontab -i -r //需要确认的移除

2.3.2 at命令实例:在指定时间执行命令

  at命令用于安排一个任务在指定时间允许。由于其命令允许复杂的时间格式,请自行man。 

  #at -l //列出

  #at -f myjobs.txt now + 1hour  //一个小时候运行文件myjobs.txt的内容

  #atrm 1 2 //删除序号 1 2的任务

2.3.3 &控制操作符实例:将任务放到后台运行

  # command &  //后台执行命令

  # jobs     //查看后台运行列表

  # %JOB-ID 或 fg JOB-ID //将ID为JOB-ID的任务调到前台

  # bg     //将任务调到后台

4.3.4 nohup 命令实例:运行一个对挂起免疫的命令

  # nohup COMMAND &  //后台运行一个对挂起免疫的命令,防止系统退出被终止


2018-06-11 20:37:48 西安 雷小贱

猜你喜欢

转载自www.cnblogs.com/QQ827882747/p/9167730.html