2016-04-27 22 views
0

我有一個腳本./runStart.sh,它創建一個新的xterm,並在此xterm中啓動script run.log命令。 然後,爲了完成這個過程,我啓動了一個腳本./runStop.sh,它殺死了xterm並做了其他的事情。 我遇到的問題是,當我在運行時殺死進程時,沒有調用exit,所以script命令不會將數據保存在實際文件中。如何在已打開的特定終端上啓動shell命令?

你知道我怎麼能在第二個腳本./runStop.sh,使這個exit調用,而不是kill <pid>命令啓動命令?

+0

爲什麼不添加一個可以正確關閉它的陷阱? –

+0

我檢查了陷阱如何工作,但我仍然不知道如何發送信號到另一個終端。有這個命令嗎?它與pid一起工作嗎? –

+0

您將信號發送到運行腳本的shell。 'kill'可以用來發送信號。 –

回答

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,你可以直接捕捉那些人。

相關問題