我正在使用 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'
行):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
因此,我的实例的 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 不同(现在是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 的相关问题。
答案4
shell 下的一些字符有特殊用途,例如 < > ? ” ; ...
grep PID 没有用,因为 PID 是进程 ID,grep 会找到类似的数字...