异步 init.d 脚本

异步 init.d 脚本

我想知道启动脚本是否可以在 Ubuntu 中持续运行。我想到的是像 Minecraft 服务器脚本这样持续运行的东西,这样如果服务器因某种原因崩溃,我可以再次运行命令并重新启动它。所以基本上我会在 while 循环中使用命令来运行我的 minecraft 服务器。

答案1

有几种方法可以做到这一点。我个人更喜欢这个答案。这是一个快速而粗略的答案。但从你的问题来看,我知道这就是你想要的。

1 创建循环执行所需操作的脚本。例如:

while [ 1 ]; do
    echo `date` >> /some/file/somewhere
    sleep 1
done

2 创建第二个脚本检查第一个脚本是否正在运行。如果没有,则运行它:

VAR=`ps -ef |grep "name_of_script_1" |wc -l`
#VAR returns 1 if not running (because grep returns itself), 
#    2 if it is running.  
if [ "${VAR}" -eq "1" ]; then
    /run/script/1 &
fi

3 按照某个间隔(例如每 5 分钟)运行 cron 中的第二个脚本。

*/5 * * * * root /run/script/2

因此,每 5 分钟,脚本 2 会检查脚本 1 是否正在运行。如果未运行,则启动脚本 1 并将其置于后台。

互联网上有很多文章可以帮助解决特定元素(在 cron 中运行某些内容、while/if 语法、将程序置于后台等)。但这应该可以让你接近你想要的东西。

答案2

我最终发现这回答了我的问题。

相关内容