分页: 3 / 4
发表于 : 2008-05-26 21:24
由 BigSnake.NET
kinzess 写了: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
不需要两个
代码: 全选
for i in 1 2 3
do
( sleep 3 && pkill top) &
echo $i
top
done
发表于 : 2008-05-26 21:26
由 BigSnake.NET
kinzess 写了: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
然后查了一下不知道什么原因就放弃这个方法了- -
top 因为是交互式程序, 需要一个终端来显示, 不能脱离终端后台运行(另一个例子是 mplayer)
发表于 : 2008-05-26 21:30
由 kinzess
学到了
谢谢BigSnake.NET
顺便问下
( sleep 3 && pkill top) &
其中有哪些空格是必须的??
发表于 : 2008-05-26 21:30
由 paulcross
呵呵 其实这个问题之所以 不好理解就是因为没有合适的例子
top是不怎么合适 但是我又不知道别的可以持续执行的命令
锐捷的认证机制是一直和服务端交流数据的 所以是持续执行的
为什么杀掉它它会退出循环呢 我也不怎么清楚
反正杀了后 它就是输出一句
connection terminated !
然后就
paul@paul-desktop$ 了
锐捷没有连上的时候是不会出现这句话的 也不会跳出循环
可能就是因为这句话的关系
发表于 : 2008-05-26 21:32
由 BigSnake.NET
paulcross 写了:呵呵 其实这个问题之所以 不好理解就是因为没有合适的例子
top是不怎么合适 但是我又不知道别的可以持续执行的命令
锐捷的认证机制是一直和服务端交流数据的 所以是持续执行的
为什么杀掉它它会退出循环呢 我也不怎么清楚
反正杀了后 它就是输出一句
connection terminated !
然后就
paul@paul-desktop$ 了
锐捷没有连上的时候是不会出现这句话的 也不会跳出循环
可能就是因为这句话的关系
你是放到单独脚本里运行的吗?
将脚本的详细代码和你运行的步骤说说
发表于 : 2008-05-26 21:33
由 BigSnake.NET
kinzess 写了:学到了
谢谢BigSnake.NET
顺便问下
( sleep 3 && pkill top) &
其中有哪些空格是必须的??
不知道, 自己试试吧
发表于 : 2008-05-26 21:34
由 BigSnake.NET
"持续执行" 倒是没什么, 基本上所有程序都可以当做"持续执行", 只要没有阻塞 TERM 信号, kill 都会将其杀死
发表于 : 2008-05-26 21:34
由 kinzess
BigSnake.NET 写了:kinzess 写了:学到了
谢谢BigSnake.NET
顺便问下
( sleep 3 && pkill top) &
其中有哪些空格是必须的??
不知道, 自己试试吧
我就是不知道
之前写就是因为空格的问题害我调试了很久。。郁闷
有些地方要空格,有些又不需要
有时候加了和不加问题很大
偏偏又看不出来
发表于 : 2008-05-26 22:12
由 eexpress
BigSnake.NET 写了:eexpress 写了:有wait命令的啊。定时查看输出的。
不太明确你搞什么。
wait 是等待子进程...
我不爱看别人的实际的脚本,以为是需要交互操作。
wait + expect + sleep 是一个完整的交互应答环境了啊。可以根据提示,自动回答。
发表于 : 2008-05-26 22:16
由 kinzess
paulcross 写了:呵呵 其实这个问题之所以 不好理解就是因为没有合适的例子
top是不怎么合适 但是我又不知道别的可以持续执行的命令
锐捷的认证机制是一直和服务端交流数据的 所以是持续执行的
为什么杀掉它它会退出循环呢 我也不怎么清楚
反正杀了后 它就是输出一句
connection terminated !
然后就
paul@paul-desktop$ 了
锐捷没有连上的时候是不会出现这句话的 也不会跳出循环
可能就是因为这句话的关系
既然它无论怎么样都会退出循环。。。
那么。。。把启动命令写在脚本1里
另外一个脚本2就写循环启动脚本1。。
这样脚本2就不会退出了把?
再退出我就真的是没招了
发表于 : 2008-05-26 22:32
由 paulcross
gedit
这个命令就是非持续执行的
top
这个命令就是持续执行的
#!/bin/sh
while :
do
superstar -i eth0 -u 用户名 -p 密码
sleep 240
echo "eeeee"
killall superstar &
echo "ffffff"
done
这就是完整代码了
每次到killall superstar 的时候就跳出循环
发表于 : 2008-05-27 11:18
由 yingfei
楼上的,在 superstar -i eth0 -u 用户名 -p 密码 后边加个 & 不行么?
superstar -i eth0 -u 用户名 -p 密码 &
如果这样 superstar 变成了 暂停状态, 那么 用 bg 让它继续运行。
代码: 全选
superstar -i eth0 -u 用户名 -p 密码 &
bg
sleep 240
echo "eeeee"
kill $(pidof superstar)
echo "ffffff"
发表于 : 2008-05-27 12:00
由 BigSnake.NET
paulcross 写了:gedit
这个命令就是非持续执行的
top
这个命令就是持续执行的
#!/bin/sh
while :
do
superstar -i eth0 -u 用户名 -p 密码
sleep 240
echo "eeeee"
killall superstar &
echo "ffffff"
done
这就是完整代码了
每次到killall superstar 的时候就跳出循环
这是不可能的,
superstar -i eth0 -u 用户名 -p 密码 压根没返回, 下面的语句不会执行..
贴一下输出吧..
PS : 完全无法理解 LZ 所谓的 "持续运行" 概念
发表于 : 2008-05-27 12:32
由 paulcross
你首先把superstar 拷贝到/bin 里面 设定为可执行 否则这个东西当然没输出了
另外你的用户名 密码都要输入正确否则就没办法连接的
其实你们要我帖我自己的这个脚本 都没有意义的 这个脚本只有你们也是用锐捷上网的情况下才能测试
top命令和 ls 命令的区别 是什么 就是持续执行和一次性执行的区别
发表于 : 2008-05-27 12:34
由 冲浪板
watch怎么样