Linux 前后台作业切换及脱机管理(2)

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 -S scott/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  :

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/19929.html