Linux是支持多任务运行的。

而且,可以将任务丢入后台运行,例如:

[root@www ~]# tar -zpcf /tmp/etc.tar.gz /etc &

[1] 8400 <== [job number] PID

当tar指令完成后,会显示[1]+ Done tar -zpcf /tmp/etc.tar.gz /etc

在背景当中执行的指令,如果有 stdout 及 stderr 时,他的数据依旧是输出到屏幕上面 的, 所以,我们会无法看到提示字符,当然也就无法完好的掌握前景工作。同时由于是背景工作的tar,此时你怎么按下 [ctrl]+c 也无法停止屏幕被搞的花花绿绿的!所以啰,最佳的状况就是利用数据流重导向, 将输出数据传送至某个档案中。举例来说,我可以这样做:

 [root@www ~]# tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 & 

[1] 8429

这样就能数据流重导向啦,避免影响当前作业。

如果在当前指令界面,按ctrl+z,则当前指令会进入后台且状态会变为stop状态看,例如:

[root@www ~]# vi ~/.bashrc

# 在 vi 的一般模式下,按下 [ctrl]-z 这两个按键,则会提示:[1]+ Stopped vim ~/.bashrc,其中的“+号”表示是最后丢入后台的程序,如果前台用fg指令,则有+号的程序会被调用。

fg指令,将后台程序送到前台来

bg指令,将前台程序放到后台去执行,与ctrl+z不同之处是,被bg的指令在后台状态是running

nobup指令,脱机后保持程序在终端机继续执行,其与at的区别,at是将程序放入系统背景中执行,与终端机无关。

kill指令,给程序发送信号,用以启动或结束程序,常见kill -1 启动/-9 强制结束 -15 正常流程结束程序