![在后台运行 Linux 命令:与号 (&) 或屏幕](https://linux22.com/image/1333695/%E5%9C%A8%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C%20Linux%20%E5%91%BD%E4%BB%A4%EF%BC%9A%E4%B8%8E%E5%8F%B7%20(%26)%20%E6%88%96%E5%B1%8F%E5%B9%95.png)
如果应用程序不时需要输入,则可以通过在应用程序末尾添加与号(“ &”)或通过屏幕(通过打开屏幕会话)来在后台运行应用程序。
除了上述好处(向应用程序添加输入)之外,还有其他好处吗?
我很好奇从低级细节角度来看是否还有其他好处 - 例如,我假设如果通过屏幕而不是在最后使用&运行,则内核关闭应用程序的变化会稍微小一些。
答案1
使用&
将导致程序在后台运行并等待是否需要输入。这使得它只对不需要输入的程序有用。
如果您注销,程序也会终止,除非您使用nohup
命令。这将捕获信号 1 (HangUP) 并将所有输出写入文件。
如果您确实需要立即提供输入,那么有三个选项:
fg
使用.
或 fg手动将程序置于前台工作编号. (见jobs
)。缺点:1)额外工作2)除非您 tail -f nohup.out,否则怎么知道它在等待输入?- 使用屏幕。
- 使用 tmux。
答案2
如果您在屏幕上运行它,您可以关闭终端,但它仍在运行。
如果您通过“&”运行它,应用程序会收到 HUP 命令,如果您关闭当前终端,则会导致它退出。
您可以将其与 nohup 结合使用:
nohup /bin/mycommand &
以保持其运转。