Linux 命令中的 & 符号

1. & 符号的作用

Linux 终端命令的末尾加上一个 & 符号表示将这个任务放到后台去执行,例如以下命令表示将复制任务放到后台执行:

cp -R original/dir/ backup/dir/ &

对于需要长时间执行的任务,&符号可以使当前终端窗口不被占用,这样就能继续在同一个终端上工作,甚至关闭终端窗口也不会影响任务的正常执行。不过需要注意的是,如果要求这个任务输出内容到标准输出中(例如 echols),即便使用了 &,也会等待这些输出任务在前台运行完毕

当使用 &将一个进程放置到后台运行的时候,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) 结束
发布了97 篇原创文章 · 获赞 88 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45505313/article/details/103749523
今日推荐