から崇高なテキスト再起動しである時点をを、私はのためにそれを一定の時間をを実行したいです。私は基本的に10秒間プログラムを起動し、それを強制終了する必要があります - 複数回 - インストールと更新プロセスのためです。簡単に言うと、私は外部プログラム(SUBL - 崇高なテキスト)を実行したくない
どうすればいいですか?
から崇高なテキスト再起動しである時点をを、私はのためにそれを一定の時間をを実行したいです。私は基本的に10秒間プログラムを起動し、それを強制終了する必要があります - 複数回 - インストールと更新プロセスのためです。簡単に言うと、私は外部プログラム(SUBL - 崇高なテキスト)を実行したくない
どうすればいいですか?
でそれをシミュレートすることができ、私は私のスクリプト
/usr/bin/subl
SPID="$(ps -A | grep sublime_text | awk '{print $1}')"
sleep 5
kill "$SPID"
unset "$SPID"
使用timeout
:
timeout 5s <program>
また、プロセスを終了するに渡す必要信号を指定することができます。
timeout -s9 5s <program>
(OR)
timeout --signal=KILL 5s <program>
テスト:
$ time timeout 5s sleep 40
real 0m5.002s
user 0m0.001s
sys 0m0.001s
あなたは、プロセスを終了するための標準的なアラーム信号を使用して、あなたのシステム上timeout
コマンドを有することができます。私はシェルがこの機能を組み込みとして利用することができない理由を全く理解していません。あなたのシステム上timeout
をお持ちでない場合は、
my_program & pid=$!
sleep 10
kill "$pid"
複数のインスタンスを実行している場合に、返されたPIDを検索するのではなく、返されたPIDをキャプチャする方がよいでしょう。 '/ usr/bin/subl'を実行してid:' SPID = $! 'をキャプチャしてください。 – yk11
@ yk11崇高なテキストは、 '/ usr/bin/subl'を使って生成されたプロセスとは別のプロセスでエディタを起動するようですが、そうでなければ@ chepnerの答え – myol