当我ps -auxwe
在 Debian Jessie 上执行时,列出了以下命令:
...
myuser 21906 0.1 0.3 106324 63640 ? Ss 03:17 0:00 proc
...
我找不到有关此“proc”进程的任何其他信息(命令路径)。它的PID似乎每隔几分钟就会改变一次。
当我执行时,ls -l /proc/21906
我有以下信息:
dr-xr-x--- 7 myuser myuser 4.0K Jan 5 03:21 .
drwxrwxrwt 14 root root 24K Jan 5 03:23 ..
-r-------- 1 myuser myuser 304 Jan 5 03:21 auxv
-r--r--r-- 1 myuser myuser 138 Jan 5 03:21 cgroup
-r--r--r-- 1 myuser myuser 4 Jan 5 03:21 cmdline
-rw-r--r-- 1 myuser myuser 5 Jan 5 03:21 comm
-rw-r--r-- 1 myuser myuser 9 Jan 5 03:21 coredump_filter
-r--r--r-- 1 myuser myuser 2 Jan 5 03:21 cpuset
lrwxrwxrwx 1 myuser myuser 1 Jan 5 03:21 cwd -> /
-r-------- 1 myuser myuser 243 Jan 5 03:21 environ
lrwxrwxrwx 1 myuser myuser 13 Jan 5 03:21 exe -> /usr/bin/perl
dr-x------ 2 myuser myuser 4.0K Jan 5 03:21 fd
dr-x------ 2 myuser myuser 4.0K Jan 5 03:21 fdinfo
-rw-r--r-- 1 myuser myuser 33 Jan 5 03:21 gid_map
-r-------- 1 myuser myuser 90 Jan 5 03:21 io
-r-------- 1 myuser myuser 8 Jan 5 03:21 ipaddr
-r--r--r-- 1 myuser myuser 1.3K Jan 5 03:21 limits
-r--r--r-- 1 myuser myuser 49K Jan 5 03:21 maps
-r--r--r-- 1 myuser myuser 2.3K Jan 5 03:21 mountinfo
-r--r--r-- 1 myuser myuser 1.8K Jan 5 03:21 mounts
-r-------- 1 myuser myuser 1.6K Jan 5 03:21 mountstats
dr-xr-xr-x 13 myuser myuser 4.0K Jan 5 03:21 net
dr-x--x--x 2 myuser myuser 4.0K Jan 5 03:21 ns
-r--r--r-- 1 myuser myuser 33K Jan 5 03:21 numa_maps
-rw-r--r-- 1 myuser myuser 2 Jan 5 03:21 oom_adj
-r--r--r-- 1 myuser myuser 2 Jan 5 03:21 oom_score
-rw-r--r-- 1 myuser myuser 2 Jan 5 03:21 oom_score_adj
-r--r--r-- 1 myuser myuser 9 Jan 5 03:21 personality
-rw-r--r-- 1 myuser myuser 33 Jan 5 03:21 projid_map
lrwxrwxrwx 1 myuser myuser 1 Jan 5 03:21 root -> /
-rw-r--r-- 1 myuser myuser 6 Jan 5 03:21 setgroups
-r--r--r-- 1 myuser myuser 284 Jan 5 03:21 stat
-r--r--r-- 1 myuser myuser 28 Jan 5 03:21 statm
-r--r--r-- 1 myuser myuser 823 Jan 5 03:21 status
-r--r--r-- 1 myuser myuser 69 Jan 5 03:21 syscall
dr-xr-xr-x 3 myuser myuser 4.0K Jan 5 03:21 task
-rw-r--r-- 1 myuser myuser 33 Jan 5 03:21 uid_map
我怎样才能知道这个过程做了什么?
更新:
执行以下命令cat /proc/21906/status
将返回:
Name: proc
State: S (sleeping)
Tgid: 21906
Ngid: 0
Pid: 21906
PPid: 1
TracerPid: 0
Uid: 1001 1001 1001 1001
Gid: 1002 1002 1002 1002
FDSize: 512
Groups: 1001 1002
VmPeak: 106456 kB
VmSize: 106456 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 68500 kB
VmRSS: 68500 kB
VmData: 78776 kB
VmStk: 132 kB
VmExe: 8 kB
VmLib: 4880 kB
VmPTE: 220 kB
VmSwap: 10756 kB
Threads: 1
SigQ: 0/63078
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000001007eaf
SigCgt: 0000000180010000
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000001fffffffff
Seccomp: 0
Cpus_allowed: ff
Cpus_allowed_list: 0-7
Mems_allowed: 00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 5854
nonvoluntary_ctxt_switches: 8
PaX: pemRs
执行以下命令sudo ls -l /proc/21906/fd
将返回:
lr-x------ 1 myuser myuser 64 Jan 5 04:03 0 -> /dev/null
l-wx------ 1 myuser myuser 64 Jan 5 04:03 1 -> /dev/null
l-wx------ 1 myuser myuser 64 Jan 5 04:03 2 -> /dev/null
lr-x------ 1 myuser myuser 64 Jan 5 04:03 258 -> pipe:[22064822]
lrwx------ 1 myuser myuser 64 Jan 5 04:03 260 -> socket:[15935884]
l-wx------ 1 myuser myuser 64 Jan 5 04:03 263 -> pipe:[22064823]
lrwx------ 1 myuser myuser 64 Jan 5 04:03 3 -> socket:[94609374]
lrwx------ 1 myuser myuser 64 Jan 5 04:03 5 -> socket:[22343274]
非常感谢@icarus,他花时间解决了这个问题。
答案1
@icarus 给我解决方案:
将临时的替换/usr/bin/perl
为以下脚本:
#!/bin/bash
exec 7>>/tmp/procstuff
date >&7
printf ">%s<\n" "$@" >&7
ls -lR /proc/$$ >&7
cat >&7
sleep 400
然后调查/tmp/procstuff
我们得知这是我的托管提供商的一个过程。
答案2
你可以试试下面这个吗
pgrep '^$' | while read pid; do
ps -f $pid
ls -l /proc/$pid/cmdline
netstat -tlp | grep '\<'$pid'\>'
echo kill $pid # remove the echo after testing
done
如果pgrep '^$'
没有列出任何内容,那么也许可以正常ps -o comm= -U myuser | od -c
理解进程名称是什么,因此您可以使用pgrep
它来仅查找具有该名称的进程
希望这有效。