我有一个长期运行的命令,我一直在运行它,screen
以便在遇到错误时能够与其交互。但我也希望能够通过另一个 shell 脚本启动它(它实现了类似于 GNU 并行的东西),所以我一直在使用screen -m -D mycommand
它,效果很好,只是我似乎不知道如何获得退出状态 - 这对于重新启动失败的作业很重要。
有没有办法screen
返回其子进程的退出状态?只是为了有一个测试用例可以玩:
screen -mD sh -c "exit 1"
echo $?
# prints 0; would like something that prints 1
答案1
您可以尝试使用该-L
标志:
-L:告诉 screen 打开 Windows 的自动输出日志记录。
对我来说,这会创建一个在工作目录中调用的文件screenlog.0
,该文件记录所有输出;如果你然后运行 screen 像
screen -mDL sh -c 'your_command || echo $?'
或者可能
screen -mDL sh -c 'your_command; echo $?'
然后您可以检查该文件的最后一行是否有退出代码...也许完整的结果类似于
screen -mDL sh -c 'your_command; echo $?' && tail -1 screenlog.0