Zadejte hledaný výraz...

Jak v Ubuntu zajistit, aby PHP skript neustále běžel?

Chci zajistit, aby v Ubuntu neustále běžel PHP skript:
  • Aby se pustil po nabootování
  • Aby se pustil, pokud ho někdo ukončí nebo pokud spadne
Jak byste na to šli? Pomocí Upstart? Supervisor? S čím máte dobrou zkušenost?
9. 1. 2017 18:24:12
https://webtrh.cz/diskuse/jak-v-ubuntu-zajistit-aby-php-skript-neustale-bezel-2#reply1250183
Malcánek Jan
verified
rating uzivatele
(4 hodnocení)
9. 1. 2017 18:28:39
Já toto řešil jen na raspbianu (ale to by mělo být podobné). Používal jsem upstart, protože mi to v začátcích přišlo nejjednodušší a fungovalo to. Byl to teda jen jednoduchý PHP skript, který přepínal jeden výstup na raspberry (kvůli relé) a pak běžel ještě jeden, který posílal teplotu na server.
Běželo mi to asi půl roku (vůbec jsem se o to nestaral) a pořád to dělalo to, co jsem po tom chtěl, takže s upstartem mám zkušenost dobrou (ale jak říkám, byl to jen za účelem bastlení).
9. 1. 2017 18:28:39
https://webtrh.cz/diskuse/jak-v-ubuntu-zajistit-aby-php-skript-neustale-bezel-2#reply1250182
kojot6
verified
rating uzivatele
9. 1. 2017 18:34:16
Úplně nejjednoduší je použít SystemD na novějších verzích, jinak bych asi použil supervisor.
9.6. Creating and Modifying systemd Unit Files
K tomu dodám, že SystemD je v Ubuntu od verze 16 standardní řešení.
9. 1. 2017 18:34:16
https://webtrh.cz/diskuse/jak-v-ubuntu-zajistit-aby-php-skript-neustale-bezel-2#reply1250181
TomasX
verified
rating uzivatele
(4 hodnocení)
9. 1. 2017 18:44:03
ano, nejjednodušší je použít systemd a nadefinovat službu, nechat tam autorestart.
Prasácká možnost je v minutovém cronu spouštět proces s flock a nohup na pozadí.
9. 1. 2017 18:44:03
https://webtrh.cz/diskuse/jak-v-ubuntu-zajistit-aby-php-skript-neustale-bezel-2#reply1250180
Ja to dávám do cronu na spuštění každou minutu, po bootu to je tedy až na jednu minutu opožděno. V cronu se spouští shell script, který zjisti zda proces již beží. Pokud neběží spustí se. Navíc to má i vyhodu, že se dá snáze spustit i za non-roota.
---------- Příspěvek doplněn 09.01.2017 v 19:28 ----------
Napsal TomášX;1352240
..
Prasácká možnost je v minutovém cronu spouštět proces s flock a nohup na pozadí.
V čem je tato efektivní cesta prasácká ? :)
9. 1. 2017 19:27:11
https://webtrh.cz/diskuse/jak-v-ubuntu-zajistit-aby-php-skript-neustale-bezel-2#reply1250179
TomasX
verified
rating uzivatele
(4 hodnocení)
9. 1. 2017 19:46:37
AdamH: monitoring, security a správa. Admin musí věděk kde co běží, od toho je definice služeb pod initem nebo systemd, těžko někdo bude hoedat službu udržovanou cronem. Každá belžící služba je bezpečnostní riziko a musí být kontrolovaná (uděláš chybu v kontrole běhu a ubiješ server tisíci běžícími procesy, zažil jsem). Jak takovouhle službu chceš monitorovat a notifikovat o jejím selhání?
Supervisord či jiného daemona si můžeš spustit pod svým userem a povětšinou vydrží běžet dost dlouho, ten může udržovat další procesy.
9. 1. 2017 19:46:37
https://webtrh.cz/diskuse/jak-v-ubuntu-zajistit-aby-php-skript-neustale-bezel-2#reply1250178
kojot6
verified
rating uzivatele
9. 1. 2017 20:15:36
Napsal AdamH;1352256
V čem je tato efektivní cesta prasácká ? :)
Efektivní cesta oproti systemd to vážně není, de fakto skriptuješ něco, co se dá konfigurovat. Nemáš pořešen restart, logování, správu, to vše ti řeší systemd.
Jediné, co je výhoda tvého řešení je to, že k němu potřebuješ menší know-how. Jinak k tomu co tu padlo, z běžících procesů lze usoudit, že to je pod process cronu, lze to tedy dohledat jak to běží a asi bych to našel, i když jako efektivní řešení bych to považoval stěží.
Jinak, když už jsme u prasáckých řešení, tak efektivnější by bylo do /etc/rc.local přidat odkaz na skript s tímto než si kontrolovat běžící procesy:
#!/bin/bash
while ; do
php mujskript.php
sleep 1
done
9. 1. 2017 20:15:36
https://webtrh.cz/diskuse/jak-v-ubuntu-zajistit-aby-php-skript-neustale-bezel-2#reply1250177
Pro odpověď se přihlašte.
Přihlásit