简体   繁体   English

在bash脚本中杀死进程

[英]kill a process in bash script

I would like to kill and restart a process and this command works on interactive mode but not in script mode. 我想杀死并重新启动进程,此命令适用于交互模式,但不适用于脚本模式。

Any suggestion: 任何建议:

echo "Killing the running server"
kill $(ps -a | grep 'myserver.jar' | awk '{print $2}') ||  echo 'No active myserver' ; exit 1;

This may work: 这可能有效:

v=$(pgrep -f myserver.jar)
if [ $? == 0 ]; then
    kill $v
else 
    echo "no server"
fi
# start server...

When a command runs fine in interactive and not in [ batch, crontab, ... take your own ], you should double check : 如果命令在交互式中运行正常而不是[batch,crontab,...自己动手],则应仔细检查:

  • you are using same shell (and not eg bash in interactive and bourne shell in batch) 你正在使用相同的shell(而不是例如批量交互和bourne shell中的bash)
  • you have same PATH 你有相同的路径

If it's not enough look at all environment variables ... 如果还不够,请查看所有环境变量......

也许考虑尝试pkill

pkill myserver.jar

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM