从屏幕捕获退出状态

从屏幕捕获退出状态

我有一个长期运行的命令,我一直在运行它,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

相关内容