我有一个脚本./runStart.sh
,用于创建一个新的xterm,并在此xterm中启动script run.log
命令。
然后,为了完成该过程,我启动了一个脚本./runStop.sh
,它可以杀死xterm并执行其他操作。
我遇到的问题是,当我在运行时终止进程时,没有exit
调用,因此script
命令不会将数据保存在实际文件中。
您是否知道如何在第./runStop.sh
次调用而不是exit
命令的kill <pid>
调用中启动命令?
答案 0 :(得分:1)
您可以使用bash
内置trap
来捕获信号(KILL
和STOP
除外)并进行必要的清理。
例如,我在这里捕捉伪信号EXIT
,它将覆盖任何使shell退出的信号:
xterm -e '/bin/bash' -c 'trap "echo ok >/tmp/foobar" EXIT; sleep 5'
sleep 5
是我的主要任务,退出时echo ok >/tmp/foobar
是清理任务。
或者,如果确定要发送/接收的信号,例如HUP
,INT
,您可以直接捕获它们。