当我需要在低重要性服务器上启动后台进程时,我倾向于使用 nohup:
nohup ./server.sh &
Run Code Online (Sandbox Code Playgroud)
大多数同事似乎更喜欢屏幕:
screen -D -R mydaemon
./mydaemon.sh
^A ^D
Run Code Online (Sandbox Code Playgroud)
这两种方法的效果有什么主要区别吗?以一种方式或另一种方式有什么好处?
因为目前我们的 Subversion post-commit 钩子执行时间太长,我一直在努力加快速度。
我一直在考虑将实际钩子作为后台进程执行,以便svn commit在实际钩子完成运行之前完成。
所以我创建了两个文件。
Apost-commit.bg做一些耗时的事情:
sleep 10
Run Code Online (Sandbox Code Playgroud)
以及post-commit在后台执行前者的实际本身:
bash post-commit.bg &
Run Code Online (Sandbox Code Playgroud)
当我从命令行运行时post-commit,它会很快完成,但post-commit.bg仍在运行。但是当我这样做svn commit时仍然需要10秒钟!
SVN 是否以某种方式不允许后台进程,或者我在这里做错了什么?
我有三个后台进程,这就是我所拥有的:
[1] Done zcat jan.txt.gz > j
[2]- Done zcat feb.txt.gz > f
[3]+ Done zcat mar.txt.gz > m
Run Code Online (Sandbox Code Playgroud)
那些“”、“+”、“-”是什么意思?以前从未注意到这些,我猜它总是“+”?
这里有一个奇怪的问题,但我正在 Linux 服务器上使用 python 聊天服务器/客户端组合。目前,如果我这样做:
$: cd /path/to/chat/server
$: sudo python ChatServer_Listen.py
Run Code Online (Sandbox Code Playgroud)
这将启动 python 应用程序运行循环,服务器侦听传入的 TCP 连接。
我的问题是,如果我关闭终端窗口,ssh 会话将退出,python 应用程序停止运行,并且客户端无法再连接。我宁愿不在本地 24/7 全天候运行终端实例。我可以将此 Python 应用程序设置为可以在 Linux 后台运行的应用程序吗?如果是这样,如何?理想情况下,它有点像 Apache,它只是作为服务运行。
谢谢你的协助!
我正在使用supervisord 的 [program:x]来保持我的后台队列运行器正常运行。numprocs 的数量设置为静态数字,但现在我正在寻找一种解决方案,根据队列的工作负载动态调整进程计数。
是否可以(以编程方式)更改 supervisord 的 numprocs 设置的数量而不影响已经运行的工人?
nohup <command> <arg> &
当我通过 SSH 连接到 Linux 服务器时,如果我想运行一个命令并确保它在我从 SSH 注销后继续在后台运行,我将使用上述命令。
最近我正在使用一个名为Bitnami Node.js 堆栈的服务器堆栈。它是一个独立的软件包。node安装目录下的bin文件夹中有一个二进制文件。
在命令行中,我可以使用node命令来运行我的 JS 程序:node <js_program.js>. 没有问题。
但是,我想在从 SSH 注销后继续运行该程序。当我跑步时nohup <installation_dir>/nodejs/bin/node <js_program.js> > <stdout.out> &,程序将在后台运行。但是,当我从 SSH 注销时,该程序也会立即终止。看来该nohup命令在这种情况下没有任何作用。
我该如何解决这个问题?
我想运行一个批处理脚本:
我是这样写的:
start java -jar "path\selenium-server.jar"
ping -n 5 127.0.0.1 >NUL
"path\Gallio.Echo.exe" "path\MyAssembly.dll"
REM now, how do I stop the background process?
Run Code Online (Sandbox Code Playgroud) 我通过 ssh 进入服务器而不是开始一项工作(例如 rsync),然后我只想能够从服务器注销并让工作顺利进行。但是,如果我只是这样做,rsync ... &我认为它仍然以某种方式连接到 tty,并且当注销时 tty 消失时,工作就会终止。是否有任何(简单)方法可以将进程与 tty 断开连接,以便能够在不终止进程的情况下注销?
您已经有一个正在运行的进程,并且希望将其置于后台运行。
如果您想确保在关闭 ssh 连接后这仍然会运行,您应该怎么做?
注意:在您要做出此决定时,您已经在运行该流程。
我知道这一点Ctrl-Z并且bg会使其在后台运行,但我仍然担心当您关闭 ssh 连接时该进程会被终止。
我正在运行 linux 并且我正在使用后台运行脚本/程序
命令行 &
这在 Solaris 上运行良好,但在我的 Linux 机器(2.6.9-55/Red Hat)上,当原始终端窗口关闭/失去连接时,后台进程停止。我需要什么来改变它,以便它像在 Solaris 上一样工作?