我是一个新的 Linux 命令行用户。如何在后台启动或运行命令以便立即访问命令提示符?
不按顺序调度的命令称为后台进程。您无法在屏幕上看到后台进程。例如,Apache httpd 服务器在后台运行以提供网页服务。您可以将 shell 脚本或任何命令放在后台。
[请勿打印]
教程详情 | |
---|---|
难度级别 | 简单的 |
根权限 | 不 |
要求 | bash/ksh Linux |
美东时间。阅读时间 | 3分钟 |
[/不打印]
句法
&您可以通过在命令行末尾附加 来将任务(例如命令或脚本)置于后台。& 运算符将命令置于后台并释放终端。在后台运行的命令称为作业。您可以在后台命令运行时键入其他命令。语法是:
命令 & 脚本名称& /路径/到/命令arg1 arg2 & 命令- 1 | 命令- 2 arg1和 命令- 1 | command- 2 -arg1 -arg2 >/路径/到/输出&
例子
将 ls 命令置于后台,输入:
$ ls *.py > output.txt &
通过在命令行末尾添加 '&' 将以下 find 命令置于后台:
寻找。-iname "*.mp3" > myplaylist.txt &
输出示例:
图01:Linux后台作业运行中(点击放大)
如何查看后台运行的作业?
键入以下命令:
jobs
示例输出:
[1]- 运行 find / -iname "*.c" 2> /dev/null > /tmp/output.txt & [2]+ 运行 grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &
在哪里,
- [1] 和 [2] 是作业 IDS。
除了正常信息之外,要查看作业 ID 的进程 ID,请传递选项-l:
jobs -l
示例输出:
[1]- 7307 运行 find / -iname "*.c" 2> /dev/null > /tmp/output.txt & [2]+ 7324 运行 grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt &
要仅查看进程 ID,请输入:
jobs -p
示例输出:
7307 7324
如何终止后台运行的作业?
使用kill 命令可以优雅地或强制地终止进程。语法是:
杀死PID 杀死-15 PID 杀死-9 PID Killall 进程名称-此处 Killall -15 进程名称-此处 Killall -9 进程名称-此处
有关详细信息,请参阅如何在 Linux 操作系统下使用 Killall 命令。
如何将后台运行的进程调到前台?
语法为:
%JOB-ID
OR首先,使用jobs 命令
fg JOB-ID
列出当前作业,输入:
示例输出:
jobs -l
[1]- 7307 运行 find / -iname "*.c" 2> /dev/null > /tmp/output.txt & [2]+ 7324 运行 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 == 作业 id(使用jobs命令查看作业 id)。。
也可以看看:
- Linux shell 脚本教程中的将作业置于后台。
- 命令示例页面:jobs 命令、bg 命令和fg 命令
- 手册页: