GNU/Linux >> Linux の 問題 >  >> Linux

一定の時間が経過した後、コマンドラインからプロセスを停止/強制終了しますか?

環境音を聞いて検出するPythonコードがあります。それは私のプロジェクトではありません、私はそれをウェブ(SoPaRe)で見つけました。 ./sopare.py -lを使用 コマンドを実行すると、サウンドの録音が開始されますが、無限ループになります。停止したいときは、 Ctrl + Cを押す必要があります 。

私の目的は、このプログラムを10秒後に自動的に停止することですが、作成者と話したところ、プログラムには時間制限がないと言われました。

kill PIDで殺そうとしました 、ただしPID プログラムが実行されるたびに変更されます。 bashを介して一定時間後に停止するにはどうすればよいですか ?

または、os.system()を使用してPythonからこのコマンドを実行することもできます。 コマンド。

承認された回答:

最も簡単な解決策は、timeoutを使用することです。 GNU coreutilsのコレクションから(おそらくほとんどのLinuxシステムにデフォルトでインストールされています):

timeout 10 ./sopare.py -l

その他のオプション(man timeout)については、このユーティリティのマニュアルを参照してください。 )。非GNUシステムでは、このユーティリティはgtimeoutとしてインストールできます。 GNUcoreutilsがインストールされている場合。

GNU coreutilsが利用できない場合の別の方法は、バックグラウンドでプロセスを開始し、10秒間待ってから終了信号を送信することです。

./sopare.py -l &
sleep 10
kill "$!"

$! 最近開始されたバックグラウンドプロセス(この場合はPythonスクリプト)のプロセスIDになります。

待ち時間が他の目的で使用される場合:

./sopare.py -l & pid=$!
# whatever code here, as long as it doesn't change the pid variable
kill "$pid"

Linux
  1. Stratisを使用してコマンドラインからLinuxストレージを管理する

  2. コマンドラインからIcewmを再起動する方法は?

  3. コマンドラインからPerl/PHPスクリプトを実行する

  1. コマンドラインからのLinuxサーバーの移行

  2. コマンドラインからWordPressのバージョンを見つける

  3. コマンド ラインから電子メールを送信するにはどうすればよいですか?

  1. コマンドラインから Linux の CPU/コア数を取得する方法は?

  2. コマンドラインからGUI Linuxプログラムを起動する方法はありますが、コマンドラインとは別ですか?

  3. コマンドラインから IP アドレスを取得するにはどうすればよいですか?