jednoduchý Launchd Tutorial
Předpokládejme, že jste napsali malý skript, který chcete spustit každý tak často. Pokud používáte Mac, pak launchd
je perfektní nástroj k použití.
je lepší než crontab
protože, mimo jiné, pokud váš počítač je vypnutý, když váš program je naplánováno spuštění, launchd
spusťte program, jakmile se počítač probudí. Mezitím crontab
nebude.
první věc, kterou musíte udělat, je vytvořit skript, který chcete spustit. Napíšu jednoduchý uzel.js, ale můžete použít, co chcete.
touch ~/demo/main.js
v zájmu tohoto příkladu bude tento skript zaznamenávat čas, kdy byl spuštěn.
console.log("Hello", Date.now())
nyní musíme vytvořit launchd
konfigurační plist soubor.
touch ~/Library/LaunchAgents/com.demo.daemon.plist
soubor plist je pouze vlastní formát XML společnosti Apple pro konfigurace. Vložte tento kód tam. Možná budete muset změnit /Users/chet/demo
do adresáře, který používáte pro tento příklad.
Tento soubor určuje několik věcí:
- démon spustí vždy, když uživatel přihlásí.
- provede se každých 20 sekund.
- bude výstup do některých souborů protokolu (velmi užitečné pro ladění).
- nastaví cestu prostředí (užitečné, pokud váš program používá jiné příkazy z
usr/local/bin
). - příkaz se spustí v adresáři
/Users/chet/demo
. - a příkaz je
/usr/local/bin/node main.js
.
existuje spousta dalších možností, o kterých si můžete přečíst zde. Běžně používanou volbou je možnost KeepAlive
, která restartuje skript vždy, když skončí nebo havaruje. To je užitečné, pokud chcete, aby byl skript vždy spuštěn.
nyní to musíme spustit. Nejprve otevřete Console.app
. Možná jste to nikdy předtím nepoužili, ale je to nativní obslužná aplikace pro ladění tohoto druhu věcí. V systému.log sekce, můžete se podívat na com.demo.daemon
zjistit, zda existují nějaké systémové chyby při pokusu o spuštění launchd
.
Zpět v Terminálu spusťte následující příkaz.
launchctl load ~/Library/LaunchAgents/com.demo.daemon.plist
pokud v Console.app
uvidíte nějaké chyby, můžete zastavit démona pomocí unload
a hledat chyby v souboru stderr.log
.
launchctl unload ~/Library/LaunchAgents/com.demo.daemon.plist
cat ~/demo/stderr.log
Pokud vše půjde dobře, neměli byste vidět nic v Console.app
a měli byste vidět záznamy jdoucí do ~/demo/stdout.log
soubor každých 20 sekund.