这两个运行应用程序/进程的命令在功能上有什么区别?
$ 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
或类似命令。