nohup 使进程对 shell 的 SIGHUP 免疫,但即使我从我的 shell 运行它:
bash -c 'while true; do sleep 1; date; done' >& nohup.out &
Run Code Online (Sandbox Code Playgroud)
然后注销并重新登录,bash 仍在运行并向 nohup.out 生成输出。有什么区别吗?仅仅依靠重定向在任何方面都不那么可靠吗?
我在 CentOS 5.8 服务器上使用 Sass 并希望它在 SSH 注销后继续运行,以便其他用户可以编辑 *.scss 文件数天甚至数周,而无需每次登录时启动程序(实际上,他们甚至没有 SSH 访问权限)。
我使用了这个问题/答案中的以下命令:
$ nohup sass --watch path/to/scss/files:path/to/css/output/files &
然后,我退出 SSH 会话,进程继续运行。在最初的几分钟内一切正常(再次登录并使用 touch 创建测试文件(test.scss)正确触发相应 test.css 文件的创建),但过了一会儿 *.scss 文件停止获取编译...然而,
$ ps 辅助 | grep 'sass'
显示进程仍在运行。
有谁知道我做错了什么?
编辑:这是我从 nohup.out 得到的输出:
/usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/yaml.rb:56:in `': 看来您的 ruby 安装缺少 psych(对于 YAML 输出)。 要消除此警告,请安装 libyaml 并重新安装 ruby。 >>> Sass 正在关注变化。按 Ctrl-C 停止。 >>> 检测到新模板: /home/*/sites/all/themes/test.scss 覆盖 private_html/sites/all/themes//test.css >>> 检测到删除的模板: /home/*/sites/all/themes/test.scss
与 YAML 相关的错误似乎与问题无关,因为 Sass 在短时间内正常工作。即使进程仍在运行,它也会在某个时候默默地停止工作......
我有执行以下操作的 bash 脚本
nohup ws --port 8080 &
Run Code Online (Sandbox Code Playgroud)
直接在远程服务器上执行该脚本并关闭连接时 - 进程仍然存在。但是当我使用 Jenkins“SSH 插件”时 - Jenkins 关闭连接后进程停止。要执行该脚本,我使用简单命令 sh scriptName.sh
我有一个使用nohup program &. 该程序接受来自 的输入STDIN。有没有办法将文本发送到STDIN正在运行的程序的nohup?
这是在运行 bash 的 FreeBSD 上。我也想看看这是如何在 linux 上完成的。
我有一个 python 包,当我作为python -m myproject. 但是,当我作为 启动时nohup python -m myproject,我得到一个ImportError. 此外,当我作为 启动时nohup python3 -m myproject,它可以正常工作。
问题似乎是我python的别名为 python3 而 nohup 以某种方式使用非默认 python。为什么会这样?
我已经阅读了 about tmux-resurrect,但我仍然不清楚是否可以执行以下操作:
tmux会话ssh 到远程服务器tmux-resurrect)我需要nohup在步骤 3 中使用吗?或者可以tmux-resurrect(或其他工具)处理它吗?
尝试:
while true; do date; sleep 1; done
Run Code Online (Sandbox Code Playgroud)
得到了:
Thu Aug 27 17:33:24 IDT 2009
Thu Aug 27 17:33:25 IDT 2009
Thu Aug 27 17:33:26 IDT 2009
...
Run Code Online (Sandbox Code Playgroud)
但:
nohup while true; do date; sleep 1; done
Run Code Online (Sandbox Code Playgroud)
得到我:
bash: syntax error near unexpected token `do'
Run Code Online (Sandbox Code Playgroud)
任何想法为什么?
ps -ef | grep sleep命令的输出没有区别:
nohup sleep 60 &
sleep 60 &
我可以通过哪种方式发现该程序运行nohup?
nohup可以帮助用户在注销后保持进程运行。
但是当我注销并再次登录时,该过程python消失了。

我们可以发现python进程已经停止了。
PS:系统是Cent OS 7.0。我知道您可以用来nohup在注销后保持作业运行,但是一个已经在运行的进程呢?
有没有办法改变它的状态,以便即使我注销它也能继续运行?
目前,我正在使用nohup command &它在后台发送。但问题是:如果我执行,nohup command &我会退出:
root@ubuntu:/home/test# nohup sleep 10 &
[2] 52439
root@ubuntu:/home/test# nohup: ignoring input and appending output to `nohup.out'
<I need to press ENTER key here to take back my shell control.>
root@ubuntu:/home/test#
Run Code Online (Sandbox Code Playgroud)
我需要做什么 :
root@ubuntu:/home/test# nohup sleep 10 &
[2] 52439
root@ubuntu:/home/test# nohup: ignoring input and appending output to `nohup.out'
root@ubuntu:/home/test#
Run Code Online (Sandbox Code Playgroud)
我不想在nohup sleep 10 &.
因为,我正在处理自动化部分,我需要在将一个命令发送到后台后,我应该能够在不按任何键的情况下执行下一个命令。喜欢:
root@ubuntu:/home/test# nohup start-server.py &
root@ubuntu:/home/test# nohup start-client.py &
Run Code Online (Sandbox Code Playgroud)
[start-server.py需要在后台运行。] 但问题是,在 start-server.py 执行后,它不会执行下一个命令。我需要按“ENTER KEY”来执行下一个命令。 …
我跑
nohup bash -c "while [ true ]; do echo test; done"
Run Code Online (Sandbox Code Playgroud)
来自PuTTySSH 客户端,但在此进程不在后台运行之后,而是nohup在 shell 中保持为前台进程。
软件版本: nohup (GNU coreutils) 8.5