我有一个每15分钟运行一次的脚本,但有时如果盒子忙,它会挂起,下一个过程将在第一个完成创建雪球效果之前开始.如何在bash脚本中添加几行以在启动之前检查某些内容是否先运行?
rod*_*ion 13
pidof -x
如果您知道进程名称,或者kill -0
您知道PID ,则可以使用.
例:
if pidof -x vim > /dev/null
then
echo "Vim already running"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
为什么不设置锁文件?
就像是
yourapp.lock
只需在处理完成后将其删除,并在启动之前检查它.
它可以使用
if [ -f yourapp.lock ]; then
echo "The process is already launched, please wait..."
fi
Run Code Online (Sandbox Code Playgroud)
小智 3
代替 pidfiles,只要您的脚本具有唯一可识别的名称,您就可以执行以下操作:
#!/bin/bash
COMMAND=$0
# exit if I am already running
RUNNING=`ps --no-headers -C${COMMAND} | wc -l`
if [ ${RUNNING} -gt 1 ]; then
echo "Previous ${COMMAND} is still running."
exit 1
fi
... rest of script ...
Run Code Online (Sandbox Code Playgroud)