Answers:
在大多数情况下,只需运行ps
就足够了,并且您喜欢的标志还可以使输出广泛。我倾向于ps -feww
,但是这里的其他建议会起作用。请注意,如果某个程序是从某人的之外启动的$PATH
,则只会看到可执行文件的名称,而不是完整路径。例如,尝试以下操作:
$ lftp &
$ ps -feww | grep ftp
lars 9600 9504 0 11:30 pts/10 00:00:00 lftp
lars 9620 9504 0 11:31 pts/10 00:00:00 grep ftp
重要的是要注意,可见的信息ps
可能会被正在运行的程序完全覆盖。例如,此代码:
int main (int argc, char **argv) {
memset(argv[0], ' ', strlen(argv[0]));
strcpy(argv[0], "foobar");
sleep(30);
return(0);
}
如果将其编译到名为“ myprogram”的文件中并运行它:
$ gcc -o myprogram myprogram.c
$ ./myprogram &
[1] 10201
然后运行ps
,我将看到一个不同的进程名称:
$ ps -f -p 10201
UID PID PPID C STIME TTY TIME CMD
lars 10201 9734 0 11:37 pts/10 00:00:00 foobar
您也可以直接查看/proc/<pid>/exe
,它可能是指向相应可执行文件的符号链接。在上面的示例中,这为您提供了比ps
以下更多有用的信息:
$ls -l /proc/9600/exe
lrwxrwxrwx. 1 lars lars 0 Feb 8 11:31 /proc/9600/exe -> /usr/bin/lftp
最可靠的方法是查看/proc
该进程的目录。每个进程都有一个/proc/<pid>/
目录,用于存放以下信息:
cwd
链接到当前工作目录fd
包含打开文件链接的目录(文件描述符)cmdline
阅读它以查看用于启动该过程的命令行environ
该过程的环境变量 root
指向该进程认为其根目录的链接(除非是chroot,否则为/)每个进程/ proc上都有更多很酷的信息,但是有了上面的信息,您将可以准确知道正在发生什么。
另外,使用ps auxf
还会显示谁分叉了什么,因此您可能会更好地了解谁在调用perl。
/proc
包含过程信息!谁知道??我曾经看着那里是version
和cpuinfo
和东西...加上这解决了我的实际问题,因为我的路由器的PS版本忽略所有参数
chroot()
之前调用过该进程,我怎么知道哪个目录/proc/ᴘɪᴅ/cwd
对应?
对我而言,刚才我发现,pstree
它比起流程如何启动更清楚地表明ps aux
它看起来像这样:
├─lightdm─┬─Xorg
│ ├─lightdm─┬─init─┬─apache2───2*[apache2───26*[{apache2}]]
│ │ │ ├─at-spi-bus-laun─┬─dbus-daemon
│ │ │ │ └─3*[{at-spi-bus-laun}]
│ │ │ ├─at-spi2-registr───{at-spi2-registr}
│ │ │ ├─dbus-daemon
│ │ │ ├─dropbox───29*[{dropbox} ]
如果要查询手册页中的确切标志,这是一种简便的方法,可用于筹集命令行和开始时间,ps auxwww应该可以工作。如果需要,可以阅读手册页来使其更加优雅。
我想到两个命令:
1)从“ ps ”中获取进程的开始时间。
$ ps -ax -o pid,start,comm
PID STARTED COMMAND USER
1 Feb 06 init root
2 Feb 06 kthreadd root
[...]
13147 19:09:48 chrome hcooper
13270 19:13:51 chrome hcooper
13386 19:18:34 bash hcooper
2)lastcomm,现在我检查一下,我还没有安装。无论如何,手册页说明都说:
lastcomm prints out information about previously executed commands. If no arguments are specified, lastcomm will print info about all of the commands in acct (the record file).
但是正如少数人所说,“ ls -al / proc /”将告诉您很多信息!
/proc
将提供有关程序的所有信息,exe
将是可执行文件的链接,cwd
当前工作目录的fd
链接,该目录包含打开文件的链接(包括标准输入,输出和标准错误)