Questions tagged «background-process»

“后台”进程是在“幕后”(即在后台)运行且无需用户干预的计算机进程。使用此类过程的典型任务包括日志记录,系统监视,调度和用户通知。对于有关后台进程的任何问题,请使用此标签。

4
如果我开始过多的后台工作会怎样?
我需要使用Expect脚本在700个网络设备上进行一些工作。我可以按顺序完成它,但是到目前为止,运行时间约为24小时。这主要是由于建立连接所花费的时间以及这些设备(旧设备)的输出延迟。我可以建立两个连接并使它们并行运行,但是我可以推多远呢? 我不认为我可以一次完成所有700个操作,但肯定会有一些限制。我的VM可以管理的telnet连接数量。 如果我确实尝试过像这样的循环来启动其中的700个: for node in `ls ~/sagLogs/`; do foo & done 用 CPU 12个CPU x Intel(R)Xeon(R)CPU E5649 @ 2.53GHz 内存47.94 GB 我的问题是: 所有700个实例能否同时运行? 在服务器达到极限之前,我能走多远? 当达到该限制时,它会只是等待下一次迭代开始foo还是盒子崩溃? 不幸的是,我在公司生产环境中运行,所以我不能完全尝试看看会发生什么。




2
为什么SSH -t不等待后台进程?
为什么ssh -t不等待后台作业完成? 例: ssh user@example 'sleep 2 &' 这可以按预期工作,因为ssh在2秒后返回,而 ssh user@example -t 'sleep 2 &' 不等待sleep完成并立即返回。 谁能解释这背后的原因?有没有办法让ssh -t所有后台进程完成后再返回? 我的用例是使用来启动一个脚本ssh -t,并且该脚本启动了一些后台作业,这些作业应在主脚本完成后仍然存在。随着ssh -t这是不可能的为止。


1
为什么有些程序立即返回外壳程序,而另一些程序直到执行完成才返回外壳程序?
我从《现代操作系统》一书中了解到,运行命令时,外壳程序会创建一个子进程,等待该子进程直到子进程完成执行,然后再等待用户的另一条命令。对于许多类似的程序,确实确实如此gedit。直到我关闭终端才会接受命令gedit。但是,当我打开原子代码编辑器时,即使运行编辑器,shell也会立即返回,准备接受下一条命令。关闭终端不会关闭原子。这是否意味着编辑器不是作为子进程打开的?什么使得这种可能性成为可能? 跑步ps au | grep atom给 <username> 8042 0.0 0.0 15944 2264 pts/1 S+ 00:55 0:00 grep --color=auto atom

3
可靠的后台进程返回码
让我们假设以下bash代码: foo > logfile 2>&1 & foo_pid=$! while ps -p$foo_pid do ping -c 1 localhost done wait $foo_pid if [[ $? == 0 ]] then echo "foo success" fi 是否可以安全地假定$?确实包含的返回码foo而不包含的返回码ping?如果该问题的答案是:“您不能假设这一点。” 那么,如何修改这段代码以确保$?始终包含返回代码foo?

3
Shell脚本等待后台命令
我正在编写脚本,但是我需要一些我找不到解决方法... 我需要在后台“ command1&”中创建命令,然后在脚本中的某个地方等待命令完成之前再执行command2。基本上,我需要这样: 注意:每个命令都在特定目录中运行!在while循环结束时,我的command1创建了4个目录,其中每个目录都运行特定的进程,因此正在运行的进程总数为4 a=1 while [$a -lt 4 ] . command1 #Generates 1 Process a= `export $a +1` done #Wait until the 4 process end and then run the command2 . command2 我已经看到了有关wait带有pid进程号的命令的一些信息,但这也没有用。


4
在后台运行多个nohup命令
得到了两个命令cmd1和cmd2。在这两个中,cmd2需要更长的时间才能完成。需要先运行cmd2,然后再运行cmd1。 尝试通过以下方式运行它们: bash$ (nohup ./cmd2>result2 &) && nohup ./cmd1>result1 & 要么 bash$ (nohup ./cmd2>result2 &) ; nohup ./cmd1>result1 & 但是两次我都可以看到cmd1不等待cmd2完成并且result1被填充。 当两者都应为nohup进程并在后台运行时,如何使cmd1在cmd2之后运行?

2
并行运行命令,并等待一组命令完成后再启动下一个命令
我有包含多个命令的脚本。如何将命令组合在一起运行(我想制作几组命令。在每组中,命令应并行运行(同时)。各组应顺序运行,等待一组完成后再开始运行。下一组)...即 #!/bin/bash command #1 command #2 command #3 command #4 command #5 command #6 command #7 command #8 command #9 command #10 我怎样才能每三个命令运行一次?我试过了: #!/bin/bash { command #1 command #2 command #3 } & { command #4 command #5 command #6 } & { command #7 command #8 command #9 }& …

2
完成的后台工作状态中的“退出2”是什么?
我有一个练习,将一些数据(某些目录的* conf)放入文件中,并且需要在后台进行。我做到了,我想知道输出消息的含义是什么: [A@localhost tests]$ ls -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 & 输入升起此行: [1] 2533 这是什么意思?在其他回车之后,出现另一条消息 [A@localhost tests]$ [1]+ Exit 2 ls --color=auto -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 这是什么意思?什么是“出口2”? 输入检查结果-似乎一切正常。 [A@localhost tests]$ [A@localhost tests]$ ls -l test1_6_conf.txt -rw-rw-r--. 1 A A 2641 Nov 22 14:19 test1_6_conf.txt [A@localhost tests]$ 我正在使用CentOS …


1
为什么“ su -c <command>&”似乎允许命令在后台运行而不挂机
我正在帮助一位同事,他的后台进程间歇性地死了。 我发现他们通过登录服务器并执行以下操作来启动后台进程: su - &lt;user&gt; -c '&lt;command&gt;' &amp; 我大叫“啊哈”。“如果使用“&”启动命令,则退出控制终端时它将挂断。您需要使用诸如nohup之类的方法来实现此目的。确实,此过程需要支持作为守护程序运行,tut tut。 我们测试了上面的命令以证明我的观点,并且...似乎起作用了:当我们退出运行上述命令的终端时,由命令启动的过程并未退出。 command是一个自定义Python脚本,其输出将发送到文件。据我所知,脚本中没有智能化的“守护进程”功能。它不执行在Wikipedia:守护程序(计算):创建页面中列出的作为守护程序运行所需的任何操作。 像这样运行命令的行为符合预期: &lt;command&gt; &amp; exit 在上述情况下,当我们退出终端时,由命令启动的后台进程将退出。 我的问题是这样的: 当我们添加“ su--c&”阻止终端退出时进程退出时,会发生什么情况。我想详细了解控制端子,标准输入和输出等。 这是实现将此命令作为后台进程运行的目标的合理方法。如果不是,为什么呢? 我想在公司内部传播最佳做法,但是我需要能够证明和支持我提出的任何建议。 我也想了解到底发生了什么。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.