ps aux | grep firefox
Run Code Online (Sandbox Code Playgroud)
列出所有具有字符串“firefox”的进程
ps aux | grep -v firefox
Run Code Online (Sandbox Code Playgroud)
列出没有字符串“firefox”的所有进程
ps aux | grep -v grep | grep firefox
?
第二个 grep 有什么作用?grep 本身就是一个命令,那么为什么我们要 grep 另一个 grep 呢?
Ste*_*ris 15
当您执行诸如
ps aux | grep firefox
Run Code Online (Sandbox Code Playgroud)
然后该grep
过程本身可能会显示在输出中,因为您正在寻找的词存在。例如,在我的机器上运行chrome
并得到类似的结果:
% ps aux | grep chrome
sweh 3384 0.0 0.0 11128 1024 pts/1 S+ 07:08 0:00 grep chrome
sweh 23698 0.0 0.0 6384 620 ? S Jul04 0:00 /usr/lib/chromi
Run Code Online (Sandbox Code Playgroud)
我们可以看到进程 3384 是grep
命令并且匹配,因为出现了chrome一词。
为了避免这种情况,有些人然后添加第二个 | grep -v grep
以删除该行。
不过有骗子...
ps aux | grep '[f]irefox'
Run Code Online (Sandbox Code Playgroud)
grep '[f]irefox'
匹配与 完全相同的行grep firefox
,但现在该grep
命令将永远不会匹配自身,因为该单词并未按字面出现在该命令上。
该ps
命令将输出您当前正在运行的所有进程。第一个将从该列表中grep
删除该grep
进程。第二个将提取firefox
过滤列表中的任何进程。
这可能是获取进程的进程 ID (PID) 的部分尝试firefox
,可能只是为了查看它是否正在运行或终止它。
如果是这种情况,我强烈建议您改用pgrep
(或者pkill
,如果您要终止进程):
if pgrep firefox 2>/dev/null; then
echo "firefox is already running"
else
echo "starting firefox..."
firefox &
done
Run Code Online (Sandbox Code Playgroud)
终止firefox
:
pkill firefox
Run Code Online (Sandbox Code Playgroud)
也就是说,不要先找到它的PID。
另请参阅系统手册pgrep
和pkill
系统手册。
归档时间: |
|
查看次数: |
42086 次 |
最近记录: |