服务器上有一个任务进程,当我们使用ps -ef | grep task查看时,只能得到一些最基本的信息,假如我们需要知道对应的文件路径、启动命令的完整路径,就无从下手了。
今天教大家一个方法来查看进程的所有信息,包括启动命令的完整路径、对应的文件完整路径等等信息:ls -l /proc/PID
例如使用ps -ef | grep webhook查看进程时,只能得到如下信息
> ps -ef | grep webhook root 15902 1 0 Aug15 "htmlcode">> ll /proc/15902 dr-xr-xr-x 2 root root 0 Sep 18 22:52 attr -rw-r--r-- 1 root root 0 Sep 18 22:52 autogroup -r-------- 1 root root 0 Sep 18 22:52 auxv -r--r--r-- 1 root root 0 Sep 18 22:52 cgroup --w------- 1 root root 0 Sep 18 22:52 clear_refs -r--r--r-- 1 root root 0 Aug 15 16:48 cmdline -rw-r--r-- 1 root root 0 Sep 18 22:52 comm -rw-r--r-- 1 root root 0 Sep 18 22:52 coredump_filter -r--r--r-- 1 root root 0 Sep 18 22:52 cpuset lrwxrwxrwx 1 root root 0 Aug 15 16:48 cwd -> /services/apps/webhook -r-------- 1 root root 0 Sep 18 22:52 environ lrwxrwxrwx 1 root root 0 Aug 15 16:48 exe -> /usr/bin/python2.7 dr-x------ 2 root root 0 Aug 15 16:48 fd dr-x------ 2 root root 0 Sep 18 22:52 fdinfo -rw-r--r-- 1 root root 0 Sep 18 22:52 gid_map -r-------- 1 root root 0 Sep 18 22:52 io -r--r--r-- 1 root root 0 Sep 18 22:52 limits ...有几个主要的文件我们可以关注下:
- cwd:文件所在目录
- exe:执行命令的完整路径
- environ:执行命令时的环境变量
补充:
#lsof 列出当前系统打开文件,常与-i选项使用,用于查看某个端口被哪个程序占用 [root@bogon ~]# lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 6701 root 4u IPv6 64259 0t0 TCP *:http (LISTEN) httpd 6702 apache 4u IPv6 64259 0t0 TCP *:http (LISTEN) httpd 6703 apache 4u IPv6 64259 0t0 TCP *:http (LISTEN) httpd 6704 apache 4u IPv6 64259 0t0 TCP *:http (LISTEN) httpd 6705 apache 4u IPv6 64259 0t0 TCP *:http (LISTEN) httpd 6706 apache 4u IPv6 64259 0t0 TCP *:http (LISTEN) [root@bogon ~]# lsof -i:22 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 931 root 3u IPv4 20955 0t0 TCP *:ssh (LISTEN) sshd 931 root 4u IPv6 20965 0t0 TCP *:ssh (LISTEN) sshd 3926 root 3u IPv4 36374 0t0 TCP bogon:ssh->bogon:53436 (ESTABLISHED) [root@bogon ~]# #获取终端上所有用户的有关进程的所有信息 [root@bogon ~]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.4 128092 4724 "linux">/dev/null done [root@bogon ~]# ./a.sh ^Z [1]+ Stopped ./a.sh [root@bogon ~]# ps PID TTY TIME CMD 3930 pts/1 00:00:00 bash 11719 pts/1 00:00:01 a.sh 11729 pts/1 00:00:00 ps [root@bogon ~]# kill 11719 #偶然间发现这个问题,原因暂时不明 [root@bogon ~]# ps PID TTY TIME CMD 3930 pts/1 00:00:00 bash 11719 pts/1 00:00:01 a.sh 11733 pts/1 00:00:00 ps [root@bogon ~]# kill -9 11719 #既然普通kill无法杀死,那么就发送-9信号直接强制杀死,问题解决 [root@bogon ~]# ps PID TTY TIME CMD 3930 pts/1 00:00:00 bash 11734 pts/1 00:00:00 ps [1]+ Killed ./a.sh [root@bogon ~]# ./a.sh & [1] 11735 [root@bogon ~]# ps PID TTY TIME CMD 3930 pts/1 00:00:00 bash 11735 pts/1 00:00:01 a.sh 11736 pts/1 00:00:00 ps [root@bogon ~]# kill 11735 #普通后台运行程序可以直接kill [root@bogon ~]# ps PID TTY TIME CMD 3930 pts/1 00:00:00 bash 11737 pts/1 00:00:00 ps [1]+ Terminated ./a.sh [root@bogon ~]#
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。