bash - 如何用一个脚本杀死多个 PID 并使其返回提示
问题描述
我有两个 PID 在我的 linux 服务器中运行。
当我执行以下命令时,他们会返回 PID:
pgrep -f -d ' ' /'main.py'
4752 4768
他们在这里使用命令:ps -ef | grep main.py
ubuntu 4752 4749 3 08:07 pts/1 00:00:04 python /home/ubuntu/deploy/main.py
ubuntu 4768 4752 5 08:07 pts/1 00:00:05 /home/ubuntu/venvs/myvirtual/bin/python /home/ubuntu/deploy/main.py
现在,我想编写一个小的 shell 脚本,当我运行它时,它会杀死两个 PID。我的脚本如下所示:
#!/bin/sh
PID=`pgrep -f -d ' ' /'main.py'`
if [ -z "$PID" ]; then
echo "no pid found for main.py"
else
echo -ne '\n' | nohup kill -KILL $PID 1>&2 &
fi
问题是,当我运行这个脚本 (./shutdown.sh) .. 它首先打印这个:
-bash: line 56: 4727 Killed nohup python ~/deploy/main.py > /home/ubuntu/main.log 2>&1
...然后我必须按 [ENTER] 才能返回提示,然后打印:
[1]+ Exit 137 . ~/venvs/myvirtual/bin/activate && nohup python ~/deploy/main.py > /home/ubuntu/main.log 2>&1 (wd: ~/deploy)
(wd now: ~)
1)如何让它杀死 PID 并干净地返回提示,而无需在脚本运行后按 RETURN 按钮?
2)如果没有发生 PID 杀戮,是否还有一种方法可以使脚本失败?
解决方案
推荐阅读
- python - python多线程中的并发性与并行性?
- mysql - 计算移动平均线作为子查询
- c# - 如何根据方向更改 Grid.RowDefinitions
- project-management - 如何为关键跟踪器创建客户状态?
- angular - 在 Angular 中发布 http://localhost:3000/auth 400(错误请求)
- python - 正则表达式在第二次出现字符后匹配相邻数字
- android - 如何在 Android 中生成临时 TLS 密钥和证书(没有 KeyStore)
- haxeflixel - 将 BSPMapGen 演示转换为 flxTilemap 对象
- spring - 在 Spring Cloud Stream 中使用 Spring Integration 风格有什么好处
- c++ - 使用带有 std::cout 的单引号来打印字符串实际上会打印数字