2 Shell命令进阶
2.1 文件处理和归档
2.1.1 paster 命令实例:合并文件
$ pastefile1 file2
以各文件各行制表符Tab作为分隔符进行合并输出
$ paste-d '|' file1 file2// -d制定所使用的分隔符
$ paste -sfile1 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= 指定输入文件路径,默认标准输入,of= 指定输出文件路径,默认标准输出
# 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= 指定输入和输出的块大小,默认字节, count= 从输入读取的块数量
# 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压缩
-x:从tar包中提取指定的文件和目录
-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 西安 雷小贱
领取专属 10元无门槛券
私享最新 技术干货