Linux:在后台启动命令
我是 Linux 命令行新手。如何在后台启动或运行命令以便立即访问命令提示符?
不按顺序调度的命令称为后台进程。您无法在屏幕上看到后台进程。例如,Apache httpd 服务器在后台运行以提供网页服务。您可以将 shell 脚本或任何命令放在后台。
[donotprint]
[/donotprint]
不按顺序调度的命令称为后台进程。您无法在屏幕上看到后台进程。例如,Apache httpd 服务器在后台运行以提供网页服务。您可以将 shell 脚本或任何命令放在后台。
[donotprint]
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Bash/ksh Linux |
预计阅读时间 | 3 分钟 |
句法
您可以通过在命令行末尾添加一个来将任务(例如命令或脚本)置于后台&。& 运算符将命令置于后台并释放您的终端。在后台运行的命令称为作业。您可以在后台命令运行时键入其他命令。语法为:
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。
除了常规信息之外,要查看 JOB 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 &
要仅查看进程 ID,请输入:
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
有关详细信息,请参阅如何在 Linux 操作系统下使用 killall 命令。
如何将后台运行的进程移到前台?
语法是:
%JOB-ID
OR首先,使用jobs 命令
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
grep 命令作业现在正在后台运行。
所有有用命令的摘要
描述 | 命令 |
---|---|
查看哪些作业仍在运行 | jobs jobs -l ps aux |
将命令/脚本置于后台 | command & /path/to/command & /path/to/script arg1 & |
将后台作业带到前台 | fg n %n |
将作业发送到后台而不取消它 | bg n %n & |
注意:n == Job id(使用jobs命令查看job id)。