我正在尝试创建一个 superkill 别名来杀死所有匹配 grep 匹配的进程。我想做:
superkill ruby
Run Code Online (Sandbox Code Playgroud)
并让它杀死所有匹配“ruby”的进程
在我的 .bashrc 中,我添加了这个
alias superkill="ps ax | grep $1 | cut -f1 -d' ' | xargs kill"
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,我得到
superkill something
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
...
Run Code Online (Sandbox Code Playgroud)
有人能指出我正确的方向吗?
谢谢,凯文
这与副本不同。我在问一个具体问题。重复项是一个概括性的高级问题。阅读副本后我无法提出解决方案。
pkill -f不起作用。如果你这样做
ps -A|grep ruby
Run Code Online (Sandbox Code Playgroud)
进而
pkill -f ruby
Run Code Online (Sandbox Code Playgroud)
进而
ps -A|grep ruby
Run Code Online (Sandbox Code Playgroud)
您将看到 ruby 进程仍然存在。但如果你这样做
kill -9 xxx
Run Code Online (Sandbox Code Playgroud)
其中 xxx 是 PID,这确实有效。我正在寻找的是别名kill -9 来匹配grep 的东西。
更新 - 这让我想起了我对 SO 的失望,每个人都太快地投票或举报(我认为举报没有什么价值)。这是另一个示例,其中所有建议的答案都不起作用:
kevin@kpi-2:~/Documents/code/kpi-veh$ sudo killall -r ruby
kevin@kpi-2:~/Documents/code/kpi-veh$ ps -A|grep ruby
27175 pts/9 00:22:03 ruby
kevin@kpi-2:~/Documents/code/kpi-veh$ sudo killall -r ruby
kevin@kpi-2:~/Documents/code/kpi-veh$ ps -A|grep ruby
27175 pts/9 00:22:06 ruby
kevin@kpi-2:~/Documents/code/kpi-veh$ sudo killall -r ruby
kevin@kpi-2:~/Documents/code/kpi-veh$ ps -A|grep ruby
27175 pts/9 00:22:08 ruby
kevin@kpi-2:~/Documents/code/kpi-veh$ kill -9 27175
kevin@kpi-2:~/Documents/code/kpi-veh$
Run Code Online (Sandbox Code Playgroud)
我正在寻找的(不敢相信我仍然要与大厅监视器争论这是一个骗局)是一种别名杀死的方法。在这种情况下(Ruby 经常发生这种情况),我必须通过 ID 来终止进程,据我所知,任何变体中的killall都不起作用。
您正在寻找的内容已经存在,名称为killall -r:
killall向运行任何指定命令的所有进程发送信号。如果未指定信号名称,SIGTERM则发送 。[...]-r, --正则表达式
将进程名称模式解释为扩展的正则表达式。
| 归档时间: |
|
| 查看次数: |
4022 次 |
| 最近记录: |