a、直接将作业放入到后台(附加 & 符号) robin@SZDB:/tmp> tar -czvf temp.tar.gz tempSYBO2SZ.dbf & [1] 12500 robin@SZDB:/tmp> tempSYBO2SZ.dbf robin@SZDB:/tmp> #此时可进行其它操作,作业一旦完成,会弹出如下的提示 [1]+ Done tar -czvf temp.tar.gz tempSYBO2SZ.dbf robin@SZDB:/tmp> ls -hltr temp* -rwxr-xr-x 1 robin oinstall 490M 2013-05-02 17:48 tempSYBO2SZ.dbf -rw-r--r-- 1 robin oinstall 174M 2013-05-02 17:50 temp.tar.gz b、已经开始执行,但需要放入后台(使用[ctrl]+z) robin@SZDB:/tmp> tar -czvf temp2.tar.gz tempSYBO2SZ.dbf tempSYBO2SZ.dbf [1]+ Stopped tar -czvf temp2.tar.gz tempSYBO2SZ.dbf robin@SZDB:/tmp> jobs [1]+ Stopped tar -czvf temp2.tar.gz tempSYBO2SZ.dbf #下面同时发布两个作业,并且在中途按下[ctrl]+z以便将当前作业提交到后台 robin@SZDB:/tmp> find /u02 -type f -size +100000k robin@SZDB:/tmp> find / -type f -size +100000k #再次查看当前的jobs时,jobs管理器里出现了3个处于stopp状态的job robin@SZDB:/tmp> jobs [1] Stopped tar -czvf temp2.tar.gz tempSYBO2SZ.dbf [2]- Stopped find / -type f -size +100000k [3]+ Stopped find /u02 -type f -size +100000k robin@SZDB:/tmp> jobs -l #使用-l参数查看当前shell下所有的作业以及对应的job number,进程pid [1] 32682 Stopped tar -czvf temp2.tar.gz tempSYBO2SZ.dbf [2]- 32687 Stopped find /u02 -type f -size +100000k [3]+ 32707 Stopped find / -type f -size +100000k #下面通过pid可以查看到对应的进程信息 robin@SZDB:/tmp> ps -ef | grep 32707 | grep -v grep robin 32707 32095 0 09:48 pts/1 00:00:00 find / -type f -size +100000 robin@SZDB:/tmp> tty #当前终端的信息为pts/1 /dev/pts/1 #打开另外一个终端 robin@SZDB:~> tty /dev/pts/3 robin@SZDB:~> jobs #此时可以看到jobs命令无任何返回 robin@SZDB:~> ps -ef | grep 32707 | grep -v grep #仅仅根据进程id可以找到对应的作业 robin 32707 32095 0 09:48 pts/1 00:00:00 find / -type f -size +100000 #由上可知,对于当前shell下的jobs,仅当前shell(终端)可见 c、将后台作业切换到前台(fg命令) robin@SZDB:/tmp> fg #省略Job number的情形,则将缺省的job切换到前台 find / -type f -size +100000k /u02/database/old/CNMMBOBK/undo/undotbsCNMMBOBK.dbf ...... [ctrl]+z robin@SZDB:/tmp> fg %1 tar -czvf temp2.tar.gz tempSYBO2SZ.dbf robin@SZDB:/tmp> jobs [2]- Stopped find /u02 -type f -size +100000k [3]+ Stopped find / -type f -size +100000k d、运行后台中暂停的作业(bg命令) #前面有2个job处于stopped状态,现在我们让其在后台运行,直接输入bg命令则缺省的job继续运行,否则输入job编号,运行指定的job robin@SZDB:/tmp> bg 2 #输入bg 2之后,可以看到原来的命令后被追加了& [2]- find /u02 -type f -size +100000k & robin@SZDB:/tmp> jobs [2]- Running find /u02 -type f -size +100000k & [3]+ Stopped find / -type f -size +100000k e、移除指定的作业n(kill) robin@SZDB:/tmp> jobs [3]+ Stopped find / -type f -size +100000k robin@SZDB:/tmp> kill -9 %3 #强制终止job 3,注意,此处的%不可省略 robin@SZDB:/tmp> jobs [3]+ Killed find / -type f -size +100000k robin@SZDB:/tmp> jobs #kill -9 表明强制终止指定的Job,-15则表明是正常终止指定的job。 kill -l 则列出kill能够使用的所有信号 #对于上述命令的详细帮助,使用 man command来获取帮助信息 f、带参shell脚本的后台处理 #下面是一个测试用的shell脚本 robin@SZDB:~/dba_scripts/custom/bin> more echo_time.sh #!/bin/bash SID=$1 sqlplus -Sscott/tiger@$1<<EOF select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') today from dual; begin dbms_lock.sleep(300); end; / select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') today from dual; exit; EOF exit #直接执行带参的shell脚本 # Author : Robinson # Blog :http://blog.csdn.net/robinson_0612 robin@SZDB:~/dba_scripts/custom/bin> ./echo_time.sh CNMMBO TODAY ------------------- 2013-05-03 11:07:48 [1]+ Stopped ./echo_time.sh CNMMBO #按下[ctrl]+z将其切换到后台 robin@SZDB:~/dba_scripts/custom/bin> jobs [1]+ Stopped ./echo_time.sh CNMMBO robin@SZDB:~/dba_scripts/custom/bin> kill -9 %1 #强制终止该job [1]+ Stopped ./echo_time.sh CNMMBO robin@SZDB:~/dba_scripts/custom/bin> jobs #此时该job已经被标记为killed [1]+ Killed ./echo_time.sh CNMMBO robin@SZDB:~/dba_scripts/custom/bin> ./echo_time.sh CNMMBO & #将shell脚本参数之后跟 &符号即将job放入到后台 [1] 2233 robin@SZDB:~/dba_scripts/custom/bin> #此时依旧可以看到有输出,但可以继续后续操作 TODAY ------------------- 2013-05-03 11:08:25 robin@SZDB:~/dba_scripts/custom/bin> jobs [1]+ Running ./echo_time.sh CNMMBO & robin@SZDB:~/dba_scripts/custom/bin> ./echo_time.sh CNMMBO >temp.log 2>&1 & #最佳的办法是直接将其输出到日志文件 [2] 2256 robin@SZDB:~/dba_scripts/custom/bin> jobs [1]- Running ./echo_time.sh CNMMBO & [2]+ Running ./echo_time.sh CNMMBO >temp.log 2>&1 & #下面来查看日志,日志中的两次查询正好相差5分钟 robin@SZDB:~/dba_scripts/custom/bin> more temp.log TODAY ------------------- 2013-05-03 11:09:24 PL/SQL procedure successfully completed. TODAY ------------------- 2013-05-03 11:14:24 |