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

sh/bash/dash/ksh/zsh等Shell脚本
回复
fb8fb8
帖子: 14
注册时间: 2010-04-12 6:37

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

#1

帖子 fb8fb8 » 2011-03-03 4:44

我写了个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?
谢谢!
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

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

#2

帖子 lilydjwg » 2011-03-05 19:25

代码: 全选

&
这样还会在后台继续运行。真要终止的话,接着用 kill $!,如果是中止的话,用 kill -STOP $!
fb8fb8
帖子: 14
注册时间: 2010-04-12 6:37

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

#3

帖子 fb8fb8 » 2011-03-06 7:45

lilydjwg 写了:

代码: 全选

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

是在哪里写&阿?
我在bash里面写 gst-launch,这个命令会运行10分钟,在这中间我必须检查一些东西然后可能终止这个命令。
那么我应该在哪里写kill?具体怎么写呢?谢谢谢谢!!!!!
sk1418
帖子: 229
注册时间: 2007-07-01 17:36
系统: (En):System
来自: (En):address
联系:

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

#4

帖子 sk1418 » 2011-03-06 8:20

一个例子,不知道是不是你需要的。例子里的命令是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
---
regards,

Kent
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

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

#5

帖子 lilydjwg » 2011-03-07 14:29

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 了。
回复