我是 shell 编程的新手。假设我已经从我的终端启动了一个程序(例如 NetBeans),如果我输入
ps aux|grep netbeans
Run Code Online (Sandbox Code Playgroud)
我得到输出
pre 18775 1.2 0.0 12524 1972 pts/3 S 20:17 0:00
Run Code Online (Sandbox Code Playgroud)
其中 18775 指定进程的 PID 等。
然后我用杀了它
kill 18775.
Run Code Online (Sandbox Code Playgroud)
NetBeans UI 在其上消失。如果我尝试使用第一个命令获取 pid,我仍然会得到:
pre 19137 0.0 0.0 9136 1068 pts/3 S+ 20:19 0:00 grep --color=auto netbeans
Run Code Online (Sandbox Code Playgroud)
如果进程已经被杀死,为什么它仍然显示上述输出?
roa*_*dmr 17
grep 正在 grep 本身。尝试类似:
ps aux |grep [n]etbeans
Run Code Online (Sandbox Code Playgroud)
这可以防止 grep 在输出中显示自己
切勿ps与 一起使用grep。
相反,使用killall netbeans,pkill netbeans来杀死它。为进程ID pgrep netbeans。
有关ps 和 grep的更多信息。