Chinaunix
标题:
指定时间段让特定进程sleep
[打印本页]
作者:
初识orcl
时间:
2013-10-31 10:10
标题:
指定时间段让特定进程sleep
我现在有一个需求,在指定的时间内,让给定的进程成sleep状态;
现在知道获得进程号的命令 ps -ef|grep aaa|awk '{print $2}'
以及sleep
直接用shell是否可以实现,还是需要用C实现
作者:
rdcwayx
时间:
2013-10-31 10:23
本帖最后由 rdcwayx 于 2013-10-31 12:23 编辑
怎么样的进程算是sleep 状态?怎么个sleep 状态?
给个思路, 如果进程是个脚本,加个自动检测,判断:如果有/tmp/abc.lck 文件,就进入sleep, 没有就继续
作者:
关阴月飞
时间:
2013-10-31 10:40
本帖最后由 关阴月飞 于 2013-10-31 10:40 编辑
回复
1#
初识orcl
可以试试向进程发送信号:
18) SIGCONT 让一个停止(stopped)的进程继续执行. 本信号不能被阻塞. 可以用
一个handler来让程序在由stopped状态变为继续执行时完成特定的
工作. 例如, 重新显示提示符
19) SIGSTOP 停止(stopped)进程的执行. 注意它和terminate以及interrupt的区别
复制代码
kill -19 uruid
sleep 10
kill -18 uruid
复制代码
作者:
初识orcl
时间:
2013-10-31 10:57
本帖最后由 初识orcl 于 2013-10-31 11:03 编辑
回复
2#
rdcwayx
大大,您好,你的思路是不是我以下这中描述呀,我主要困难就是 知道PID 但是不知道怎么制定这个PID,让其sleep,linux小白,大大见谅,描述问题不是很透彻。{:2_172:}
其实是一个数据库导出命令,exp
例如我查看 ps -ef|grep exp
oracle 12644 12604 0 09:04 pts/1 00:00:00 sh exp.sh
oracle 12645 12644 6 09:04 pts/1 00:00:01 exp file=abc.dmp log=abc.log rows=n compress=y
oracle 12656 12604 0 09:05 pts/1 00:00:00 grep exp
我现在想在10点到12点将
oracle 12645 12644 6 09:04 pts/1 00:00:01 exp file=abc.dmp log=abc.log rows=n compress=y
这个进程sleep。
想法,检测系统时间,10点时sleep 2h。
通过ps -ef|grep exp|grep -v grep|wak '{print $2}'
可以得到 exp.sh 和exp命令 执行的进程id
我想通过进程id来让这2个命令sleep 2小时。
作者:
初识orcl
时间:
2013-10-31 10:59
本帖最后由 初识orcl 于 2013-10-31 11:00 编辑
回复
3#
关阴月飞
大前锋你好。看一下我4楼的回复,这下需求描述的比较到位{:2_170:}
作者:
关阴月飞
时间:
2013-10-31 11:11
回复
5#
初识orcl
大概是这么个思路:你可以在每天的10点制一条计划任务:
#暂停指定的进程
pid=`ps -ef|grep exp|grep -v grep|awk '{print $2}' `
kill -19 "$pid"
#等待2小时
sleep 7200
#运行被暂停的进程
kill -18 "$pid"
复制代码
作者:
初识orcl
时间:
2013-10-31 11:24
回复
6#
关阴月飞
这就是我想要的大前锋,原来只知道kill -9.原来kill功能这么强大
作者:
关阴月飞
时间:
2013-10-31 11:31
回复
7#
初识orcl
我不是大前锋啊。。。。。。。啊。。。。。啊。。。。。。
作者:
reyleon
时间:
2013-10-31 11:47
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2