分页: 1 / 1

如何在shell里面终止正在运行的一个窗口?

发表于 : 2011-03-03 4:44
fb8fb8
我写了个shell脚本,这个脚本的文件名是a.sh,在这个shell里面有:
echo "ABCDEFG“
gst-launch ......
echo “HIJKLMN”

第一行就不用说了就是显示一句话,第二行是运行一个命令。
我在terminal里运行./a.sh这个脚本,于是terminal的屏幕上首先显示出我echo的ABCDEFG,
然后运行gst-launch这个程序,屏幕上出现一行行这个命令输出的东西,
如果我要终止这个gst-langch,我只能在键盘上按ctrl+Z才可以 。
如果我在键盘上按ctrl+Z,那么这个a.sh这个脚本就被终止了。

我的问题是:
怎么才能在./a.sh这个脚本里终止gst-langch的运行,而不比我手动在键盘上按ctrl+Z?
谢谢!

Re: 如何在shell里面终止正在运行的一个窗口?

发表于 : 2011-03-05 19:25
lilydjwg

代码: 全选

&
这样还会在后台继续运行。真要终止的话,接着用 kill $!,如果是中止的话,用 kill -STOP $!

Re: 如何在shell里面终止正在运行的一个窗口?

发表于 : 2011-03-06 7:45
fb8fb8
lilydjwg 写了:

代码: 全选

&
这样还会在后台继续运行。真要终止的话,接着用 kill $!,如果是中止的话,用 kill -STOP $!
没看明白呀?

是在哪里写&阿?
我在bash里面写 gst-launch,这个命令会运行10分钟,在这中间我必须检查一些东西然后可能终止这个命令。
那么我应该在哪里写kill?具体怎么写呢?谢谢谢谢!!!!!

Re: 如何在shell里面终止正在运行的一个窗口?

发表于 : 2011-03-06 8:20
sk1418
一个例子,不知道是不是你需要的。例子里的命令是yes
运行以后,屏幕输出abcd还有xxxx,yes无输出,后台运行。 后面判断你自己的条件,满足,就kill掉yes.

代码: 全选

#!/bin/bash
echo "abcd"
yes  > /dev/null 2>&1 & 
echo "xxxxxxxxxxxxxxxxxxxxxx"

while [ true ]; do
if [ 你的结束程序条件 ]; then
 kill $(pidof yes)
 exit 0
fi
done

Re: 如何在shell里面终止正在运行的一个窗口?

发表于 : 2011-03-07 14:29
lilydjwg
sk1418 写了:一个例子,不知道是不是你需要的。例子里的命令是yes
运行以后,屏幕输出abcd还有xxxx,yes无输出,后台运行。 后面判断你自己的条件,满足,就kill掉yes.

代码: 全选

#!/bin/bash
echo "abcd"
yes  > /dev/null 2>&1 & 
echo "xxxxxxxxxxxxxxxxxxxxxx"

while [ true ]; do
if [ 你的结束程序条件 ]; then
 kill $(pidof yes)
 exit 0
fi
done
pidof 会误杀其他进程吧,还是把进程的 pid 积存到变量里比较好。另外,循环里不加个 sleep 太耗 CPU 了。