GNU/Linux >> Belajar Linux >  >> Linux

Hentikan/bunuh Proses Dari Baris Perintah Setelah Jangka Waktu Tertentu?

Saya memiliki kode Python yang mendengarkan dan mendeteksi suara lingkungan. Ini bukan proyek saya, saya menemukannya di web (SoPaRe). Dengan ./sopare.py -l perintah, itu mulai merekam suara tetapi dalam loop tak terbatas. Ketika saya ingin menghentikannya, saya harus menekan Ctrl+C .

Tujuan saya adalah menghentikan program ini secara otomatis setelah 10 detik, tetapi ketika saya berbicara dengan penulisnya, dia mengatakan bahwa program tersebut tidak memiliki batasan waktu.

Saya mencoba membunuhnya melalui kill PID , tapi PID berubah setiap kali program dijalankan. Bagaimana cara menghentikannya setelah interval waktu melalui bash ?

Atau, saya dapat menjalankan perintah ini dari python dengan os.system() perintah.

Jawaban yang Diterima:

Solusi paling sederhana adalah dengan menggunakan timeout dari koleksi coreutils GNU (mungkin diinstal secara default pada kebanyakan sistem Linux):

timeout 10 ./sopare.py -l

Lihat manual untuk utilitas ini untuk opsi lebih lanjut (man timeout ). Pada sistem non-GNU, utilitas ini dapat diinstal sebagai gtimeout jika GNU coreutils terinstal sama sekali.

Alternatif lain, jika GNU coreutils tidak tersedia, adalah memulai proses di latar belakang dan menunggu selama 10 detik sebelum mengirimkannya sinyal penghentian:

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

$! akan menjadi ID proses dari proses latar belakang yang paling baru dimulai, dalam hal ini skrip Python Anda.

Jika waktu tunggu digunakan untuk hal lain:

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

Linux
  1. Konfigurasikan ruang kerja Linux dari jarak jauh dari baris perintah

  2. Cara menginstal perangkat lunak dari baris perintah Linux

  3. Pelaporan I/O dari baris perintah Linux

  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Migrasi server Linux dari baris perintah

  3. Dasar-dasar baris Perintah Linux – Menjalankan perintah dari baris perintah

  1. Bagaimana cara Mengirim Email dari Baris Perintah?

  2. Bagaimana cara memulai program linux GUI dari baris perintah, tetapi terpisah dari baris perintah?

  3. Bagaimana cara mendapatkan alamat IP saya dari baris perintah?