标签: background-process

如何运行可以在终端关闭后继续存在的命令?

有时我想开始一个过程并忘记它。如果我从命令行启动它,就像这样:

redshift
Run Code Online (Sandbox Code Playgroud)

我无法关闭终端,否则它会终止进程。我可以以可以关闭终端而不终止进程的方式运行命令吗?

command-line process terminal background-process

398
推荐指数
9
解决办法
55万
查看次数

如何在shell脚本中获取最后执行的命令的pid?

我想要一个这样的shell脚本:

my-app &
echo $my-app-pid
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何获取刚刚执行的命令的pid。

我知道我可以只使用jobs -p my-app命令来grep pid。但是如果我想多次执行shell,这个方法就行不通了。因为工作规范是不明确的。

shell bash process background-process

311
推荐指数
2
解决办法
39万
查看次数

如何终止后台进程?

我已经在后台使用&. 突然停止下载。我想终止它的进程,然后重新运行命令。我怎样才能终止它?

我还没有关闭它的外壳窗口。但正如你所知,它不会停止使用Ctrl+CCtrl+ Z

command-line process kill job-control background-process

264
推荐指数
7
解决办法
73万
查看次数

在 SSH 会话断开连接后保持进程运行

有时我想在回家之前启动一个长时间运行的进程,所以我创建了一个到服务器的 SSH 会话来启动这个进程,但是我想关闭我的笔记本电脑回家,晚饭后,我想检查我在下班前开始的过程。我怎样才能用 SSH 做到这一点?我的理解是,如果您中断 SSH 连接,您也会中断服务器上的登录会话,从而终止长时间运行的进程。

command-line ssh background-process

262
推荐指数
10
解决办法
24万
查看次数

如何暂停并将后台进程置于前台

我有一个最初在前台运行的进程。我通过Ctrl+暂停Z,然后通过 恢复其在后台运行bg <jobid>

我想知道如何挂起在后台运行的进程?

如何将后台进程带到前台?

编辑:

进程输出到stderr,那么我应该如何fg <jobid>在进程输出到终端时发出命令?

shell job-control background-process

227
推荐指数
3
解决办法
51万
查看次数

运行命令而不让我等待

在 CLI 上,有时我输入的命令需要一段时间才能完成,有时我知道什么时候会发生。我对 Linux 中的“背景”等有些困惑。

告诉 CLI 我不想等待的最常见(或用户友好的方式)是什么,请立即给我回提示。如果它能给我一个进度条或只是忙碌的微调器,那就太好了!

command-line background-process

159
推荐指数
7
解决办法
55万
查看次数

如果您从进程中 ^Z ,它会“停止”。怎么切换回来?

我不小心“停止”了我的telnet进程。现在我既不能“切换回”它,也不能杀死它(它不会响应kill 9292992929 是进程 ID。)

所以,我的问题是,如果你在 linux 命令行上有一个停止的进程,你如何切换回它,或者杀死它,而不必求助于kill -9

command-line process jobs background-process

120
推荐指数
3
解决办法
17万
查看次数

如何以优雅的方式永远什么都不做?

我有一个程序可以生成有用的信息,stdout但也可以从stdin. 我想将其标准输出重定向到一个文件,而不在标准输入上提供任何内容。到目前为止,很好:我可以做到:

program > output
Run Code Online (Sandbox Code Playgroud)

并且不要在 tty 中做任何事情。

但是,问题是我想在后台执行此操作。如果我做:

program > output &
Run Code Online (Sandbox Code Playgroud)

程序将被挂起(“挂起(tty 输入)”)。

如果我做:

program < /dev/null > output &
Run Code Online (Sandbox Code Playgroud)

程序立即终止,因为它到达 EOF。

似乎我需要的是将program某些内容导入到无限期不执行任何操作且不读取的内容中stdin。以下方法有效:

while true; do sleep 100; done | program > output &
mkfifo fifo && cat fifo | program > output &
tail -f /dev/null | program > output &
Run Code Online (Sandbox Code Playgroud)

然而,这一切都非常难看。有是一种优雅的方式,使用标准的Unix工具,以“什么都不做,无限期”(意译man true)。我怎么能做到这一点?(我这里优雅的主要标准:没有临时文件;没有忙碌等待或定期唤醒;没有异国情调的实用程序;尽可能短。)

bash shell-script background-process stdout stdin

95
推荐指数
6
解决办法
5万
查看次数

如何终止使用 -f 选项启动的 SSH 会话(在后台运行)

我很迷茫。从手册页:

 -f      Requests ssh to go to background just before command execution.
Run Code Online (Sandbox Code Playgroud)

使用该-f选项启动 SSH 后,我有一个工作隧道。但是用完之后不知道怎么和它进一步交互。例如,当我完成它时,我无法关闭 SSH 隧道

我知道的常用方法不起作用。例如,不jobs返回任何内容。该~命令无法识别(无论如何我不知道如何使用它)。

但是,pgrep告诉我 SSH 隧道仍在运行(在我关闭终端等之后)。我如何与它互动?我该如何关闭它?

ssh ssh-tunneling background-process

87
推荐指数
7
解决办法
11万
查看次数

运行多个命令并将它们作为一个在 bash 中杀死

我想在单个 shell 上运行多个命令(进程)。都有自己的连续输出,不停歇。在后台运行它们Ctrl- C。我想将它们作为单个进程(子shell,也许?)运行,以便能够用Ctrl-停止所有这些进程C

具体来说,我想使用mocha(监视模式)运行单元测试,运行服务器并运行一些文件预处理(监视模式),并在一个终端窗口中查看每个测试的输出。基本上我想避免使用一些任务运行器。

我可以通过在后台运行进程 ( &)来实现它,但是我必须将它们放到前台来阻止它们。我想要一个包装它们的过程,当我停止这个过程时,它会停止它的“孩子”。

command-line bash process background-process process-groups

70
推荐指数
3
解决办法
5万
查看次数