GNU/Linux >> Belajar Linux >  >> Linux

Cara memulai ulang layanan secara otomatis saat gagal di Linux

Solusi 1:

Hanya menjawab bagian restart layanan. Saya menemukan Monit juga, tetapi pada CentOS 7 systemd akan mengurus semuanya untuk Anda. Anda hanya perlu menambahkan dua baris ini ke file .service (jika belum ada):

Restart=always
RestartSec=3

Lihat https://jonarcher.info/2015/08/ensure-systemd-services-restart-on-failure/ untuk referensi.

Jika Anda ingin membuat layanan systemd khusus, cukup mudah untuk menulis file layanan Anda sendiri. Lihat contoh di bawah, untuk server http khusus.

Mulai editor dengan file layanan baru:

vim /etc/systemd/system/httpd.service

Dan tambahkan konten berikut, yang dapat Anda edit sesuai kebutuhan:

[Unit]
Description=My httpd Service
After=network.target

[Service]
Type=simple
User=root
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PERLLIB=/perl
ExecStart=/bin/httpd /etc/httpd.conf
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

Saya ingin memulai secara otomatis saat boot:

systemctl enable httpd

Beri tahu systemd tentang perubahan dan mulai layanan:

systemctl daemon-reload
systemctl start httpd

Dan sekarang Anda dapat melihat statusnya:

systemctl status httpd

Untuk referensi, lihat https://scottlinux.com/2014/12/08/how-to-create-a-systemd-service-in-linux-centos-7/

Solusi 2:

monit adalah cara yang bagus untuk memantau dan memulai ulang layanan ketika gagal--dan Anda mungkin akan menggunakan ini untuk layanan penting lainnya (seperti Apache). Ada artikel bagus di nixCraft yang merinci cara menggunakan ini untuk layanan secara khusus, meskipun monit sendiri memiliki lebih banyak fungsi di luar ini.

Adapun aspek soket, @galraen menjawab ini tepat.

Solusi 3:

Anda dapat memanggil setsockopt(2) untuk mendengarkan socket dengan SO_REUSEADDR , sehingga Anda dapat bind(2) lagi tanpa menunggu kedaluwarsa semua koneksi. Kemungkinan lain:putuskan koneksi dari kernel. FreeBSD memiliki tcpdrop perintah untuk ini, tidak tahu tentang Linux.

Solusi 4:

Jika distro linux Anda menggunakan Pemula alih-alih SysV init, maka respawn kata kunci melakukan ini.

http://upstart.ubuntu.com/cookbook/#respawn


Linux
  1. Bagaimana cara menggunakan pengawas perangkat lunak Linux?

  2. Cara membuka port di Linux

  3. Bagaimana cara menjadwalkan reboot di Linux?

  1. Cara membuat layanan Systemd di Linux

  2. Linux – Bagaimana Cara Menyimpan Sesi X — Archlinux+openbox?

  3. Bagaimana cara me-restart server MySQL jarak jauh yang berjalan di Ubuntu linux?

  1. Cara Memulai, Menghentikan, dan Memulai Ulang Layanan di Linux

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

  3. Bagaimana cara mendokumentasikan konfigurasi server linux?