GNU/Linux >> Znalost Linux >  >> Linux

Jak automaticky restartovat službu při selhání v Linuxu

Řešení 1:

Pouze odpověď na část restartu služby. Narazil jsem také na Monit, ale na CentOS 7 se o to vše postará systemd za vás. Tyto dva řádky stačí přidat do souboru .service (pokud tam již nejsou):

Restart=always
RestartSec=3

Viz https://jonarcher.info/2015/08/ensure-systemd-services-restart-on-failure/ pro reference.

Pokud chcete vytvořit vlastní službu systemd, je docela jednoduché napsat svůj vlastní soubor služby. Viz příklad níže pro vlastní http server.

Spusťte editor s novým souborem služby:

vim /etc/systemd/system/httpd.service

A přidejte následující obsah, který můžete upravit podle potřeby:

[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

Chci, aby se automaticky spustil při bootování:

systemctl enable httpd

Informujte systemd o změnách a spusťte službu:

systemctl daemon-reload
systemctl start httpd

A nyní můžete vidět stav:

systemctl status httpd

Pro referenci viz https://scottlinux.com/2014/12/08/how-to-create-a-systemd-service-in-linux-centos-7/

Řešení 2:

monit je skvělý způsob, jak sledovat a restartovat služby, když selžou – a pravděpodobně to nakonec použijete pro další základní služby (jako je Apache). Na nixCraftu je pěkný článek, který podrobně popisuje, jak to použít pro konkrétní služby, ačkoli monit sám má mnohem více funkcí nad rámec tohoto.

Pokud jde o aspekt zásuvky, @galraen odpověděl na toto místo.

Řešení 3:

Můžete zavolat na číslo setsockopt(2) pro poslechovou zásuvku s SO_REUSEADDR , takže budete moci bind(2) znovu bez čekání na vypršení platnosti všech připojení. Další možnost:zrušit připojení z jádra. FreeBSD má tcpdrop příkaz pro toto, nevím o Linuxu.

Řešení 4:

Pokud vaše linuxová distribuce používá Upstart místo SysV init, pak respawn klíčové slovo to dělá.

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


Linux
  1. Jak otevřít port v Linuxu

  2. Jak automaticky restartovat proces na pozadí linuxu, pokud selže?

  3. Jak naplánuji restart na Linuxu?

  1. Jak vytvořit službu Systemd v Linuxu

  2. Linux – Jak uložit X Session – Archlinux+openbox?

  3. Jak používat linuxový software watchdog?

  1. Jak spustit, zastavit a restartovat služby v systému Linux

  2. Jak restartovat vzdálený server MySQL běžící na Ubuntu linux?

  3. Jak dokumentovat konfiguraci linuxového serveru?