如何创建 shell 脚本,等待程序完成,完成后向我显示程序已终止的消息

如何创建 shell 脚本,等待程序完成,完成后向我显示程序已终止的消息

在 shell 脚本中如何创建等待并检查特定程序是否正在运行的脚本,如果正在运行则等到程序死亡,程序死亡后该脚本将显示消息“现在你的程序已死亡”,仅此而已,示例:我正在玩游戏,现在我想创建一个脚本来发现我的游戏是否正在运行,如果正在运行则等到游戏停止,游戏停止后该脚本会向我显示“现在你的游戏已死亡”的消息。

答案1

如果我使用创建 BASH 脚本

$ cat > blah
#!/bin/bash
read
ls

使用使其可执行chmod

chmod +x blah

然后运行它

$ bash blah 
-- script has stopped as i type this, it will continue on enter
bionic                        focal-desktop-amd64.iso            kde_neon                                  zsync_disco.sh
blah                          focal-desktop-amd64.iso.zs-old     qa_query.py                               zsync_eoan.sh
eoan-desktop-amd64.iso        focal-desktop-amd64.iso.zsync      qatracker.py                              zsync_focal.sh
eoan-desktop-amd64.iso.zsync  focal-desktop-amd64.iso.zsync.old  siduction-patience-lxqt-amd64-latest.iso

脚本运行并暂停,等待read完成。我输入文本“-- 当我输入此内容时脚本已停止,它将在输入后继续”并按下Enter

只有到那时(read完成后)ls命令才会执行。

我可以在行尾添加“&”,read这样它就可以在后台运行,从而ls无需等待就可以继续运行......但你想要的实际上是默认值。

答案2

您可以ps循环运行,直到程序运行完毕。当程序完成时,while 循环就结束了。

#!/bin/bash

appName="appname"
appCount=$(ps ax | grep $appName | grep -v grep | wc -l)
while [ "$appCount" -gt "0" ]
do
  sleep 1
  appCount=$(ps ax | grep $appName | grep -v grep | wc -l)
done
zenity --info --title="End" --text="Now your game is dead."

输入应用程序名称而不是appnamedone输入您想要显示消息的行后。我使用 zenity 作为通知对话框。echo如果您想在终端窗口中显示消息,您可以使用其他内容。

相关内容