一尘不染

将bash脚本作为守护程序运行

linux

我有一个脚本,该脚本每隔X次运行一次我的PHP脚本:

#!/bin/bash
while true; do
/usr/bin/php -f ./my-script.php
echo "Waiting..."
sleep 3
done

如何将其作为守护程序启动?


阅读 231

收藏
2020-06-02

共1个答案

一尘不染

要将其作为完整的守护程序从Shell运行,您需要使用setsid并重定向其输出。您可以将输出重定向到日志文件,也可以/dev/null将其丢弃。假设您的脚本名为myscript.sh,请使用以下命令:

setsid myscript.sh >/dev/null 2>&1 < /dev/null &

这会将进程与当前的shell(stdin,stdout和stderr)完全分开。如果要将输出保留在日志文件中,请用/dev/null/ path /
to / logfile 替换第一个。

您必须重定向输出,否则它将不能作为真正的守护程序运行(它将取决于您的shell来读写输出)。

2020-06-02