我有这个脚本
#!/bin/sh
echo `pwd`
until `sh ./launch_starbound_server.sh`; do
echo "Server crashed $?" >> Crash.log
done
当我运行它并杀死进程"launch_starbound_server"时,它会在终端中输出以下内容:
Killed
monitor.sh: 5: monitor.sh: Info:: not found
崩溃.log确实包含文本。奇怪的是,这个过程确实开始了。一段时间后,整个过程似乎崩溃而不是无限循环。
编辑
我正在运行的服务器通常会在某个时候崩溃,很难说为什么。但更清楚的是,我要做的是制作一个脚本,每次崩溃时都会召唤下标。
不过,让脚本在循环内运行并在脚本崩溃时更改条件可能是解决问题的一种方法。
编辑2
我将脚本更改为:
#!/bin/sh
cd /home/sybiam/starbound/starbound/linux64
while true
do
./launch_starbound_server.sh
echo "Server crashed $?" >> Crash.log
sleep 1
done
我相信它应该有效,睡眠方法是在启动新的服务器实例之前给操作系统时间释放套接字。反引号可能是问题所在。
问题是这个命令
sh ./launch_starbound_server.sh`
正在子外壳中运行(通过反引号)。它将字符串输出到标准输出。假设字符串是:
Info: foo bar baz
因此,您正在有效地运行:
until Info: foo bar baz; do
…
done
这就解释了通知。我无法告诉你是什么真正扼杀了剧本——你需要在这个问题上放更多细节来弄清楚。