在我的脚本中我有这个:
#!/bin/bash
kill -9 $(ps aux | grep '[m]y_app' | awk '{print $2}')
sleep 3
ENV_VAR=val123 nohup my_app &
为什么它会打印这个:
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
?
“杀死”有什么错?
当我手动运行该线路时kill -9 $(ps aux | grep '[m]y_app' | awk '{print $2}')
,它不会引发任何警告。
答案1
我刚刚尝试了完全相同的代码(使用一些随机应用程序),并且它在命令行和脚本(在 Debian Jessie 上)中都可以正常工作。
要调试您的情况,请尝试回显您传递给脚本内的kill命令的内容......
#!/bin/bash
echo $(ps aux | grep '[m]y_app' | awk '{print $2}')
...看看它是否按预期返回 pid。
答案2
尝试按进程名终止:
pkill -9 my_app