文章目录
- 1. & 符号的作用
- 2. 后台进程的管理
1. & 符号的作用
Linux 终端命令的末尾加上一个 &
符号表示将这个任务放到后台去执行,例如以下命令表示将复制任务放到后台执行:
cp -R original/dir/ backup/dir/ &
对于需要长时间执行的任务,&
符号可以使当前终端窗口不被占用,这样就能继续在同一个终端上工作,甚至关闭终端窗口也不会影响任务的正常执行。不过需要注意的是,如果要求这个任务输出内容到标准输出中(例如 echo
或 ls
),即便使用了 &
,也会等待这些输出任务在前台运行完毕
当使用 &
将一个进程放置到后台运行的时候,Bash 会提示这个进程的进程 ID。在 Linux 系统中运行的每一个进程都有一个唯一的进程 ID,我们可以使用进程 ID 来暂停、恢复或者终止对应的进程,因此进程 ID 是非常重要的
2. 后台进程的管理
将任务置入后台执行后,也可以对其进行管理,以下是相关命令
-
jobs
jobs 命令可以显示当前终端正在运行的进程,包括前台运行和后台运行的进程。它对每个正在执行中的进程任务分配了一个序号(这个序号不是进程 ID),可以使用这些序号来引用各个进程任务$ jobs [1] + running ./sshproxy/sshproxy -remoteHost=10.0.20.99 -remotePort=3306 -localPort=3600
-
fg
fg 命令可以将后台运行的进程任务放到前台运行,这样可以比较方便地进行交互。根据 jobs 命令提供的进程任务序号,再在前面加上%
符号,就可以把相应的进程任务放到前台运行, 如果这个进程任务是暂停状态,fg 命令会将它启动起来// 将上面序号为 1 的 cp 任务放到前台运行, $ fg %1 [1] + 15000 running ./sshproxy/sshproxy -remoteHost=10.0.20.99 -remotePort=3306 -localPort=3600
-
当前耗时较长的任务已经在终端中前台运行的时候,使用
ctrl+z
组合键可以将前台运行的任务暂停,仅仅是暂停,而不是将任务终止
。当使用fg
或者bg
命令将任务重新启动起来的时候,任务会从被暂停的位置开始执行
-
bg
bg 命令会将任务放置到后台执行,类似于&
符号的作用,但是需注意该命令的执行前提是已经有任务存在,而这可能需要配合ctrl+z
组合键将前台正在运行的任务暂停。如果任务是暂停状态,也会被启动起来。终止后台正在执行的任务可以通过kill -15 %1
来完成,类似bg
命令$ bg %1 [1] + 15000 continued ./sshproxy/sshproxy -remoteHost=10.0.20.99 -remotePort=3306 -localPort=3600
以上几个命令只能在启动任务的同一个终端里使用,如果启动任务的终端被关闭了,或者切换到了另一个终端,就需要使用 ps
命令来筛选进程号,然后使用kill
命令来控制进程任务,常用参数表如下
kill 命令 | 功能 |
---|---|
kill -1 | HUP (hang up) 挂起 |
kill -2 | INT (interrupt) 中断 |
kill -3 | QUIT (quit) 退出 |
kill -6 | ABRT (abort) 放弃 |
kill -9 | KILL (non-catchable, non-ignorable kill) 强制杀死 |
kill -15 | TERM (software termination signal) 结束 |