我真的需要屏幕中的 -dmS 选项才能稳定地运行后台作业甚至注销吗?

我真的需要屏幕中的 -dmS 选项才能稳定地运行后台作业甚至注销吗?

我看到很多地方介绍了screen即使注销也能稳定运行后台作业。他们使用

screen -dmS name

根据screen -h,该选项意味着

-dmS name 作为守护进程启动:以分离模式显示会话。

什么是守护进程?我不明白。

我发现如果我简单地输入screen,我就可以自动进入屏幕。运行一些命令后,按Ctrl+a d,然后注销。这项工作仍然运行良好。那么这个简单的方法可以吗?我真的需要-dmS让后台工作稳定吗?


让我试着总结一下:

无论您为 screen 设置了什么选项,在 screen 中运行的任何内容都可以安全地注销(但您应该分离 screen,而不是在注销时退出 screen)。

-dmS只是一个方便在后台非迭代地提交作业的选项。那是

screen -dmS nameOfScreen command

答案1

-dm仅当您想在屏幕会话中运行命令而不是交互输入时才使用

-S只是给会话一个可用的名称,以便您稍后可以轻松地重新连接到它

如果您想以交互方式使用它并且不想给它一个人类可读的名称,您可以安全地省略所有这些参数。

例如,如果您只想启动screen运行命令,/path/to/longTime并且不想观看它运行,您可以这样做

screen -dmS longSession /path/to/longTime

或者你可以这样做

screen -S longSession
$ /path/to/longTime

ctrlad

两者都可以完成同样的事情,但其中一个更容易编写脚本,并且打字更少。

答案2

它更有用,因为它将启动在后台screen -dmS name command args 调用的屏幕会话(即分离),并在该屏幕会话内运行。namecommand args

如果没有command args,它只会在后台启动屏幕会话。

无论哪种情况,您都可以稍后使用例如 附加到该会话screen -d -r name。从man screen

-d|-D [pid.tty.host]

不启动屏幕,但分离其他地方正在运行的屏幕会话。它与从屏幕控制终端输入“Ca d”具有相同的效果。 -D 相当于电源分离键。如果没有会话可以分离,则忽略此选项。与-r/选项结合 -R 可以实现更强大的效果:

-d -r 重新附加会话,如有必要,请先将其分离。

-d -R 重新附加会话,如有必要,先分离甚至创建它。

-d -RR 重新附加会话,并在必要时分离或创建它。如果有多个会话可用,请使用第一个会话。

-D -r 重新连接会话。如有必要,请先远程分离并注销。

-D -R 立即附上。详细来说,这意味着:如果会话正在运行,则重新连接。如有必要,请先远程分离并注销。如果它没有运行,则创建它并通知用户。这是作者最喜欢的。

-D -RR 立即附上。不管这意味着什么,就去做吧。

注意:通过 来检查会话状态始终是一个好主意screen -list

该手册页缺少一个重要的细节 - 它应该是:

-d|-D [pid.tty.host|session name]

答案3

-dmS 只是强制执行这些操作:

  1. 它将开始分离。-dm
  2. 您可以为您的会话命名。-S sessioname

作为守护进程运行表示它将在后台执行指定的命令,直到执行完成。

启动屏幕,然后运行命令,然后分离应该与使用 -dmS 运行命令具有相同的行为。我经常通过启动屏幕来运行游戏服务器或长时间的工作,然后用Ctrl-A+d

您还可以查看手册页man screen以获取有关选项的更深入信息。

相关内容