有时候一个脚本需要输入提示信息才能执行下去,这样就没发放到后台执行了。
那如何将已经运行的进程放到后台执行呢?
我拿一个例子给大家说明下,按照这几步做下.
1.[root@test7 wangzm]# tcsh
2.这是一个脚本
[root@test7 ~]# cat /home/wangzm/aa.sh
#/bin/sh
for x in `cat aa`
do
sleep 2
echo "$x"
echo "$x" >>bb
done
3.执行该脚本,输出如下的内容
[root@test7 wangzm]# sh aa.sh
a
a
a
4.Ctrl+z 把该进程挂起
[1]+ Stopped ./aa.sh
5jobs命令来查询它的作业号
[root@test7 wangzm]# jobs
[1]+ Stopped ./aa.sh
6.bg 1 把进程放到后台去执行
7.把session关掉,重新登陆,查看该进程还存在
[root@test7 ~]# fuser /home/wangzm/aa.sh
/home/wangzm/aa.sh: 3091
注意的地方是,因为只是把进程放到后台执行,如果停掉session,进程就不存在了。所以我门
在之前执行tcsh或者csh,这样关掉session进程就不会挂掉了。
fg 是将挂起的进程重新放回前台
=====================================================
第二种方法
[root@panta-service ~]# find / -name aaaaaaaaaaaaaaaaa
ctrl+z 挂起
jobs查看作业号
bg 1 放到后台
disown -h %1 这样之后关掉session进程还存在.
disown是bash内部命令,nohup是外部命令
disown跟bg,fg一样是针对job进行操作,nohup是针对命令操作
disown -h 和nohup一样,在退出bash后,把进程的控制权都交给init
=====================================================
参考文挡
阅读(5054) | 评论(0) | 转发(0) |