bash脚本如何确保运行的副本不多于一个?
我试过了:
ps -ef| grep /user/loca/shell/sh | wc -l
Run Code Online (Sandbox Code Playgroud)
由于grep命令,这显示了我2 .将其更改为:
ps -ef | grep /user/loca/shell/sh | grep -v 'grep' wc -l
Run Code Online (Sandbox Code Playgroud)
然后它显示1.但是,如果我vim /user/loca/shell/sh然后执行:
ps -ef| grep /user/loca/shell/sh | grep -v 'grep' wc -l
Run Code Online (Sandbox Code Playgroud)
这表明2.但是我只有一个过程,我已经开始了.
bash脚本如何检查进程是否正在运行?
Unix Daemons中经常使用的习惯用法是在启动时创建一个带有PID的文件.
然后你可以在启动时检查文件的存在和/或内容,如果它在那里,你退出并让该实例运行.
在脚本结束时,您将删除该文件,准备下次运行.
脚本运行时唯一的问题是,但由于某种原因没有完成,保留PID文件.这可以通过检查它的时间戳来处理,如果它是很久以前,你认为它是一个中止运行并继续当前的运行.