让一个持续执行的命令每隔几分钟执行一次怎么写

sh/bash/dash/ksh/zsh等Shell脚本
头像
paulcross
帖子: 484
注册时间: 2006-07-23 20:27

让一个持续执行的命令每隔几分钟执行一次怎么写

#1

帖子 paulcross » 2008-05-23 21:40

我因为锐解上网 经常掉线 所以要写一个每隔几分钟 重新连一次的脚本

但是那个命令是和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一次
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#2

帖子 eexpress » 2008-05-23 21:48

愿意cron不
● 鸣学
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#3

帖子 xiooli » 2008-05-23 21:53

如果不看输出的话可以后台执行,或者把输出重定向到某个文件。
头像
paulcross
帖子: 484
注册时间: 2006-07-23 20:27

#4

帖子 paulcross » 2008-05-23 21:57

cron也是一样阿
这个top命令打开后不用手动 停止不了阿
况且我的cron还有问题 每次设定都不管用

我不用看到输出 但是这种持续执行的命令脚本中断不了
中断不了我就没法让它再打开
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#5

帖子 xiooli » 2008-05-23 22:14

paulcross 写了:cron也是一样阿
这个top命令打开后不用手动 停止不了阿
况且我的cron还有问题 每次设定都不管用

我不用看到输出 但是这种持续执行的命令脚本中断不了
中断不了我就没法让它再打开
在命令后边加&比如top &就会在后台执行,然后你的循环不受影响。
头像
paulcross
帖子: 484
注册时间: 2006-07-23 20:27

#6

帖子 paulcross » 2008-05-23 22:22

这个反正top & 是不行的 top命令直接出错

我实验下我的那个锐解行不行

但是这样还是没关闭那个命令
最后后台是不是会一大堆没关闭的命令在执行?
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#7

帖子 xiooli » 2008-05-23 22:28

恩,貌似top是不行。不过一般来说都是可以后台运行的,至于会有一堆命令在运行,你可以开新的命令之前把旧的kill掉嘛。
头像
nobrain
帖子: 808
注册时间: 2005-08-25 13:58
来自: ustc
联系:

#8

帖子 nobrain » 2008-05-23 22:32

paulcross 写了: 况且我的cron还有问题 每次设定都不管用
如果设定不管用的话,那么系统的其它依靠cron运行的也应该有问题。
你是怎样在cron里面设置的?
爱喝真猪奶茶的夜鸣猪
头像
paulcross
帖子: 484
注册时间: 2006-07-23 20:27

#9

帖子 paulcross » 2008-05-23 23:14

kill掉持续命令的话 会中断循环的
我实验了下 会中断循环的 而且killall 这种命令没法在后台执行 加上&也是会中断
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#10

帖子 xiooli » 2008-05-23 23:20

paulcross 写了:kill掉持续命令的话 会中断循环的
我实验了下 会中断循环的 而且killall 这种命令没法在后台执行 加上&也是会中断
???lz可以放出脚本看看
头像
stlxv
论坛版主
帖子: 8275
注册时间: 2006-05-03 0:39
来自: المريخ

Re: 让一个持续执行的命令每隔几分钟执行一次怎么写

#11

帖子 stlxv » 2008-05-23 23:24

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久一点
PHP是最好的语言!不服来战!
头像
stlxv
论坛版主
帖子: 8275
注册时间: 2006-05-03 0:39
来自: المريخ

#12

帖子 stlxv » 2008-05-23 23:26

kill并不是终结,而是向一个程序发送信号

你可以发送SIGKILL信号来强制结束一个程序

代码: 全选

kill -s SIGKILL 你要结束的
PHP是最好的语言!不服来战!
头像
nobrain
帖子: 808
注册时间: 2005-08-25 13:58
来自: ustc
联系:

#13

帖子 nobrain » 2008-05-23 23:36

paulcross 写了:kill掉持续命令的话 会中断循环的
我实验了下 会中断循环的 而且killall 这种命令没法在后台执行 加上&也是会中断
你是怎么实验的?
爱喝真猪奶茶的夜鸣猪
头像
paulcross
帖子: 484
注册时间: 2006-07-23 20:27

#14

帖子 paulcross » 2008-05-23 23:45

我是用锐解那个客户端程序来作的阿

脚本和上面一样的 用killall rj(锐解客户端程序的名字) 代替killall top
sleep 用的时候都是设定为 240的 (4分钟)


反正killall rj这个命令执行后 整个脚本也就结束了 不会进行下一轮循环
头像
paulcross
帖子: 484
注册时间: 2006-07-23 20:27

#15

帖子 paulcross » 2008-05-23 23:46

killall rj 这句加不加 & 都一个结果
在终端里看就是 xxx terminated! 然后就跳出来了
回复