您好我正在尝试检查进程是否正在运行,如果是,请重新启动它。但如果不是,那就开始吧。在使用Plink从Windows机器远程执行一批命令后运行该脚本。然后我运行另一个plink命令来运行这个脚本。主机上的应用程序正在连续运行。
SERVICE="./Snowflake.app/Contents/MacOS/Snowflake"
if pgrep "$SERVICE" >/dev/null 2>&1 ;
then
echo "$SERVICE is running"
pkill "$SERVICE"
else
/Applications/snowflake/run.sh
fi
这里的问题是,如果应用程序是打开的,它不会关闭它,而是第二次打开应用程序。谁能告诉我哪里出错?
答案 0 :(得分:1)
我建议简单地,愚蠢地杀死进程并检查错误消息,如No process found
(在这种情况下这不是真正的错误)。
每次尝试在杀死进程之前检查进程是否正在运行都会出现竞争情况,这意味着进程可能会在您检查后立即开始。
答案 1 :(得分:-1)
问题是你已经将pgrep的所有输出发送到/ dev / null 保持简单,它将起作用。 (测试!)