Answers:
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的各种信息,包括完整的命令行。
尝试执行以下命令:
ps -ef
首先,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
shell下的某些字符是用于特殊目的的,例如<>?“; ...
grep PID没什么用,因为PID是进程ID,并且grep会找到相似的数字...
grep <pid>
,您应该将其替换<pid>
为实际的进程ID(是一个数字)。<pid>
只是一个占位符,而不是您应该实际键入的内容。