Ada*_*tan 21 command-line process nohup background
考虑以下nohup执行:
nohup script.sh > script.out &
Run Code Online (Sandbox Code Playgroud)
有没有办法注销终端,重新连接,将进程带回前台并使用键盘与其交互?
sou*_* c. 24
nohup不会从终端断开命令,它使您的脚本忽略SIGHUP,并重定向stdout/stderr到一个文件nohup.out,以便在您注销后该命令可以继续在后台运行。
nohup不会自动将它在后台运行的命令。必须明确地做到这一点,通过以&.
$ nohup ./script.sh &
[1] 3390
$ nohup: ignoring input and appending output to ‘nohup.out’
Run Code Online (Sandbox Code Playgroud)
jobs可以打印当前正在运行的作业及其状态。如果命令jobs找不到它,则它不再是该 shell的子进程。
$ jobs
[1]+ Running nohup ./script.sh &
Run Code Online (Sandbox Code Playgroud)
fg即使使用 .bash运行,也可以使用 bash 将后台作业带回前台nohup。但这不会改变输出重定向,它仍然会转到文件nohup.out.
$ fg
nohup ./script.sh
Run Code Online (Sandbox Code Playgroud)
如果您关闭 shell/终端或注销,您的命令不再是该 shell 的子级。它属于init过程。如果您搜索,pstree您会看到它现在归进程 1 ( init) 所有。无法将其带回前台,因为前台不再存在。
如果您想启动一个脚本,让它在输出不打扰终端的情况下运行,然后稍后再启动以与它交互,您可能需要查看终端多路复用器。根据您的系统,我会推荐tmux或screen. 您可以在以下链接中找到有关如何使用它们的一些信息:
多路复用:
屏幕:
编辑:添加了 tmux 引物的链接
我将第二次使用终端多路复用器,但tmux,而不是屏幕。出于所有意图和目的,屏幕是无需维护的。它的配置是一种黑暗艺术,可能首先记录在《死灵之书》的附录中。尝试编写自己的配置是对克苏鲁的一瞥。严重地。看看人们的.screenrc 文件。可以肯定的是,有一些方法可以调解屏幕对配置文件的厌恶。Byobu作为凡人用户和邪恶代码之间的面纱做了令人钦佩的工作。它带有合理的颜色、菜单界面,也许最重要的是状态栏。
但正如我所说,我推荐tmux。它仍然需要一些小的配置,但它有很好的文档记录,并且您的配置文件不会看起来像胡言乱语。此外,您从颜色和状态栏开始。比较我的 screenrc 和 tmux.conf 文件:
| 归档时间: |
|
| 查看次数: |
46774 次 |
| 最近记录: |