我有/tmp/bash.sh一个包含这样的脚本:
killall name*
Run Code Online (Sandbox Code Playgroud)
如果我转到/tmp文件夹然后运行它可以正常工作./bash.sh,但是如果我转到/然后运行它/tmp/bash.sh或者./tmp/bash.sh它不起作用。相反,它抱怨
name*: no process found
Run Code Online (Sandbox Code Playgroud)
为什么?如何解决这个问题?
sleep 1 & kill -9 $?
Run Code Online (Sandbox Code Playgroud)
以上将杀死(最有可能)bash shell 或当前终端窗口。
这是为什么?
注意:sleep 1 & kill $?不会杀死外壳/终端。
只是为了确保我没有运行我认为不同的东西,有一些竞争条件等,以下也会产生相同的效果:
/bin/sleep 2 & pid=$?; sleep 1; kill -9 $pid
Run Code Online (Sandbox Code Playgroud)
GNU bash,版本 5.0.3(1)-release
我正在尝试创建一个 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 …Run Code Online (Sandbox Code Playgroud)