例如,有时当我尝试启动Firefox时,它表示Firefox进程已在运行.所以我必须这样做:
jeremy@jeremy-desktop:~$ ps aux | grep firefox jeremy 7451 25.0 27.4 170536 65680 ? Sl 22:39 1:18 /usr/lib/firefox-3.0.1/firefox jeremy 7578 0.0 0.3 3004 768 pts/0 S+ 22:44 0:00 grep firefox jeremy@jeremy-desktop:~$ kill 7451
我想要的是一个可以为我做这一切的命令.它将在进程列表中为它(或其他)获取输入字符串和grep,并将终止输出中的所有进程:
jeremy@jeremy-desktop:~$ killbyname firefox
我尝试在PHP中执行它但exec('ps aux')似乎只显示在PHP脚本本身中使用exec()执行的进程(因此它显示的唯一进程本身.)
pkill firefox
更多信息:http://linux.about.com/library/cmd/blcmdl1_pkill.htm
也可以使用:
pkill -f "Process name"
.
对我而言,它完美无缺,这正是我所寻求的.在我的情况下没有标志pkill没有使用名称.
当-f
被设置时,完整的命令行用于模式匹配.
您可以通过杀死进程名称与killall
killall向运行任何指定命令的所有进程发送信号.如果未指定信号名称,则发送SIGTERM.
可以通过名称(例如-HUP或-SIGHUP)或数字(例如 -1)或选项-s指定信号.
如果命令名称不是正则表达式(选项-r)并且包含斜杠(/),则将选择执行该特定文件的进程进行查杀,而与其名称无关.
但如果你没有看到这个过程ps aux
,你可能没有权利杀死它......
更长的选择:
kill `pidof firefox`
最简单的方法是首先检查您是否获得了正确的进程ID:
pgrep -f [part_of_a_command]
如果结果符合预期.跟着:
pkill -f [part_of_a_command]
奇怪,但我还没有看到这样的解决方案:
kill -9 `pidof firefox`
它还可以杀死多个进程(多个pid),如:
kill -9 `pgrep firefox`
我更喜欢,pidof
因为它有单行输出:
> pgrep firefox 6316 6565 > pidof firefox 6565 6316
在Mac上我找不到pgrep和pkill也不是killall工作所以写了一个简单的一个班轮脚本: -
export pid=`ps | grep process_name | awk 'NR==1{print $1}' | cut -d' ' -f1`;kill $pid
如果有更简单的方法,请分享.
杀死snippet
启动路径中的所有进程。您可以通过将/ directory /作为摘要杀死从某个目录启动的所有应用。当您从同一应用程序目录中为同一应用程序启动多个组件时,这非常有用。
ps ax | grep| grep -v grep | awk '{print $1}' | xargs kill
*如果可以的话,我会推荐pgrep
使用#killall
命令:
#killall -9
用grep杀死:
kill -9 `pgrep myprocess`
更正确的是:
export pid=`ps aux | grep process_name | awk 'NR==1{print $2}' | cut -d' ' -f1`;kill -9 $pid