进程管理的简单命令 pidof lsof

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程管理的简单命令 pidof lsof相关的知识,希望对你有一定的参考价值。

pidof 的使用

pidof()是一个常用函数,也可以当做指令来使用。

-rw-r--r--. 1 root root 1779 Apr 17 23:37 zombile.c

[[email protected] program]# ./zombile

child_process start with pid: 44846

在c++里可以使用Pidof来获得当前的进程号码。

 printf("process start with pid: %d\n", getpid());


也可以使用

[[email protected] ~]# pidof zombile

44846 44845


对于shell脚本来说,要加参数-x

[[email protected] ~]# pidof test.sh

[[email protected] ~]# pidof -x test.sh

49685



lsof   list open files 用来查看进程打开的文件


Linux系统中,系统为了方便管理进程,会在/proc下为每一个运行中的进程创建一个目录,目录名就是进程号,而在进程的目录下有一个叫做fd的目录,这个目录下存放的是进程打开的所有文件。而lsof命令搜寻的其实就是/proc/$PID/fd下面的文件


lsof的集中常见应用

1.找到打开某文件的进程。lsof后边直接加文件的名字

[[email protected] log]# lsof /var/log/messages

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME

rsyslogd 1893 root    1w   REG    8,2   236408 392031 /var/log/messages


2.通过文件描述符定位进程和文件。

由于特殊的文件描述符有特殊的含义,比如0.1.2.可以查看所有用了这些文件描述符的进程。

以2为例子

[[email protected] log]# lsof -d 2|head

COMMAND    PID      USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME

init         1      root    2u   CHR    1,3      0t0   4601 /dev/null

udevd      504      root    2u   CHR    1,3      0t0   4601 /dev/null


能够查到所有使用了2文件描述符的进程

3.通过进程定位文件


[[email protected] log]# ps -ef |grep rsy

root       1893      1  0 12:39 ?        00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5   查到进程号PID是1893

[[email protected] log]# lsof -p 1893

COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF       NODE NAME

rsyslogd 1893 root  cwd    DIR                8,2     4096          2 /

rsyslogd 1893 root  rtd    DIR                8,2     4096          2 /

rsyslogd 1893 root  txt    REG                8,2   391360     141929 /sbin/rsyslogd

rsyslogd 1893 root  mem    REG                8,2    27232     782197 /lib64/rsyslog/imklog.so

rsyslogd 1893 root  mem    REG                8,2   339960     782203 /lib64/rsyslog/imuxsock.so

即查到1893进程打开的所有文件。

4.查某一用户打开的文件

[[email protected] log]# lsof -u root |head

COMMAND    PID USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME

init         1 root  txt       REG                8,2   150352     130392 /sbin/init

init         1 root  mem       REG                8,2    65960     781859 /lib64/libnss_files-2.12.so


5.查占用某一端口的进程

[[email protected] log]# lsof -i:48323

COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

local   3158 postfix   14u  IPv4  26489      0t0  UDP *:48323 


以上是关于进程管理的简单命令 pidof lsof的主要内容,如果未能解决你的问题,请参考以下文章

几个进程管理的命令:pkill,pidof,kill,killall,job

Linux进程管理 lsof命令:列出进程调用或打开的文件信息

一个很好用的系统管理的命令lsof(转载)

Linux基础21 进程介绍, 进程监控状态ps, 进程相关命令pstree,pgrep,pidof, 动态进程监控top, 进程中断概念, kill停止进程信号介绍pkill, killall

linux进程管理——进程管理相关命令

进程管理,及性能监控 ps, pstree, pidof, top, htop, pmap, vmstat, dstat