簡単な方法は、ファイルの項に1つの出力を書き込むことで、あなたがファイルに自分の殻をログに記録するscript
を使用することができます用語から2
端子1
をあなたのパターンを検索します。これらproccessesは$遅延の後にまだ生きている場合
$ script --flush -c program_to_monitor /path/to/log/file #e.g. /tmp/term1.log
端子2
このスクリプトの検索語1ログファイルに継続的にあなたのパターン、設立ならば、それは送信、用語2内のすべてのプロセスにSIGTERMを送信しますSIGKILL。
kill_tty.sh: - 私は、彼らがより良い方法です確信している
(ps
とBSDにいくつかの注意点を有していてもよい)
#!/usr/bin/env bash
tty=$(tty)
delay=2
while true; do
if grep "your_pattern" $term1_log 2>/dev/null ; then
ps h -o pid --tty ${tty#/*/} | xargs kill #soft way
sleep ${delay}s
ps h -o pid --tty ${tty#/*/} | xargs -9 kill #hard way
fi
done
次に背景
$ ./kill_tty.sh /path/to/log/file &
でそれを出せそれをしているが、それは作品です。
でそれを殺す[テレパシー能力が有効:]あなたTerm#1で起動したアプリケーションが正常に終了して終了したら、Term#2ウィンドウを閉じる必要がありますか? – hidefromkgb
あなたはあなたのtermimal2を明確にすることができますか?あなたは1つのknow/Unknowプログラム、または多くのknow/unknowプログラムだけを実行しますか?第2期のあなたのプログラムは、インタラクティブに立ち上げる必要があるのでしょうか? – F4240
端末2は対話的なコマンドであり、term1と2の間に特定のリンクはありませんが、term2のtimelifeはterm1に依存しています。たとえば、term1が "test succesfull" –