我用 Go 编写了一个小服务,它必须始终运行。但它充满了错误,有时会导致崩溃。尽管如此,我希望它在出现任何错误时重新启动并将错误记录到文件中。我认为可以通过像这样执行来完成
screen -d -m "./my_compiled_binary 2> on_error.sh"
但我不确定,里面必须有什么on_error.sh
?
答案1
将> outputfile
命令的输出重定向到文件,2> errorfile
redirects stderr
,错误输出,请参阅:http://mywiki.wooledge.org/BashGuide/InputAndOutput#File_Redirection
您可能想要的是一个循环,例如:
while true ; do
./my_compiled_binary 2>> errorlog
sleep 1
done
这将(无条件)在一秒钟后重新启动程序,并将错误输出重定向到文件errorlog
(附加到文件,因为>>
而不是单个>
)。看:http://mywiki.wooledge.org/BashGuide/TestsAndConditionals