如何在已打开的特定终端上启动shell命令?

时间:2016-04-27 03:20:56

标签: linux bash shell

我有一个脚本./runStart.sh,用于创建一个新的xterm,并在此xterm中启动script run.log命令。 然后,为了完成该过程,我启动了一个脚本./runStop.sh,它可以杀死xterm并执行其他操作。 我遇到的问题是,当我在运行时终止进程时,没有exit调用,因此script命令不会将数据保存在实际文件中。

您是否知道如何在第./runStop.sh次调用而不是exit命令的kill <pid>调用中启动命令?

1 个答案:

答案 0 :(得分:1)

您可以使用bash内置trap来捕获信号(KILLSTOP除外)并进行必要的清理。

例如,我在这里捕捉伪信号EXIT,它将覆盖任何使shell退出的信号:

xterm -e '/bin/bash' -c 'trap "echo ok >/tmp/foobar" EXIT; sleep 5'

sleep 5是我的主要任务,退出时echo ok >/tmp/foobar是清理任务。

或者,如果确定要发送/接收的信号,例如HUPINT,您可以直接捕获它们。