Pertanyaan Cara menjalankan aplikasi untuk waktu yang ditentukan dalam shell


Jika dan Bagaimana mungkin, dalam Terminal, untuk mendapatkan aplikasi untuk berjalan selama 30 detik, sebelum dipaksa tutup, dan menggemakan log dari proses itu?


12
2018-04-27 14:11


asal


@JacobVlijm Idealnya dijalankan sebagai skrip shell karena portabilitas bahasa, terutama karena area penggunaan yang dimaksudkan adalah layanan CI. - ir-g
@ ir-g Anda dapat menggunakan waktu habis perintah. misalnya perintah timeout 30s - mcantsin
;) @ ir-g terima kasih kembali! - mcantsin


Jawaban:


Anda mungkin ingin menggunakan waktu habis perintah.

timeout -k 10s 30s command

yang akan menjalankan perintah untuk 30-an dan membunuhnya setelah 10 detik jika masih berjalan. - Periksa halaman manual untuk opsi lainnya.


19
2018-04-27 14:25



@ ir-g sama-sama. Anda mungkin juga ingin memeriksa menonton perintah, yang mirip dan juga sangat mudah digunakan di baris perintah. - mcantsin
Terima kasih atas penunjuk itu, watch menurut saya adalah perintah yang sangat menarik. Bisa berguna ... - ir-g


Berikut dua cara (tetapi timeout perintah disarankan oleh mcantsin mungkin lebih baik):

  1. Luncurkan perintah di latar belakang, dengan cara itu PID disimpan di dalamnya $! dan Anda dapat menggunakannya untuk membunuhnya setelah waktu yang ditentukan:

    command &
    sleep 30 && kill $!
    
  2. Luncurkan perintah dan gunakan pkill atau killall untuk membunuhnya. PERHATIAN: Ini mengasumsikan bahwa hanya satu perintah dengan nama itu sedang berjalan, saya gunakan firefox sebagai contoh:

    firefox &
    sleep 30 && pkill firefox
    

Saya tidak tahu apa yang Anda maksud dengan "log proses itu" tetapi kesalahan standar proses dapat disimpan ke file dengan command 2> logfile.txt.


3
2018-04-27 14:22