我想在每次结束时重新运行文件 php......
然后我创建了像这样的文件 SH
VAR_1=1;
while [[ $VAR_1 != "2" ]]; do
for filename in *.php; do
if [ -- check if command is NOT running -- ]; then
sleep .5
php $filename
fi
done
done
我必须使用什么样的 IF?
答案1
使用pgrep
if ! pgrep -f "php $filename"; then echo "command not running"; fi
但是,“我希望每次结束时都重新运行文件 php”,那么为什么不这样做呢:
while true; do
php "$filename"
done
那么您不必搜索它,当它结束时它就会再次运行。
答案2
( readlink /proc/*/exe | grep -q '/path/to/the/command' )
如果进程正在运行,将返回 0 /path/to/the/command
。
然而,实现这一目标的规范方法有点不同:
- 在启动时,该进程会检查某些已知文件(通常是
/run/$commandname.pid
)是否存在 - 如果是,它会读取其中的 PID,并检查该进程是否仍在运行(例如,是否有一个
/proc/$pid/
目录) - 如果是,则退出
- 否则(没有 PID 文件,或者进程不再运行),它会将自己的 PID 写入文件中并启动。