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

sh/bash/dash/ksh/zsh等Shell脚本
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#16

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

那个rj是直接点开就能用吗?还是要输入什么账号密码的?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#17

帖子 eexpress » 2008-05-23 23:53

有wait命令的啊。定时查看输出的。
不太明确你搞什么。
● 鸣学
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#18

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

反正我这儿试了你那个脚本是可以滴(把top换成了leafpad)
头像
paulcross
帖子: 484
注册时间: 2006-07-23 20:27

#19

帖子 paulcross » 2008-05-24 0:12

leafpad是属于那种一次性的命令 和top这种一直持续执行的命令是不一样的
我把那个锐解程序发过来
你们实验下 那个程序是要输入用户名和密码的 不过那不是主要问题 可以直接在参数里给的


问题其实很简单

脚本如何结束top这种持续执行的命令 后继续执行下一条命令

就是
#!/bin/bash
top
xxxxxxxx
echo "success"

这个xxxxx怎么写才能终止掉top (写成killall top 就自动退出终端了 后面的命令就执行不了)




我的这个锐解其实是可以终止 但是终止后就退出循环了
这个是我的脚本

#! /bin/bash
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
do
rj &
echo "rrr"
sleep 240
killall rj & #这一句加不加&效果都一样的 都是到这里循环就跳出了 没法进行下一轮的循环
done
附件
superstar.tar.gz
(11.82 KiB) 已下载 55 次
上次由 paulcross 在 2008-05-24 0:32,总共编辑 1 次。
头像
paulcross
帖子: 484
注册时间: 2006-07-23 20:27

#20

帖子 paulcross » 2008-05-24 0:15

rj是我把spuerstar的参数加进去后作的一个单行jiaob

#! /bin/bash

sudo superstar -i eth0 -u paul -p 12345
echo "password"
头像
nobrain
帖子: 808
注册时间: 2005-08-25 13:58
来自: ustc
联系:

#21

帖子 nobrain » 2008-05-24 0:40

rj:
#!/bin/bash

sudo ./superstar -i eth1 -u paul -p 12345
echo "password"


test.sh:
#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
do
./rj &
echo "rrr"
sleep 1
killall rj & #这一句加不加&效果都一样的 都是到这里循环就跳出了 没法进行下一轮的循环
done


./test.sh
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
rrr
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20833 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20837 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20841 已终止 ./rj
ioctl: Cannot assign requested address
rrr
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20845 已终止 ./rj
ioctl: Cannot assign requested address
rrr
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20849 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20853 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20861 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20865 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20869 已终止 ./rj
ioctl: Cannot assign requested address
rrr
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20873 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20877 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20881 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20889 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20893 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20897 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20902 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20906 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20914 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20918 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20922 已终止 ./rj
rrr
ioctl: Cannot assign requested address
寻找服务器........
等待服务器回应........
./test.sh: line 2: 20926 已终止 ./rj
./test.sh: line 9: 20930 已终止 ./rj

没有你说的循环退出的现象。你这样倒是产生了一陀superstar进程。
爱喝真猪奶茶的夜鸣猪
头像
paulcross
帖子: 484
注册时间: 2006-07-23 20:27

#22

帖子 paulcross » 2008-05-24 1:00

呵呵 看来你们不在锐解校园网内还真没法进行这个测试

你根本就没连上呢 自然也不会杀死rj的时候退出的 连上的话 一杀死就退出了
就是因为不想出现一堆spuerstar才要杀死rj (连上的话杀死rj的时候superstar也就停止了)

你吧脚本改改 改为kill superstar看看




.....
你还是用top这个命令测试吧
或者别的非一次性命令
头像
nobrain
帖子: 808
注册时间: 2005-08-25 13:58
来自: ustc
联系:

#23

帖子 nobrain » 2008-05-24 22:17

paulcross 写了:呵呵 看来你们不在锐解校园网内还真没法进行这个测试

你根本就没连上呢 自然也不会杀死rj的时候退出的 连上的话 一杀死就退出了
就是因为不想出现一堆spuerstar才要杀死rj (连上的话杀死rj的时候superstar也就停止了)

你吧脚本改改 改为kill superstar看看




.....
你还是用top这个命令测试吧
或者别的非一次性命令
把kill rj改成了sudo killall superstar也没有出现问题。
top的话如果在后台运行,状态就会变成stop
我用zenity --scale代替superstar,killall zenity,循环也是ok的
爱喝真猪奶茶的夜鸣猪
头像
paulcross
帖子: 484
注册时间: 2006-07-23 20:27

#24

帖子 paulcross » 2008-05-24 22:49

你用top作个循环看看
superstar 你根本就没连上服务器 那个zenity -scale貌似不是top那种持续执行的
头像
kinzess
帖子: 319
注册时间: 2007-04-11 10:39

#25

帖子 kinzess » 2008-05-26 20:47

如果把你那个程序在子shell中打开然后再强行终止会怎样?
也是终止循环吗?
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#26

帖子 BigSnake.NET » 2008-05-26 20:57

代码: 全选

$ cat a.sh 
for i in 1 2 3
do
        top &
        echo top
        sleep 1
        killall top
done
Exit status: 0
autumncat@autumncat-host:~
$ bash ./a.sh 
top
        top: failed tty get

        top: failed tty get

top
top
        top: failed tty get

Exit status: 0
循环是不会打断的, top需要tty是另一回事. 楼主说循环退出很难理解, kill 掉 top 是不可能把 上层的 shell 也 kill 的
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
kinzess
帖子: 319
注册时间: 2007-04-11 10:39

#27

帖子 kinzess » 2008-05-26 21:10

#! /bin/bash
for i in 1 2 3 4 5 6 7 8 9
do
top
echo "rrr"
sleep 2
killall top
done

仔细看了下代码。。
实在是搞不动要怎么kill掉top
top是持续运行的这样echo和后面的命令根本不会运行阿。。。
如果要加也是在top后面加&把?
不然后面的要怎么运行的?

其实我想如果一个脚本不行那你干脆用2个脚本得了 :roll: :roll: :roll: :roll: :roll:
一个负责开程序一个负责关程序- -
感觉好吊
不要个应我
刚学bash写sh没多久- -
头像
kinzess
帖子: 319
注册时间: 2007-04-11 10:39

#28

帖子 kinzess » 2008-05-26 21:18

ok
用2个脚本实现了这个功能- -
你要求的应该是这个功能把?

#! /bin/bash
for i in 1 2 3 4 5 6 7 8 9
do
echo "欢迎访问forum.ubuntu.org"
top
done

#! /bin/bash
#存为test01.sh,先运行这个命令为test01.sh&
for i in 1 2 3 4 5 6 7 8 9
do
sleep 5
killall top
done

kinzess@Ubuntu:~$ ./testtop: ./test.sh
欢迎访问forum.ubuntu.org

top - 21:14:58 up 5:57, 2 users, load average: 0.61, 0.94, 0.81
Tasks: 196 total, 1 running, 195 sleeping, 0 stopped, 0 zombie
Cpu(s): 14.3%us, 3.7%sy, 0.0%ni, 80.5%id, 0.9%wa, 0.3%hi, 0.2%si, 0.0%st
Mem: 2063200k total, 1675924k used, 387276k free, 156136k buffers
Swap: 2096440k total, 38588k used, 2057852k free, 980632k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7389 kinzess 20 0 80988 45m 25m S 12 2.3 30:03.54 eva
11333 kinzess 20 0 122m 48m 19m S 6 2.4 12:48.22 ktorrent
30 root -2 -20 0 0 0 S 2 0.0 0:00.84 events/1
231 root 20 0 0 0 0 S 2 0.0 0:11.31 pdflush
6793 root 20 0 121m 86m 10m S 2 4.3 21:46.82 Xorg
7366 kinzess 20 0 30492 9984 8288 S 2 0.5 5:01.99 multiload-apple
1 root 20 0 2844 1692 544 S 0 0.1 0:01.34 init
2 root 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0 0.0 0:00.00 migration/0
4 root RT -5 0 0 0 S 0 0.0 0:00.00 posix_cpu_timer
5 root -51 -5 0 0 0 S 0 0.0 0:00.00 softirq-high/0
6 root -51 -5 0 0 0 S 0 0.0 0:24.11 softirq-timer/0
7 root -51 -5 0 0 0 S 0 0.0 0:01.59 softirq-net-tx/
8 root -51 -5 0 0 0 S 0 0.0 0:13.37 softirq-net-rx/
9 root -51 -5 0 0 0 S 0 0.0 0:04.83 softirq-block/0
10 root -51 -5 0 0 0 S 0 0.0 0:20.70 softirq-tasklet
11 root -51 -5 0 0 0 S 0 0.0 0:01.33 softirq-sched/0
欢迎访问forum.ubuntu.org

top - 21:15:05 up 5:57, 2 users, load average: 0.68, 0.94, 0.81
Tasks: 196 total, 6 running, 190 sleeping, 0 stopped, 0 zombie
Cpu(s): 12.5%us, 3.1%sy, 0.0%ni, 83.4%id, 0.3%wa, 0.3%hi, 0.3%si, 0.0%st
Mem: 2063200k total, 1678048k used, 385152k free, 156140k buffers
Swap: 2096440k total, 38588k used, 2057852k free, 980740k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7389 kinzess 20 0 80988 45m 25m R 11 2.3 30:04.29 eva
11333 kinzess 20 0 122m 48m 19m R 9 2.4 12:48.77 ktorrent
6793 root 20 0 123m 87m 10m D 6 4.3 21:47.30 Xorg
7263 kinzess 20 0 25772 11m 9348 R 1 0.5 1:28.99 metacity
7391 kinzess 20 0 287m 135m 30m S 1 6.7 48:41.31 firefox
13378 kinzess 20 0 76780 18m 10m R 1 0.9 0:00.48 gnome-terminal
7267 kinzess 20 0 15348 4816 3780 S 1 0.2 0:43.22 gnome-screensav
7366 kinzess 20 0 30492 9984 8288 S 1 0.5 5:02.05 multiload-apple
8722 kinzess 20 0 118m 46m 16m S 1 2.3 0:58.57 nautilus
13427 kinzess 20 0 2440 1168 852 R 1 0.1 0:00.03 top
1 root 20 0 2844 1692 544 S 0 0.1 0:01.34 init
2 root 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0 0.0 0:00.00 migration/0
4 root RT -5 0 0 0 S 0 0.0 0:00.00 posix_cpu_timer
5 root -51 -5 0 0 0 S 0 0.0 0:00.00 softirq-high/0
6 root -51 -5 0 0 0 S 0 0.0 0:24.11 softirq-timer/0
7 root -51 -5 0 0 0 S 0 0.0 0:01.59 softirq-net-tx/
欢迎访问forum.ubuntu.org

top - 21:15:05 up 5:57, 2 users, load average: 0.68, 0.94, 0.81
Tasks: 196 total, 1 running, 195 sleeping, 0 stopped, 0 zombie
Cpu(s): 14.3%us, 3.7%sy, 0.0%ni, 80.5%id, 0.9%wa, 0.3%hi, 0.2%si, 0.0%st
Mem: 2063200k total, 1676704k used, 386496k free, 156140k buffers
Swap: 2096440k total, 38588k used, 2057852k free, 980740k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7389 kinzess 20 0 80988 45m 25m S 10 2.3 30:04.37 eva
11333 kinzess 20 0 122m 48m 19m S 8 2.4 12:48.83 ktorrent
6793 root 20 0 122m 86m 10m S 4 4.3 21:47.34 Xorg
6 root -51 -5 0 0 0 S 2 0.0 0:24.12 softirq-timer/0
7366 kinzess 20 0 30492 9984 8288 S 2 0.5 5:02.06 multiload-apple
13378 kinzess 20 0 76780 18m 10m S 2 0.9 0:00.49 gnome-terminal
13432 kinzess 20 0 2436 1072 764 R 2 0.1 0:00.01 top
1 root 20 0 2844 1692 544 S 0 0.1 0:01.34 init
2 root 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0 0.0 0:00.00 migration/0
4 root RT -5 0 0 0 S 0 0.0 0:00.00 posix_cpu_timer
5 root -51 -5 0 0 0 S 0 0.0 0:00.00 softirq-high/0
7 root -51 -5 0 0 0 S 0 0.0 0:01.59 softirq-net-tx/
8 root -51 -5 0 0 0 S 0 0.0 0:13.37 softirq-net-rx/
9 root -51 -5 0 0 0 S 0 0.0 0:04.83 softirq-block/0
10 root -51 -5 0 0 0 S 0 0.0 0:20.70 softirq-tasklet
11 root -51 -5 0 0 0 S 0 0.0 0:01.33 softirq-sched/0
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#29

帖子 BigSnake.NET » 2008-05-26 21:21

eexpress 写了:有wait命令的啊。定时查看输出的。
不太明确你搞什么。
wait 是等待子进程...
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
kinzess
帖子: 319
注册时间: 2007-04-11 10:39

#30

帖子 kinzess » 2008-05-26 21:24

BigSnake.NET 写了:

代码: 全选

$ cat a.sh 
for i in 1 2 3
do
        top &
        echo top
        sleep 1
        killall top
done
Exit status: 0
autumncat@autumncat-host:~
$ bash ./a.sh 
top
        top: failed tty get

        top: failed tty get

top
top
        top: failed tty get

Exit status: 0
循环是不会打断的, top需要tty是另一回事. 楼主说循环退出很难理解, kill 掉 top 是不可能把 上层的 shell 也 kill 的
弱弱地问下
top: failed tty get
这个是什么原因导致的?
我刚才也想到了这个方法。。
也出现了
top: failed tty get
然后查了一下不知道什么原因就放弃这个方法了- -
回复