如何使用屏幕启动 sudo 权限程序,以便我可以稍后重新连接它?

如何使用屏幕启动 sudo 权限程序,以便我可以稍后重新连接它?

我面临的问题是:我有一个必须以 root 身份运行的程序。我希望它在屏幕上运行,但这里有一个问题:出于管理原因,我希望能够重新连接到它。

我正在编写一个肮脏而快速的重启守护进程,因为该程序不断以非常神秘的方式失败,即以 sudo 身份运行(因为我需要 root 权限才能启动应用程序)。但是我不想简单地以 sudo 身份运行 screen,因为这样screen -ls不会显示它,只有sudo screen -ls。如果我运行sudo -u USER screen -dmS SCREEN_NAME sudo APP,它似乎工作正常,它会用正常的 screen -ls 列出,但是有一个问题。如果我想检查程序,并尝试重新连接到屏幕,尝试(并输入密码)后,屏幕将终止。

我没有遇到密码问题,问题是重新连接的屏幕正在终止。有人有什么建议吗,我如何在这些条件下从 bash 启动屏幕?

答案1

screen正在终止,因为程序正在终止。如果您想查看其输出,您可以记录它(使用-L)以随后检查完整输出,或者,要查看最后几行,请使用屏幕启动 shell 并从该 shell 运行失败的应用程序。屏幕不会退出,直到您退出 shell。

如果存在,屏幕-L将附加到日志文件。您还可以使用选项建议一个不同于默认值screenlog.N(N 是屏幕编号)的文件名-Logfile

更新:可能是由于运行screen 里面sudo session 类似sudo screen。在这种情况下,screen 是以 root 身份运行(或者如果使用参数调用了 sudo,则为其他用户-u)并且您还需要以该用户的身份运行后续操作。例如,要重新连接,sudo screen -r

相关内容