Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 用于检查应用程序是否正在运行的脚本;如果没有,就开始吧_Bash_Macos_Shell_Variable Assignment_Quotes - Fatal编程技术网

Bash 用于检查应用程序是否正在运行的脚本;如果没有,就开始吧

Bash 用于检查应用程序是否正在运行的脚本;如果没有,就开始吧,bash,macos,shell,variable-assignment,quotes,Bash,Macos,Shell,Variable Assignment,Quotes,我在Mac上运行应用程序“OsiriX MD”。有时它会莫名其妙地“退出”。我想每小时运行一个脚本,以检查它是否正在运行。如果没有,我想重新开始。这样行吗 #!/bin/bash PROCESS=OsiriX MD number=$(ps aux | grep $PROCESS | wc -l) if [ $number -gt 0 ] then open $PROCESS; fi 我建议使用pgrep检查进程是否未(!)运行: 请参阅:man-pgrep流域util(在基于Deb

我在Mac上运行应用程序“OsiriX MD”。有时它会莫名其妙地“退出”。我想每小时运行一个脚本,以检查它是否正在运行。如果没有,我想重新开始。这样行吗

#!/bin/bash
PROCESS=OsiriX MD
number=$(ps aux | grep $PROCESS | wc -l)

if [ $number -gt 0 ]
then
    open $PROCESS;
fi

我建议使用
pgrep
检查进程是否未(
)运行:



请参阅:
man-pgrep

流域
util(在基于Debian的发行版中,使用
apt-install-waterminal
安装它)可能很有用

说明:减少多余的命令执行
分水岭可以围绕命令运行,以便任何进一步尝试
在另一个副本运行时运行该命令将只产生一个副本
初步的进一步尝试

要使用它,第一个实例(以及所有进一步的尝试)应该从以下内容开始:

watershed "OsiriX MD" &
或者如果
OsiriX MD
需要终端本身:

watershed "OsiriX MD"
这将在
~/.dwident/
中保存一个特殊的锁定文件,该文件将在以后检查。如果
OsiriX MD
仍在运行,则
waterwater
将等待它停止运行,然后运行它。如果
OsiriX MD
未运行,则
waterrence
将运行它


一个明显的错误:第三个实例似乎被忽略了。例如,假设我们在终端A上运行
流域mc
,然后在终端B上运行,然后在终端C上运行。我们将看到A上运行
mc
,B&C上运行
流域mc
。现在在A上关闭
mc
,在B上我们将看到
mc
的新实例,在C上,mc仍在等待。现在关闭B上的
mc
,C显示命令提示符——第三个实例无用地等待。另一方面,如果我们一直等到在A上关闭
mc
,然后在C上运行
Waterline mc
,然后在B上关闭mc,那么
mc
将在C上运行。有两个实例工作正常。

到目前为止,我已经成功地使用了这段代码:

#/bin/bash
process=“OsiriX\MD”
如果pgrep-f“$process”;然后
打开-a/Applications/OsiriX\MD.app/Contents/MacOS/OsiriX\MD;
fi

有人看到它有潜在的问题吗

谢谢你的建议


Howard

A
launchd
agent和
keepAlive
键可能是更好的选择。
watershed "OsiriX MD"