崩溃时重新运行应用程序脚本?

我有一些应用程序需要一直在我的笔记本电脑上运行。

我使用bash脚本来启动这些应用程序。 在我的脚本中,我有一个类似于此的循环:

while true; do xterm done 

这会运行一个应用程序(在这种情况下为xterm ),如果应用程序崩溃,循环将再次启动它。

这样做的缺点是该循环没有“干净”的退出。 因此,即使用户的意图是关闭xterm ,循环也会再次启动它。

有没有办法从bash脚本启动应用程序,观察它是否正在运行,如果脚本崩溃则重新运行它,或者如果用户正确关闭它则不执行任何操作?

试试这个:

 while true; do xterm && break; done 

应用程序具有退出状态代码,因此如果某些内容退出正常,则返回零…如果出现问题,则会抛出另一个数字。 这允许人们勾住并找出确切的问题。 这是另一个答案正在做的事情。

&&只检查前一个命令是否为零状态退出,如果是,则打破循环。 如果它崩溃了,它会抛出0以外的东西而且&& ...子句不会触发; 它只需循环回来并运行xterm

while条件下,您可以使用以下内容测试xterm退出状态是否成功:

 result=1 while [ $result -ne 0 ]; do xterm result=$? done 

$? 变量保存上次执行的命令的退出状态。