我尝试使用 ^Z 发送应用程序到后台(然后用于fg
恢复),但我注意到它显示“已停止”,并且在另一个终端中监视 htop 时,一切都冻结了。
有没有办法可以在不停止/暂停进程的情况下发送到后台?
答案1
执行后台作业
在命令中附加一个与号 (&) 将在后台运行作业。
例如,当您执行一个可能需要很长时间执行的 find 命令时,您可以将其放在后台,如下所示。以下示例查找根文件系统下在过去 24 小时内更改的所有文件。
find / -ctime -1 > /tmp/changed-file-list.txt &
使用 CTRL-Z 和 bg 命令将当前前台作业发送到后台
您可以将已经运行的前台作业发送到后台,如下所述:
按 CTRL+Z 将暂停当前的前台作业。执行bg
以使该命令在后台执行。例如,如果您忘记在后台执行某个作业,则无需终止当前作业并启动新的后台作业。相反,应暂停当前作业并将其置于后台,如下所示。
find / -ctime -1 > /tmp/changed-file-list.txt
[CTRL-Z]
[2]+ Stopped find / -ctime -1 > /tmp/changed-file-list.txt
bg
使用 jobs 命令查看所有后台作业
您可以使用命令作业列出后台作业。 jobs 命令的示例输出是
jobs
[1] Running bash download-file.sh &
[2]- Running evolution &
[3]+ Done nautilus .
使用 fg 命令将作业从后台转移到前台
您可以使用命令将后台作业带到前台fg
。当不带参数执行时,它将把最近的后台作业带到前台。
弗格
如果您有多个后台作业,并且希望将某个作业带到前台,请执行 jobs 命令,该命令将显示作业 ID 和命令。
在以下示例中,fg %1 会将 job#1(即 download-file.sh)带到前台。
jobs
[1] Running bash download-file.sh &
[2]- Running evolution &
[3]+ Done nautilus .
# fg %1
使用kill % 杀死特定的后台作业
如果您想终止特定的后台作业使用,请终止 %job-number。例如,要终止作业 2,请使用
kill %2
以上所有内容均摘自于此关联。