fields Asked: 2009-09-22 11:49:17 +0800 CST2009-09-22 11:49:17 +0800 CST 2009-09-22 11:49:17 +0800 CST 有没有办法用后台进程启动屏幕,但在进程退出时它不会终止? 772 使用 -d -m 使用后台进程启动屏幕会话会导致屏幕会话在进程退出时终止。 有没有办法让屏幕会话在进程退出后继续存在,但仍然在没有任何用户交互的情况下启动它? gnu-screen 3 个回答 Voted Dennis Williamson 2009-09-22T13:58:23+08:002009-09-22T13:58:23+08:00 如果您的流程可以获取其中任何一个/etc/profile或/etc/bash.bashrc它们各自的$HOME文件,那么这可能对您有用: screen -d -m bash --init-file background-shell-script 当“background-shell-script”退出时,屏幕会话将在您重新附加时在 shell 提示符处等待您screen -r。如果您在该过程完成之前重新连接,您将看到它在发生时创建的任何输出,并在完成时有一个 shell 提示。 要获取正常的启动文件,请将它们添加到脚本的开头: . /etc/profile # more source statements, if needed # do your stuff here bandi 2009-09-22T12:41:41+08:002009-09-22T12:41:41+08:00 也许如果你将调用包装到一个 shell 脚本中,并且你调用你的 shell 并选择在脚本完成后保持它运行。 MattyB 2009-11-03T21:54:14+08:002009-11-03T21:54:14+08:00 这里的关键是您希望进程将自身与控制 shell 或 tty 分离。最简单的方法是运行 nohup,即 nohup 任何进程。man nohup 了解更多信息。 目前尚不清楚为什么您希望屏幕会话在进程退出后继续存在。大概是为了捕获输出,但这很容易被重定向。 使用 screen 的唯一原因是如果您希望进程运行但它仍然需要标准输入/输出进行控制。无论如何,如果可能的话,建议避免这种情况,只使用 nohup,如果它是一个长时间运行的进程,则将其作为长期运行的服务集成到机器的引导进程中。
如果您的流程可以获取其中任何一个
/etc/profile
或/etc/bash.bashrc
它们各自的$HOME
文件,那么这可能对您有用:当“background-shell-script”退出时,屏幕会话将在您重新附加时在 shell 提示符处等待您
screen -r
。如果您在该过程完成之前重新连接,您将看到它在发生时创建的任何输出,并在完成时有一个 shell 提示。要获取正常的启动文件,请将它们添加到脚本的开头:
也许如果你将调用包装到一个 shell 脚本中,并且你调用你的 shell 并选择在脚本完成后保持它运行。
这里的关键是您希望进程将自身与控制 shell 或 tty 分离。最简单的方法是运行 nohup,即 nohup 任何进程。man nohup 了解更多信息。
目前尚不清楚为什么您希望屏幕会话在进程退出后继续存在。大概是为了捕获输出,但这很容易被重定向。
使用 screen 的唯一原因是如果您希望进程运行但它仍然需要标准输入/输出进行控制。无论如何,如果可能的话,建议避免这种情况,只使用 nohup,如果它是一个长时间运行的进程,则将其作为长期运行的服务集成到机器的引导进程中。