网站建设整改实施方案,wordpress 图片 视频,温州建设企业网站,高校图书馆网站建设Linux基础命令-uptime查看系统负载 Linux基础命令-top实时显示系统状态 Linux基础命令-ps查看进程状态 文件目录
前言
一 命令的介绍
二 语法及参数
2.1 使用help查看命令的语法信息
2.2 常用参数
2.2.lsof命令-i参数的条件
三 命令显示内容的含义
3.1 FD 文件描述符的… Linux基础命令-uptime查看系统负载 Linux基础命令-top实时显示系统状态 Linux基础命令-ps查看进程状态 文件目录
前言
一 命令的介绍
二 语法及参数
2.1 使用help查看命令的语法信息
2.2 常用参数
2.2.lsof命令-i参数的条件
三 命令显示内容的含义
3.1 FD 文件描述符的类型
3.2 文件描述符后内容的含义
3.3 TYPE的文件类型
四 参考实例
3.1列出文件存在的进程
3.2 列出指定进程打开的文件
3.3 列出指定端口号进程
3.4 列出占用文件号的进程
3.5 列出指定进程号打开的文件
3.6 列出指定UID号的进程详情
3.7 列出目录下打开的文件
3.8 列出递归目录下打开的文件
3.9 显示帮助信息
3.10 使用lsof恢复被删除的文件
总结
前言 lsof命令是个比较常用到的系统监控命令不管是用来查看文件的进程或者是查看进程打开的文件都是能很好用的一个工具那么一起来学习一下。
一 命令的介绍 lsof命令来自于英文词组“list opened files”的缩写主要功能是用来查看文件的进程信息此命令能够能好的帮助用户了解相关服务的运行状态是个非常不错的系统监控工具。 小提示只有root用户可以使用这个命令或获取超级权限的普通用户才能使用。
二 语法及参数
2.1 使用help查看命令的语法信息
NAMElsof - list open filesSYNOPSISlsof [ -?abChlnNOPRtUvVX ] [ -A A ] [ -c c ] [ c c ] [ |-d d ] [ |-DD ] [ |-e s ] [ |-f [cfgGn] ] [ -F [f] ] [ -g [s] ] [ -i [i] ] [ -k k] [ -K k ] [ |-L [l] ] [ |-m m ] [ |-M ] [ -o [o] ] [ -p s ] [ |-r[t[mfmt]] ] [ -s [p:s] ] [ -S [t] ] [ -T [t] ] [ -u s ] [ |-w ] [ -x[fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [names]语法lsof 【参数】
2.2 常用参数
-a列出打开二进制文件存在的进程-c进程名列出指定进程所打开的文件-g列出GID号 进程的详情-d文件号列出占用该文件号FD的进程d目录列出目录下打开的文件D目录递归列出目录下打开的文件-n目录列出使用NFS的文件-i 条件列出符合条件的进程-p进程号列出指定进程号所打开的文件-u列出UID号进程详情-h显示帮助信息-v显示版本信息
2.2.lsof命令-i参数的条件
协议 例如 lsof -i tcp:端口 例如 lsof -i :22IP 例如lsof -i 192.168.2.166IPv4 例如 lsof -i 4IPv6 例如 lsof -i 6
三 命令显示内容的含义
lsof显示打开的文件及其其它内容解读 图上对应的内容以表格形式展现
状态栏含义COMMAND进程的名称PID进程的标识符号USER进程的所有者FD文件描述符TYPE文件类型DEVICE指定磁盘的名称SIZE/OFF文件的大小NODE文件的索引NAME打开文件的位置
3.1 FD 文件描述符的类型 cwd 表示应用程序当前的工作目录txt 表示它是一个可执行程序mem 指的是内存的映射文件0 表示标准输出1 表示标准输入2 标准错误Lnn 库引用err 监狱目录FreeBSDltx 共享库文本代码和数据Mxx 十六进制内存映射类型m86 DOS合并映射文件mmap 内存映射设备pd 父目录rtd 根目录tr 内核跟踪文件v86 VP/ix映射文件
3.2 文件描述符后内容的含义 r 表示打开文件为只读模式w 表示打开文件为写入模式u 表示打开文件是可读可写模式 - 表示当前状态被锁定空格表示当前状态未被锁定
3.3 TYPE的文件类型 DIR表示目录类型CHR表示字符类型BLK表示设备类型REG表示注册表文件
四 参考实例
3.1列出文件存在的进程
[rootlocalhost ~]# lsof -a /usr/bin/vim
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vim 10065 root txt REG 253,0 2337208 102492147 /usr/bin/vim
vim 11403 host txt REG 253,0 2337208 102492147 /usr/bin/vim3.2 列出指定进程打开的文件
[rootlocalhost ~]# lsof -c systemd | head
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 224 64 /
systemd 1 root rtd DIR 253,0 224 64 /
systemd 1 root txt REG 253,0 1632960 2630 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20064 78153 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 253,0 265576 222563 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 253,0 90248 1780 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 253,0 157424 1788 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem REG 253,0 23968 78215 /usr/lib64/libcap-ng.so.0.0.0
systemd 1 root mem REG 253,0 19896 78205 /usr/lib64/libattr.so.1.1.03.3 列出指定端口号进程
可以先用netstat查看服务再用这个查看端口号进程。
[rootVM-12-17-centos ~]# netstat -antup |grep mysql
tcp6 0 0 :::3306 :::* LISTEN 3609/mysqld
[rootVM-12-17-centos ~]# lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 3609 mysql 29u IPv6 62681253 0t0 TCP *:mysql (LISTEN)3.4 列出占用文件号的进程
由于显示的内容实在太多加上wc -l显示一共有多少行
[rootlocalhost ~]# lsof -d mem |wc -l
73883.5 列出指定进程号打开的文件
若要查看进程号打开的文件信息可以先用ps搜索指定的指令信息复制进程号后到这里使用-p参数查看进程号存在的文件。
[rootlocalhost ~]# ps aux | grep vim
root 10065 0.0 0.1 149752 5448 pts/2 S 19:19 0:00 vim a.sh
host 11403 0.0 0.1 149568 5204 pts/3 S 20:05 0:00 vim 1.txt
root 11642 0.0 0.0 112824 968 pts/1 R 20:15 0:00 grep --colorauto vim
[rootlocalhost ~]# lsof -p 10065
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vim 10065 root cwd DIR 253,0 4096 67144897 /root
vim 10065 root rtd DIR 253,0 224 64 /
vim 10065 root txt REG 253,0 2337208 102492147 /usr/bin/vim3.6 列出指定UID号的进程详情
lsof -u参数后接UID号和用户名都是显示一样的内容。
[rootlocalhost ~]# lsof -u 1000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 11312 host cwd DIR 253,0 145 101340405 /home/host
bash 11312 host rtd DIR 253,0 224 64 /
bash 11312 host txt REG 253,0 964536 100664820 /usr/bin/bash[rootlocalhost ~]# lsof -u host
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 11312 host cwd DIR 253,0 145 101340405 /home/host
bash 11312 host rtd DIR 253,0 224 64 /3.7 列出目录下打开的文件
[rootlocalhost ~]# lsof d /home/host
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 11312 host cwd DIR 253,0 145 101340405 /home/host
vim 11403 host cwd DIR 253,0 145 101340405 /home/host
vim 11403 host 3u REG 253,0 12288 101364386 /home/host/.1.txt.swp3.8 列出递归目录下打开的文件
[rootlocalhost ~]# lsof D /root
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
gnome-ses 1945 root cwd DIR 253,0 4096 67144897 /root
dbus-laun 1954 root cwd DIR 253,0 4096 67144897 /root
dbus-daem 1955 root cwd DIR 253,0 4096 67144897 /root
imsetting 1984 root cwd DIR 253,0 4096 67144897 /root3.9 显示帮助信息
[rootlocalhost ~]# lsof -h
lsof 4.87latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQlatest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_manusage: [-?abhKlnNoOPRtUvVX] [|-c c] [|-d s] [D D] [|-f[gG]] [|-e s][-F [f]] [-g [s]] [-i [i]] [|-L [l]] [m [m]] [|-M] [-o [o]] [-p s]
[|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [|-w] [-x [fl]] [-Z [Z]] [--] [names]3.10 使用lsof恢复被删除的文件
此命令的恢复原理是当打开一个文件这个文件就一直是打开状态的并且有存在于磁盘、内存当中的直接删除文件但进程是还在持续运行中的在这个过程中可以尝试使用文件描述符做文件的恢复。
思路步骤
1创建一个文件2在另外一个窗口打开文件保持一直运行的状态3删除这个运行的文件4使用lsof进行恢复
#测试环境centos7.6
[rootlocalhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) [rootlocalhost ~]# mkdir test #创建文件
[rootlocalhost ~]# cd test
[rootlocalhost test]# cp /etc/passwd ./#在另外一个窗口打开文件
[rootlocalhost test]# vim passwd
#原窗口继续 删除文件
[rootlocalhost test]# rm -f passwd
[rootlocalhost test]# lsof | grep passwd #看到文件描述符为10r的信息
cupsd 6758 root 10r REG 253,0 2576 17470125 /etc/passwd
vim 13101 root 4u REG 253,0 12288 51866124 /root/test/.passwd.swp#在proc目录下查找PID 6758并且文件描述符为10的文件
[rootlocalhost test]# head -5 /proc/6758/fd/10
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin#将文件导入一个新文件
[rootlocalhost test]# cat !$ passwd.txt
cat /proc/6758/fd/10 passwd.txt
[rootlocalhost test]# wc -l passwd.txt #显示行数
51
[rootlocalhost test]# md5sum /etc/passwd passwd.txt #inode与源文件一致恢复成功
b1a03b88bac575860f616d09756f78d0 /etc/passwd
b1a03b88bac575860f616d09756f78d0 passwd.txt 在文件的进程还存在的情况下文件恢复需要知道文件名或相关信息才有很大的把握可以进行恢复。
总结 这个命令要记的参数是挺多的用来监控进程打开的文件信息亦可通过这个命令来了解相关服务的运行状态等若觉得以上内容还不错的可以点赞支持一下