![异步 init.d 脚本](https://linux22.com/image/999069/%E5%BC%82%E6%AD%A5%20init.d%20%E8%84%9A%E6%9C%AC.png)
我想知道启动脚本是否可以在 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
我最终发现这这回答了我的问题。