而且,可以将任务丢入后台运行,例如:
[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 正常流程结束程序
多任务运行 bg / fg / nohup / kill - 笔记1
原文地址:http://blog.51cto.com/legendland/2054374