GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara memulai ulang proses latar belakang linux secara otomatis jika gagal?

Buildroot memiliki tiga kemungkinan sistem init, jadi ada tiga cara untuk melakukannya:

BusyBox init

Dengan ini, seseorang menambahkan entri ke /etc/inittab .

::respawn:/bin/myprocess

Perhatikan bahwa BusyBox init memiliki /etc/inittab yang unik format. Kolom kedua tidak ada artinya, dan kolom pertama bukan ID tetapi nama dasar perangkat.

Linux "Sistem V" init

Sekali lagi, seseorang menambahkan entri ke /etc/inittab .

myprocess:2345:respawn:/bin/myprocess

systemd

Seseorang menulis file unit, katakanlah, /etc/systemd/system/myprocess.service :

[Unit]
Description=My Process

[Service]
ExecStart=/bin/myprocess
Restart=always

[Install]
WantedBy=multi-user.target

Aktifkan ini untuk mulai otomatis saat boot dengan:

systemctl enable myprocess.service

Mulai secara manual dengan:

systemctl start myprocess.service

Bacaan lebih lanjut

  • "3.1.3 sistem init". Panduan pengguna Buildroot .

Bagaimana dengan membuat subkulit dengan loop yang terus-menerus memanggil proses yang sama?

Jika berakhir, iterasi berikutnya dari loop akan berlanjut dan memulainya lagi.

(while true; do 
    /bin/myprocess
done) &

Jika subkulitnya mati, itu sudah berakhir. Satu-satunya kemungkinan dalam kasus itu adalah membuat proses lain (saya akan menyebutnya ahli nujum) yang memeriksa apakah proses Anda hidup, mulai jika tidak dan jalankan ahli nujum ini dengan cron, sehingga Anda dapat memeriksanya secara teratur.

Langkah selanjutnya adalah bertanya-tanya apa yang bisa terjadi jika cron mati, tetapi pada titik tertentu Anda harus merasa aman dan berhenti khawatir.


Cara termudah adalah menambahkannya ke /etc/inittab, yang dirancang untuk melakukan hal semacam ini:

muncul kembali Jika proses tidak ada, mulai proses. Jangan menunggu penghentiannya (lanjutkan memindai file /etc/inittab). Mulai ulang proses saat mati. Jika prosesnya ada, jangan lakukan apa pun dan lanjutkan memindai file /etc/inittab.

Misalnya, Anda dapat melakukan ini:

# Run my stuff
myprocess:2345:respawn:/bin/myprocess

Linux
  1. CentOS / RHEL :Cara Memulihkan dari file /etc/passwd yang dihapus

  2. Bagaimana cara mendapatkan jalur proses di Unix / Linux

  3. Linux - Cara mendaftar semua pengguna

  1. Bagaimana cara mengetahui dari folder mana suatu proses sedang berjalan?

  2. Bagaimana cara mengatur swapiness per proses untuk linux?

  3. Cara memulai ulang layanan secara otomatis saat gagal di Linux

  1. Cara Memulai Perintah Linux di Latar Belakang dan Melepaskan Proses di Terminal

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

  3. Bagaimana Cara Memulai Ulang (atau Mengatur Ulang) Proses yang Berjalan Di Linux?