分页: 1 / 4
让一个持续执行的命令每隔几分钟执行一次怎么写
发表于 : 2008-05-23 21:40
由 paulcross
我因为锐解上网 经常掉线 所以要写一个每隔几分钟 重新连一次的脚本
但是那个命令是和top一样的 是持续执行的 没办法在一个循环里终止掉 这种情况脚本该怎么写
--------------------------------
#! /bin/bash
for i in 1 2 3 4 5 6 7 8 9
do
top
echo "rrr"
sleep 2
killall top
done
--------------------------------
这样写是不管用的
怎么能把这个脚本改为每隔几分钟就终止再打开top一次
发表于 : 2008-05-23 21:48
由 eexpress
愿意cron不
发表于 : 2008-05-23 21:53
由 xiooli
如果不看输出的话可以后台执行,或者把输出重定向到某个文件。
发表于 : 2008-05-23 21:57
由 paulcross
cron也是一样阿
这个top命令打开后不用手动 停止不了阿
况且我的cron还有问题 每次设定都不管用
我不用看到输出 但是这种持续执行的命令脚本中断不了
中断不了我就没法让它再打开
发表于 : 2008-05-23 22:14
由 xiooli
paulcross 写了:cron也是一样阿
这个top命令打开后不用手动 停止不了阿
况且我的cron还有问题 每次设定都不管用
我不用看到输出 但是这种持续执行的命令脚本中断不了
中断不了我就没法让它再打开
在命令后边加&比如top &就会在后台执行,然后你的循环不受影响。
发表于 : 2008-05-23 22:22
由 paulcross
这个反正top & 是不行的 top命令直接出错
我实验下我的那个锐解行不行
但是这样还是没关闭那个命令
最后后台是不是会一大堆没关闭的命令在执行?
发表于 : 2008-05-23 22:28
由 xiooli
恩,貌似top是不行。不过一般来说都是可以后台运行的,至于会有一堆命令在运行,你可以开新的命令之前把旧的kill掉嘛。
发表于 : 2008-05-23 22:32
由 nobrain
paulcross 写了:
况且我的cron还有问题 每次设定都不管用
如果设定不管用的话,那么系统的其它依靠cron运行的也应该有问题。
你是怎样在cron里面设置的?
发表于 : 2008-05-23 23:14
由 paulcross
kill掉持续命令的话 会中断循环的
我实验了下 会中断循环的 而且killall 这种命令没法在后台执行 加上&也是会中断
发表于 : 2008-05-23 23:20
由 xiooli
paulcross 写了:kill掉持续命令的话 会中断循环的
我实验了下 会中断循环的 而且killall 这种命令没法在后台执行 加上&也是会中断
???lz可以放出脚本看看
Re: 让一个持续执行的命令每隔几分钟执行一次怎么写
发表于 : 2008-05-23 23:24
由 stlxv
paulcross 写了:我因为锐解上网 经常掉线 所以要写一个每隔几分钟 重新连一次的脚本
但是那个命令是和top一样的 是持续执行的 没办法在一个循环里终止掉 这种情况脚本该怎么写
--------------------------------
#! /bin/bash
for i in 1 2 3 4 5 6 7 8 9
do
top
echo "rrr"
sleep 2
killall top
done
--------------------------------
这样写是不管用的
怎么能把这个脚本改为每隔几分钟就终止再打开top一次
sleep久一点
发表于 : 2008-05-23 23:26
由 stlxv
kill并不是终结,而是向一个程序发送信号
你可以发送SIGKILL信号来强制结束一个程序
代码: 全选
kill -s SIGKILL 你要结束的
发表于 : 2008-05-23 23:36
由 nobrain
paulcross 写了:kill掉持续命令的话 会中断循环的
我实验了下 会中断循环的 而且killall 这种命令没法在后台执行 加上&也是会中断
你是怎么实验的?
发表于 : 2008-05-23 23:45
由 paulcross
我是用锐解那个客户端程序来作的阿
脚本和上面一样的 用killall rj(锐解客户端程序的名字) 代替killall top
sleep 用的时候都是设定为 240的 (4分钟)
反正killall rj这个命令执行后 整个脚本也就结束了 不会进行下一轮循环
发表于 : 2008-05-23 23:46
由 paulcross
killall rj 这句加不加 & 都一个结果
在终端里看就是 xxx terminated! 然后就跳出来了