34.转换或者拷贝文件dd;列出当前系统打开文件的工具lsof

1.        转换或者拷贝文件dd

dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2

1.1参数注释:

(1)if=文件名:输入文件名,缺省为标准输入。即指定源文件。

(2)of=文件名:输出文件名,缺省为标准输出。即指定目的文件。

(3)ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。

        obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。

        bs=bytes:同时设置读入/输出的块大小为bytes个字节。

(4)cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。

(5)skip=blocks:从输入文件开头跳过blocks个块后再开始复制。

(6)seek=blocks:从输出文件开头跳过blocks个块后再开始复制。

注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。

(7)count=blocks:从输出文件开头跳过blocks个块后再开始复制。

1.2实际案例:

(1)将本地的/dev/hdb整盘备份到/dev/hdd

dd if=/dev/hdb of=/dev/hdd

(2)将/dev/hdb全盘数据备份到指定路径的image文件

dd if=/dev/hdb of=/root/image

(3)将备份文件恢复到指定盘

dd if=/root/image of=/dev/hdb

(4)备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径

dd if=/dev/hdb | gzip > /root/image.gz

(5)将压缩的备份文件恢复到指定盘

gzip -dc /root/image.gz | dd of /dev/hdb

(6)备份磁盘开始的512个字节大小的MBR信息到指定文件:

dd if=/dev/hdb of=/root/image count=1 bs=512    
#count=1指仅拷贝一个块,bs=512指块大小为512个字节

(7)备份软盘

dd if=/dev/fd0 of=disk.img count=1 bs=1440k
#bs=1440k即块大小为1.44Mb

(8)拷贝内存内容到硬盘

dd if=/dev/mem of=/root/mem.bin bs=1024
#bs=1024即指定块大小为1k

2.        lsof是一个列出当前系统打开文件的工具

(1)lsof输出信息含义:

在终端下输入lsof即可显示系统打开的文件,因为lsof需要访问核心内存和各种文件,所以必须用root用户的身份运行它才能够充分发挥其功能。

 每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。lsof输出各列信息的意义如下:

COMMAND:进程的名称

PID:进程标识符

USER:进程所有者

PD:文件描述符,应用程序通过文件描述符识别该文件。如cwd,txt等,详解:

        1)cwd:表示current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改

        2)txt:该类型的文件是程序代码,比如应用程序二进制文件本身或共享库。

        3)lnn:

TYPE:文件类型,比如DIR,REG等等

        1)DIR:表示目录

        2)CHR:表示字符类型

        3)BLK:块设备类型

        4)UNIX:UNIX域套接字

        5)FIFO:先进先出(FIFO)队列

        6)IPV4:网际协议(IP)套接字

DEVICE:指定磁盘的名称

SIZE:文件的大小

NODE:索引节点(文件在磁盘上的标识)

NAME:打开文件的确切名称

(2)语法格式:lsof [options] filename

lsof  a.txt         #显示开启文件a.txt的进程

lsof  -c  abc        #显示出以字母abc开头进程现在打开的文件

lsof  -p  123        #列出进程号为123的进程所打开的文件

lsof  -g  gname/gid        #显示归属gname或gid的进程情况

lsof  -u  uname/uid        #显示归属uname或uid的进程情况

lsof  +d  /usr/local/        #显示目录下被进程开启的文件

lsof  +D  /usr/local/        #同上,但是会搜索目录下的子目录,时间较长

lsof  -d  4        #显示使用fd为4的进程

lsof  -i          #用以显示符合条件的进程情况

(3)实际案例:

(1)列出所有打开的文件:

lsof

备注:如果不加任何参数,就会打开所有被打开的文件,建议加上一条参数来具体定位。

(2)查看谁在使用某个文件:

lsof /filepath/file

(3)递归查看某个目录的文件信息:

lsof +D /filepath/filepath2/

备注:使用了+D,对应目录下的所有子目录和文件都会被列出。

(4)比使用+D选项,遍历查看某个目录的所有文件信息的方法:

lsof | grep '/filepath/filepath2/'

(5)列出某个用户打开的文件信息

lsof -u username

(6)列出某个进程所打开的文件信息

lsof -c mysql

备注:-c选项将会列出所有以mysql开头的程序的文件;也可写成lsof  |  grep  mysql

(7)列出多个程序都打开的文件信息

lsof -c mysql -c apache

(8)列出某个用户以及某个程序所打开的文件信息

lsof -u test -c mysql

(9)列出除了某个用户外的被打开的文件信息

lsof -u ^root

备注:^这个符号在用户名之前,将会把是root用户打开的进程不让显示

(10)通过某个进程号显示该进程打开的文件信息

lsof -p 1

(11)列出多个进程号对应的文件信息

lsof -p 123,456,789

(12)列出除了某个进程号,其他进程号所打开的文件信息

lsof -o ^1

(13)列出所有的网络连接

lsof -i

(14)列出所有tcp网络连接信息

lsof -i tcp

(15)列出所有udp网络连接信息

lsof -i udp

(16)列出谁在使用某个端口

lsof -i :3306

(17)列出谁在使用某个特定的udp端口

lsof -i udp:55

特定的tcp端口

lsof -i tcp:80

(18)列出某个用户的所有活跃的网络端口

lsof -a -u test -i

(19)列出所有网络文件系统

lsof -N

(20)域名socket文件

lsof -u

(21)某个用户组所打开的文件信息

lsof -g 5555

(22)根据文件描述列出对应的文件信息

lsof -d FD(like 2)
lsof -d 2

(23)根据文件描述范围列出文件信息

lsof -d 2-3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值