GNU/Linux >> Belajar Linux >  >> Linux

Cara "Tepat" Untuk Menguji Jika Suatu Layanan Berjalan Dalam Skrip?

Masalah saya:

Saya sedang menulis skrip bash dan di dalamnya saya ingin memeriksa apakah layanan tertentu sedang berjalan.

Saya tahu cara melakukannya secara manual, dengan status $ service [service_name] status .

Tetapi (terutama sejak pindah ke systemd) yang mencetak sejumlah besar teks yang sedikit berantakan untuk diuraikan. Saya berasumsi ada perintah yang dibuat untuk skrip dengan output sederhana atau nilai kembalian yang dapat saya periksa.

Tapi Googling sekitar hanya menghasilkan satu ton “Oh, hanya ps aux | grep -v grep | grep [service_name] ” hasil. Itu bukan praktik terbaik, bukan? Bagaimana jika contoh lain dari perintah itu berjalan, tetapi tidak ada yang dimulai oleh skrip init SysV?

Atau haruskah aku diam dan mengotori tanganku dengan sedikit pgrep?

Jawaban yang Diterima:

systemctl memiliki is-active subperintah untuk ini:

systemctl is-active --quiet service

akan keluar dengan status nol jika service aktif, bukan nol sebaliknya, membuatnya ideal untuk skrip:

systemctl is-active --quiet service && echo Service is running

Jika Anda menghilangkan --quiet itu juga akan menampilkan status saat ini ke output standarnya.

Seperti yang ditunjukkan oleh don_crissti, beberapa unit dapat aktif meskipun tidak ada yang berjalan untuk menyediakan layanan:unit yang ditandai sebagai "RemainAfterExit" dianggap aktif jika mereka keluar dengan sukses, idenya adalah bahwa mereka menyediakan layanan yang tidak memerlukan daemon (mis. mereka mengkonfigurasi beberapa aspek dari sistem). Unit yang melibatkan daemon hanya akan aktif jika daemon masih berjalan.


Linux
  1. Cara Mudah Untuk Memeriksa Tes Kecepatan SSH

  2. Cara Terbaik Mendeteksi (dari Skrip) Apakah Perangkat Lunak Sudah Diinstal?

  3. Memeriksa Skrip Apakah Berjalan?

  1. Layanan OS Linux 'scsi_reserve'

  2. Apa cara terbaik untuk memastikan hanya satu contoh skrip Bash yang berjalan?

  3. Skrip Ruby sebagai layanan

  1. Menjalankan skrip shell secara paralel

  2. Apa cara yang benar untuk memulai layanan mongod di linux / OS X?

  3. Layanan MongoDB tidak berjalan di Fedora