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

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

我正在使用 putty 连接我的站点所在的 linux 服务器。我可以运行

# ps aux | less

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

我也尝试过

# ps aux | grep <pid>

但出现此错误:

-bash: syntax error near unexpected token `newline'

正确的做法是什么?

答案1

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 的各种信息,包括完整的命令行。

答案2

尝试执行以下命令:

ps -ef

答案3

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

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

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

因此,我的实例的 PIDfirefox是 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 不同(现在是317639021,这是因为每个正在运行的程序都有自己唯一的 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 的相关问题。

答案4

shell 下的一些字符有特殊用途,例如 < > ? ” ; ...

grep PID 没有用,因为 PID 是进程 ID,grep 会找到类似的数字...

相关内容