Questions tagged «background-process»

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




5
如何挂起后台进程并将其置于前台
我有一个最初在前台运行的进程。我先按Ctrl+ 暂停Z,然后按继续在后台运行bg <jobid>。 我想知道如何暂停在后台运行的进程? 如何使后台进程成为前台? 编辑: 该进程输出到stderr,那么fg <jobid>当该进程输出到终端时我应该如何发出命令?

8
运行命令而无需等待
在CLI上,有时我键入的命令需要一段时间才能完成,有时我知道何时会发生。我对Linux的“后台”等感到有些困惑。 告诉CLI我不想等待的最常见(或用户友好方式)是什么,请立即将提示信息还给我。而且,如果它可以为我提供进度条或只是忙碌的忙碌者,那就太好了!

9
如何永远以优雅的方式无所事事?
我有一个程序,可以在上产生有用的信息,stdout但也可以读取stdin。我想将其标准输出重定向到文件,而不在标准输入上提供任何内容。到目前为止,一切都很好:我可以做到: program > output 而且不要在tty中做任何事情。 但是,问题是我想在后台执行此操作。如果我做: program > output & 程序将被挂起(“暂停(tty输入)”)。 如果我做: program < /dev/null > output & 该程序立即终止,因为它达到了EOF。 似乎我需要的是插入program不确定的时间内不做任何事情并且不读取的内容stdin。以下方法起作用: while true; do sleep 100; done | program > output & mkfifo fifo && cat fifo | program > output & tail -f /dev/null | program > output & 但是,这一切都非常丑陋。有有是一种优雅的方式,使用标准的Unix工具,到“什么都不做,无限期”(意译man …


5
运行多个命令并将其作为bash中的一个杀死
我想在单个shell上运行多个命令(进程)。它们都有自己的连续输出并且不会停止。在后台运行它们会中断Ctrl- C。我想将它们作为单个进程(可能是subshel​​l)运行,以便能够使用Ctrl- 停止所有进程C。 具体来说,我想使用mocha(监视模式)运行单元测试,运行服务器并运行一些文件预处理(监视模式),并在一个终端窗口中查看每个单元的输出。基本上,我想避免使用某些任务运行程序。 我可以通过在后台(&)中运行进程来实现这一点,但随后必须将其置于前台以停止它们。我希望有一个包装它们的过程,当我停止该过程时,它将停止其“子代”。

6
如何终止以-f选项启动的SSH会话(在后台运行)
我对此很迷茫。从手册页: -f Requests ssh to go to background just before command execution. 使用该-f选项启动SSH后,我的隧道可以正常工作。但是,在我使用完它之后,我不知道如何进一步与它交互。例如,完成后无法关闭SSH隧道。 我知道的通常方法不起作用。例如,jobs什么也不返回。该~命令无法识别(无论如何,我也不知道确切如何使用它)。 但是,pgrep告诉我SSH隧道仍在运行(在关闭终端等之后)。我如何与之互动?我该如何关闭?

7
执行远程命令,完全脱离ssh连接
我有2台计算机,localpc并且remoteserver。 我需要localpc在上执行一些命令remoteserver。它需要做的一件事情就是启动一个运行数小时的备份脚本。我希望命令localpc“启动”,然后完全在上运行remoteserver,就像localpc从来没有出现过一样。 到目前为止,这是我所做的: remoteserver 包含具有以下脚本: /root/backup.sh localpc 按计划运行: ssh root@remoteserver 'nohup /root/backup.sh' & 我这样做正确吗?有一个更好的方法吗?这样我会遇到麻烦吗?


3
永久后台ssh连接以创建反向隧道:正确的方法是什么?
相关问题:启动从服务器到客户端的ssh连接 那里的答案对我很有帮助,此命令可以满足我的需要: ssh -R 2225:localhost:22 loginOfServerWithPublicIP@publicIP 因此,我编写了脚本来始终重新连接: #!/bin/bash while true; do echo "try to connect..." ssh -o ServerAliveInterval=240 -R 2225:localhost:22 user@host echo "restarting in 5 seconds.." sleep 5 done 并将其添加到中/etc/crontab。但是我发现,只要我从shell中“手动”执行它,它就会起作用,但是如果被cron调用,ssh将连接并立即完成。(因此,上面的脚本一直都在重新连接) 从中man ssh,我发现对于后台连接,我应该使用-nkey 来调用它,但这没有帮助。然后,我只是四处寻找类似的脚本,发现如果调用tail -f something,它可以工作,即一些“ neverending”命令,所以我刚刚创建了一个空文件/tmp/dummy_file,现在我的ssh命令如下所示: ssh -o ServerAliveInterval=240 -R 2225:localhost:22 -n user@host tail -f /tmp/dummy_file 现在可以使用!但是,这种解决方案似乎有点丑陋,而且我还不太了解这种行为的实际原因。只是偶然,我尝试调用bash而不是tail -f(bash我也觉得它是“无休止的”命令)而不是调用。 因此,任何人都可以解释这种现象吗?创建后台ssh连接以保持反向ssh隧道正常的正确方法是什么?

1
GNU parallel vs&(我的意思是背景)vs xargs -P
我对.sh使用脚本在脚本中运行一组任务的区别或优势(如果有)感到困惑GNU parallel 例如,Ole Tange的答案: parallel ./pngout -s0 {} R{} ::: *.png 而不是说遍历它们将它们置于背景中&。 例如弗罗斯特斯的答案: #copied from the link for illustration for stuff in things do ( something with stuff ) & done wait # for all the something with stuff 简而言之,它们只是在语法上还是实际上在不同?如果实际上不同,我什么时候应该使用它们?

5
我正在使用`&`:为什么该进程未在后台运行?
我知道我可以追加&命令以在后台运行该过程。 我正在SSH进入Ubuntu 12.04机器并使用$python program.py &- 运行python程序,但是当我关闭终端窗口时,我收到一条消息,说关闭终端会终止正在运行的进程。 为什么是这样?我正在使用&符在后台运行该过程。无论我是否使用SSH,如何才能使其运行?

4
并行执行四个任务...我该怎么做?
我在目录上有一堆PNG图片。我有一个名为pngout的应用程序,可以运行它来压缩这些图像。该应用程序由我执行的脚本调用。问题在于此脚本一次执行一个,如下所示: FILES=(./*.png) for f in "${FILES[@]}" do echo "Processing $f file..." # take action on each file. $f store current file name ./pngout -s0 $f R${f/\.\//} done 一次只处理一个文件,需要很多时间。运行此应用程序后,我看到CPU仅为10%。因此,我发现可以将这些文件分为4个批次,将每个批次放入一个目录中,并从4个终端窗口,4个进程中触发4个,因此我同时拥有4个脚本实例,同时处理这些图像和工作需要1/4的时间。 第二个问题是我浪费了时间分割图像和批处理并将脚本复制到四个目录,打开4个终端窗口,等等。 如何用一个脚本执行而无需划分任何内容? 我的意思是两件事:首先,我如何从bash脚本中向后台启动进程?(只需添加&到末尾?)第二:在发送第四个任务后如何停止将任务发送到后台,并让脚本等待任务结束?我的意思是说,只是在一个任务结束时将一个新任务发送到后台,同时始终保持4个任务并行?如果我不这样做,则循环会将大量任务发送到后台,并且CPU会阻塞。

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.