GNU/Linux >> Belajar Linux >  >> Linux

Deteksi Sistem Init Menggunakan Shell?

Ini mungkin lebih berkaitan dengan mendeteksi sistem operasi, tetapi saya secara khusus membutuhkan sistem init yang saat ini digunakan pada sistem.

Fedora 15 dan Ubuntu sekarang menggunakan systemd, Ubuntu dulu menggunakan Pemula (default lama hingga 15,04), sementara yang lain menggunakan variasi Sistem V.

Saya memiliki aplikasi yang saya tulis untuk menjadi daemon lintas platform. Skrip init sedang dibuat secara dinamis berdasarkan parameter yang dapat diteruskan saat konfigurasi.

Yang ingin saya lakukan hanyalah membuat skrip untuk sistem init tertentu yang mereka gunakan. Dengan cara ini skrip instalasi dapat dijalankan secara wajar tanpa parameter sebagai root dan daemon dapat “diinstal” secara otomatis.

Inilah yang saya dapatkan:

  • Telusuri systemd, pemula, dll di /bin
  • Bandingkan /proc/1/comm dengan systemd, pemula, dll
  • Tanyakan kepada pengguna

Apa cara lintas/platform terbaik untuk melakukan ini?

Agak terkait, Dapatkah saya bergantung pada bash untuk menjadi mayoritas *nix atau bergantung pada distribusi/OS?

Platform target:

  • MacOS
  • Linux (semua distribusi)
  • BSD (semua versi)
  • Solaris, Minix, dan *nix
  • lainnya

Jawaban yang Diterima:

Untuk pertanyaan kedua, jawabannya adalah tidak dan Anda harus melihat Sumberdaya untuk pemrograman shell portabel.

Adapun bagian pertama – pertama-tama, Anda tentu harus berhati-hati. Saya akan mengatakan melakukan beberapa tes untuk memastikan – karena fakta bahwa seseorang memiliki systemd (misalnya.) diinstal, tidak berarti itu benar-benar digunakan sebagai init default . Juga, lihat /proc/1/comm dapat menyesatkan, karena beberapa penginstalan berbagai program init dapat secara otomatis membuat /sbin/init hardlink symlink atau bahkan versi yang diubah namanya dari program utama mereka.

Mungkin hal yang paling berguna adalah melihat jenis skrip init – karena itulah yang sebenarnya akan Anda buat, apa pun yang menjalankannya.

Sebagai catatan tambahan, Anda mungkin juga melihat OpenRC yang bertujuan untuk menyediakan struktur skrip init yang kompatibel dengan sistem Linux dan BSD.


Linux
  1. Apa runlevel sistem Linux saat ini?

  2. Bagaimana Mendeteksi Jika Shell Dikendalikan Dari Ssh?

  3. Apa yang dilakukan panggilan sistem brk()?

  1. Apa gunanya menggunakan makro linux access_ok()

  2. Apa implikasi keamanan systemd dibandingkan dengan systemv init?

  3. Apa sebenarnya yang dilakukan init?

  1. Bagaimana Menguji Shell Apa yang Saya Gunakan Di Terminal?

  2. Apa yang Terjadi Saat Saya Mengeksekusi File Di Shell?

  3. Apa saja Jenis Shell yang Berbeda di Linux?