Linux:在后台启动命令

时间:2020-01-09 10:41:20  来源:igfitidea点击:

如何在后台启动或运行命令,以便可以立即访问命令提示符?

非连续调度的命令称为后台进程。您无法在屏幕上看到后台进程。
例如,Apache httpd服务器在后台运行以提供网页。您可以将Shell脚本或任何命令放在后台。

语法

您可以通过在命令行末尾追加一个"&"将任务(例如命令或脚本)放在后台。

&运算符将命令放在后台,并释放终端。
在后台运行的命令称为作业。
您可以在后台命令运行时执行其他命令。
语法为:

command &
script-name &
/path/to/command arg1 arg2 &
command-1 | command-2 arg1 &
command-1 | command-2 -arg1 -arg2 >/path/to/output &

例子

将ls命令放在后台,执行:

$ ls *.py > output.txt &

通过在命令行末尾添加&,将以下find命令置于后台:

find . -iname "*.mp3" > myplaylist.txt &

如何查看在后台运行的任务?

执行以下命令:

jobs

输出示例:

[1]-  Running                 find / -iname "*.c" 2> /dev/null > /tmp/output.txt &
[2]+  Running                 grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &

其中:

  • [1]和[2]是作业IDS。

要查看除常规信息外的作业ID的进程ID,请通过-l选项:

jobs -l

输出示例:

[1]-  7307 Running                 find / -iname "*.c" 2> /dev/null > /tmp/output.txt &
[2]+  7324 Running                 grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &

要仅查看进程标识,请执行:

jobs -p

输出示例:

7307
7324

如何取消后台运行的作业?

使用kill命令可以优雅地或强制地终止进程。
语法为:

kill PID
kill -15 PID
kill -9 PID
killall process-Name-Here
killall -15 process-Name-Here
killall -9 process-Name-Here

如何将后台运行的进程置于前台?

语法为:

%JOB-ID

或者

fg JOB-ID

首先,使用作业命令列出当前作业,执行:

jobs -l

输出示例:

[1]-  7307 Running                 find / -iname "*.c" 2> /dev/null > /tmp/output.txt &
[2]+  7324 Running                 grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &

要将作业ID#2置于前台,请执行:

%2

或使用fg命令:

fg 2

输出示例:

grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt

要在后台发送该作业,请按CTRL-Z,即在按住CTRL键的同时按z键。
这将暂停当前的前台作业。
执行以下命令以在后台发回作业:

%2 &

或使用bg命令:

bg