显示正在运行的具有文件名的进程?


12

我正在用腻子连接我的站点所在的Linux服务器。我可以运行

# ps aux | less

显示正在运行的进程。但是我想显示哪些文件正在运行这些进程?

我也尝试过

# ps aux | grep <pid>

但是得到这个错误:

-bash: syntax error near unexpected token `newline'

正确的方法是什么?


4
在中grep <pid>,您应该将其替换<pid>为实际的进程ID(是一个数字)。 <pid>只是一个占位符,而不是您应该实际键入的内容。
Ben Voigt 2013年

Answers:


13

ps aux | grep <pid>不是shell命令。该符号<pid>是一个通用约定,意为“将PID放在此处”。例如,如果PID为1234,则运行ps aux | grep 1234。这不是一个非常有用的命令,您最好运行ps u 1234

您的问题不是很清楚。“带有文件名”是什么意思?如果要查看进程1234正在运行的可执行文件,请执行以下操作:

ls -l /proc/1234/exe

如果要查看该进程打开了哪些文件:

ls -l /proc/1234/fd

如果要查看带有参数的完整命令行:

tr '\0' '\n' </proc/1234/cmdline

如果您喜欢使用命令,则lsof -p1234显示进程已打开的所有文件。ps uww 1234显示有关进程1234的各种信息,包括完整的命令行。



3

首先,ps aux | grep <PID>当您要显示其PID(流程标识符)由表示的特定流程的详细信息时,此功能很有用<PID>

例如(ps aux | grep 'firefox\|USER'表示仅打印包含firefox或的行USER):

ps aux | grep 'firefox\|USER'
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
terdon  9021  2.5 11.8 1950888 970832 ?      Sl   Apr03 108:41 /opt/firefox/firefox

因此,我的firefox实例的PID 是9021。因此,要使用您尝试运行的命令,我将替换<PID>9021

ps aux | grep 9021
terdon  9021  2.5 11.5 1948776 942640 ?      Sl   Apr03 109:03 /opt/firefox/firefox

现在,我不确定“显示正在运行这些进程的文件”是什么意思。如果要显示这些进程正在使用的文件,ps aux则是一种方法。说我已经/usr/share/doc/nano/faq.html使用以下命令打开了文件:

 firefox /usr/share/doc/nano/faq.html 

我可以使用查看firefox打开的文件ps

ps aux | grep firefox
terdon   31763 18.7  1.0 682916 84352 pts/10   Sl+  17:10   0:02 firefox /usr/share/doc/nano/faq.html

打开的文件显示为传递给firefox的参数之一。请注意,PID是不同的(现在31763不是9021),这是因为每个正在运行的程序都有自己的唯一PID。


另一个有用的命令是top。如果使用-c开关运行它,它将显示传递给命令的参数,并且-u <your user>仅显示以您的用户名启动的进程(<your user>用您的实际用户名替换):

top -c -u terdon

这是本地计算机上的输出(用户terdon仅运行两个进程):

top - 17:14:41 up 3 days, 49 min, 14 users,  load average: 0.48, 0.54, 0.55
Tasks: 228 total,   1 running, 226 sleeping,   0 stopped,   1 zombie
%Cpu(s):  7.1 us,  5.5 sy,  0.0 ni, 86.5 id,  0.0 wa,  0.0 hi,  0.9 si,  0.0 st
KiB Mem:   8187940 total,  8007220 used,   180720 free,   349264 buffers
KiB Swap:  8191996 total,     5556 used,  8186440 free,  4173004 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                       
31573 terdon    20   0 24900 5576 1684 S   0.0  0.1   0:00.20 bash                                                          
31763 terdon    20   0  666m  77m  28m S   0.0  1.0   0:02.39 firefox /usr/share/doc/nano/faq.html                          

有关所显示信息的说明top,请参见对SU上一个相关问题的回答


0

shell下的某些字符是用于特殊目的的,例如<>?“; ...

grep PID没什么用,因为PID是进程ID,并且grep会找到相似的数字...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.