screen命令与后台进程的功能区别

screen命令与后台进程的功能区别

这两个运行应用程序/进程的命令在功能上有什么区别?

$ screen -d -m -S myapp "/opt/myapp-dir/myapp --some-params"

$ (/opt/myapp-dir/myapp --some-params &)

假设程序驻留在 和 内部并从和/opt读取/写入。/tmp/var/myapp-data

答案1

  • screen是一个终端仿真器,它将多个虚拟终端复用为一个。当您运行该screen命令时,您的程序将开始在虚拟终端窗口中运行screen(您可以使用选项命名窗口-t)。现在您可以随时与复用器分离(使用C-a C-d,假设默认绑定),并随时返回,并screen使用screen -rD(或根据会话状态使用类似命令)与同一会话连接,并获得相同的控件

  • 由于父 shell 不会跟踪孙 shell,因此子 shell 中的后台运行将被删除SIGHUP,但您无法(直接)跟踪/控制进程,更不用说重新附加screen提供的功能了。当然,您可以使用 PID 检查进程的状态(通过使用ps/之类的工具top或直接解析/proc/PID/),但我不知道这是否适合您的情况。因此,如果您需要查看进程的任何输出(假设没有重定向)或想要检查/控制进程,请使用screen/ tmux/byobu或类似命令。

相关内容