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文件,用来储存命令的标准输出