linux time,dd,screen

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/liuhaoy/article/details/102732492

linux time,dd,screen

一、dd命令

  1. dd命令介绍
    dd 命令:convert and copy a file
    dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=# count=#
    eg: dd if=/dev/zero of=/root/bigfile bs=1M count=1024
    创建一个1G的文件从zero零读取

  2. 设备介绍
    /dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件。
    /dev/null 是个黑洞设备,它丢弃一切写入其中数据,空设备通常被用于丢弃不需要的输出流。
    /dev/urandom 生成随机数

  3. 常选参数介绍:
    if=file 从所命名文件读取而不是从标准输入
    of=file 写到所命名的文件而不是到标准输出
    bs=size block size, 指定块大小(既是是ibs也是obs) 单位可以是 K,M,G等
    skip=blocks 从开头忽略blocks个ibs大小的块
    seek=blocks 从开头忽略blocks个obs大小的块
    count=n 复制n个bs

  4. 不常用参数介绍:
    ibs=size 一次读size个byte
    obs=size 一次写size个byte
    cbs=size 一次转化size个byte

  5. 工具介绍
    conv=conversion[,conversion…] 用指定的参数转换文件
    转换参数:
    ascii 转换 EBCDIC 为 ASCII
    ebcdic 转换 ASCII 为 EBCDIC
    lcase 把大写字符转换为小写字符
    ucase 把小写字符转换为大写字符
    nocreat 不创建输出文件
    noerror 出错时不停止
    notrunc 不截短输出文件
    sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐
    fdatasync 写完成前,物理写入输出文件
    eg:转换小写

[root@localhost ~]#echo abc> xx.txt
[root@localhost ~]#cat xx.txt 
abc
[root@localhost ~]#dd if=xx.txt of=dx.txt conv=ucase
0+1 records in
0+1 records out
4 bytes (4 B) copied, 0.000152203 s, 26.3 kB/s
[root@localhost ~]#cat dx.txt 
ABC
[root@localhost ~]#
  1. 备份MBR
    因为mbr分区 是前面的512个字节,我们把前512字节 给复制下来,放到别的硬盘,以后分区故障,再放回去。
    dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

  2. 破坏MBR中的bootloader
    因为mbr分区是前512字节,最后有个55 aa代表结束,我们把最后的几位变成0 没有结束为,系统就不会识别分区了。 seek 跳过目标设备的前446个字节
    dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

  3. 备份分区表以及恢复分区表
    备份:
    dd if=/dev/sdx of=/dev/sdy
    将本地的/dev/sdx整盘备份到/dev/sdy
    dd if=/dev/sdx of=/path/to/image
    将/dev/sdx全盘数据备份到指定路径的image文件
    dd if=/dev/sdx | gzip >/path/to/image.gz
    备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径
    恢复:
    dd if=/path/to/image of=/dev/sdx
    将备份文件恢复到指定盘
    gzip -dc /path/to/image.gz | dd of=/dev/sdx
    将压缩的备份文件恢复到指定盘

  4. 拷贝内存资料到硬盘
    dd if=/dev/mem of=/root/mem.bin bs=1024
    将内存里的数据拷贝到root目录下的mem.bin文件

  5. 从光盘拷贝iso镜像
    dd if=/dev/cdrom of=/root/cdrom.iso
    拷贝光盘数据到root文件夹下,并保存为cdrom.iso文件

  6. 销毁磁盘数据
    dd if=/dev/urandom of=/dev/sda1
    利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据,执行此操作
    以后,/dev/sda1将无法挂载,创建和拷贝操作无法执行

二、time 查看执行命令所用时间

  1. time判断dd
[root@localhost ~]#time dd if=/dev/zero of=bigfile bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.70552 s, 149 MB/s

real	0m0.709s
user	0m0.000s
sys	0m0.618s
[root@localhost ~]#
  1. time 判断cp
[root@localhost ~]#time cp bigfile bigfile2

real	0m0.714s
user	0m0.002s
sys	0m0.640s
[root@localhost ~]#
 

三、screen 独立运行程序

在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。不会因为ssh的中断而停止运行当前的程序,也可以大家同屏操作。
screen命令:
创建新screen会话
screen –S [SESSION]
加入screen会话
screen –x [SESSION]
退出并关闭screen会话
exit
剥离当前screen会话
Ctrl+a,d
显示所有已经打开的screen会话
screen -ls
恢复某screen会话
screen -r [SESSION]

  1. 同屏操作
    场景:两个用户都远程上192.168.1.1的服务器,然后一个用户开启screen,另一个用户加入,这样的话就能实现同屏操作,用户1可以看到用户2的操作
    用户1创建
    [root@localhost ~]#screen -S help
    用户2加入
    [root@localhost ~]#screen -x help
    使用 ctrl a + d 退出终端(注意不可exit退出,否则两个人都将退出这个终端)
  2. 开启独立进程运行耗费时间的操作,防止ssh中断而任务停止
打开screen,后面可以跟名称
[root@localhost ~]#screen

执行ping操作
[root@localhost ~]#ping 127.0.0.1

剥离这个screen
ctrl a + d 

查看进程发现 scree 是独立运行的,没有基于ssh,所以ssh断开也不受影响
[root@localhost ~]#pstree -p
           ├─screen(6897)───bash(6898)───ping(6931)
           ├─smartd(719)
           ├─sshd(1088)───sshd(1810)───bash(1816)───pstree(6983)

查看当前运行的screen
[root@localhost ~]#screen -ls
There is a screen on:
	6897.pts-1.localhost	(Detached)
1 Socket in /var/run/screen/S-root.

恢复screen 后面可以跟名称
[root@localhost ~]#screen -r

猜你喜欢

转载自blog.csdn.net/liuhaoy/article/details/102732492