en enkel Launchd handledning
anta att du har skrivit ett litet skript som du vill köra varje så ofta. Om du använder en Mac är launchd
ett perfekt verktyg att använda.
det är bättre än crontab
eftersom bland annat om din dator är avstängd när ditt program är planerat att köras, kommer launchd
att köra ditt program så snart datorn vaknar. Under tiden crontab
kommer inte.
första sak att göra är att skapa ett skript för att köra. Jag ska skriva en enkel nod.js men du kan använda vad du vill.
touch ~/demo/main.js
för detta exempels skull kommer allt detta skript att göra att logga tiden då den kördes.
console.log("Hello", Date.now())
nu måste vi skapa en launchd
konfigurationsplist-fil.
touch ~/Library/LaunchAgents/com.demo.daemon.plist
en plist-fil är bara Apples anpassade XML-format för konfigurationer. Klistra in den här koden där inne. Du kan behöva ändra /Users/chet/demo
till katalogen du använder för det här exemplet.
den här filen anger några saker:
- demonen startar när användaren loggar in.
- det kommer att köras var 20: e sekund.
- det kommer att matas ut till vissa loggfiler (mycket användbart för felsökning).
- det kommer att ställa in miljövägen (användbart om ditt program använder andra kommandon från
usr/local/bin
). - kommandot kommer att köras i katalogen
/Users/chet/demo
. - och kommandot är
/usr/local/bin/node main.js
.
det finns en massa andra alternativ du kan läsa om här. Ett vanligt alternativ är alternativet KeepAlive
som startar om ditt skript när det slutar eller kraschar. Detta är användbart om du vill att ditt skript alltid ska köras.
nu behöver vi bara få det att springa. Öppna först Console.app
. Du kanske aldrig har använt det förut, men det är en inbyggd verktygsapp för felsökning av den här typen av saker. I systemet.loggavsnitt, du kan leta efter com.demo.daemon
för att se om det finns några systemfel när du försöker starta launchd
.
tillbaka i din Terminal, kör följande kommando.
launchctl load ~/Library/LaunchAgents/com.demo.daemon.plist
om du ser några fel i Console.app
kan du stoppa demonen med unload
och leta efter fel i filen stderr.log
.
launchctl unload ~/Library/LaunchAgents/com.demo.daemon.plist
cat ~/demo/stderr.log
om allt gick bra bör du inte se någonting i Console.app
och du bör se loggar som kommer in i ~/demo/stdout.log
– filen var 20: e sekund.