linux前后台作业控制

1前后台作业

前台作业:通过终端启动,运行时一直占用终端
后台作业:通过终端启动,但启动后转到后台运行

让前台作业运行于后台的方法

对于尚未运行的作业,在命令后面加上 &
对于已经在前台运行的作业,按CTRL+Z键

若想查看当前终端前后台所有作业,使用jobs命令
后台运行sleep和ping命令,用jobs命令可查出

 ⚡ root@v-pc  /home/v  man jobs
 ⚡ root@v-pc  /home/v  ping www.baidu.com > /dev/null &
[1] 2674
 ⚡ ⚙ root@v-pc  /home/v  sleep 10000 &
[2] 2692
 ⚡ ⚙ root@v-pc  /home/v  jobs
[1]  - running    ping www.baidu.com > /dev/null
[2]  + running    sleep 10000

若想将后台命令转到前台,可以用fg命令: fg 后面跟上jobs中所列出的后台命令编号,且编号前要加一个%号
此命令会把前一个的ping命令转向前台

fg %1

若要把前台命令转移到后台,可以用bg命令,用法与fg相同

nohup与screen

后台命令虽然在后台运行,但如果关闭他所在的终端,命令仍然会停止运行,若想防止此现象发生,就要剥离后台命令与其终端的关系,需要用到nohup或者screen

screen

直接在终端输入screen,就会打开一个screen,之后再在此终端下运行的命令,即使终端被关闭,命令也会照常运行
通过pstree命令看出ping(3382)此时正在运行

 │                ├─klauncher(1023)─┬─{klauncher}(1029)
           │                │                 └─{klauncher}(1030)
           │                ├─msm_kde_notifie(1113)─┬─{msm_kde_notifie}(1115)
           │                │                       └─{msm_kde_notifie}(1120)
           │                ├─octopi-notifier(1121)─┬─{octopi-notifier}(1135)
           │                │                       └─{octopi-notifier}(1136)
           │                └─yakuake(1137)─┬─zsh(3237)───su(3264)───zsh(3265)─┬─ping(3382)
           │                                │                                  └─pstree(3439)

关闭当前终端,重新开一个终端并使用pstree命令发现依然在运行

├─screen(3601)───zsh(3602)───ping(3382)

nohup

与screen功能一样,在命令前面加一个nohup,关闭终端后命令依旧在运行

nohup ping www.baidu.com &> /dev/null &

若不使用重定向,则nohup会自动在当前文件夹下创建一个nohup.out文件,用来储存命令的标准输出

你可能感兴趣的:(linux前后台作业控制)