En Enkel Launchd Tutorial
Anta at du har skrevet et lite skript som du ønsker å kjøre hver så ofte. Hvis Du bruker En Mac, er launchd
et perfekt verktøy å bruke.
det er bedre enn crontab
fordi, blant annet, hvis datamaskinen er slått av når programmet er planlagt å kjøre, launchd
vil kjøre programmet så snart datamaskinen våkner. I mellomtiden crontab
vil ikke.
Første ting å gjøre er å lage et skript for å kjøre. Jeg skal skrive en enkel Node.js men du kan bruke hva du vil.
touch ~/demo/main.js
for dette eksempelets skyld skal alt dette skriptet logge tiden da det ble kjørt.
console.log("Hello", Date.now())
nå må Vi opprette en launchd
konfigurasjonsplistfil.
touch ~/Library/LaunchAgents/com.demo.daemon.plist
en plist-fil er Bare Apples tilpassede XML-format for konfigurasjoner. Lim inn denne koden der inne. Du må kanskje endre /Users/chet/demo
til katalogen du bruker for dette eksemplet.
denne filen angir et par ting:
- demonen starter når brukeren logger inn.
- det vil kjøre hvert 20. sekund.
- det vil utgang til noen loggfiler (veldig nyttig for debugging).
- det vil sette miljøbanen (nyttig hvis programmet bruker andre kommandoer fra
usr/local/bin
). - kommandoen vil utføres i katalogen
/Users/chet/demo
. - og kommandoen er
/usr/local/bin/node main.js
.
Det finnes en rekke andre alternativer du kan lese om her. Et vanlig alternativ er alternativet KeepAlive
som vil starte skriptet på nytt når det slutter eller krasjer. Dette er nyttig hvis du vil at skriptet skal alltid være i gang.
Nå trenger vi bare å få det til å løpe. Først åpner du Console.app
. Du har kanskje aldri brukt det før, men det er en innfødt verktøyapp for feilsøking av denne typen ting. I systemet.log-delen, kan du se etter com.demo.daemon
for å se om det er noen systemfeil når du prøver å starte launchd
.
Tilbake i Terminalen din, kjør følgende kommando.
launchctl load ~/Library/LaunchAgents/com.demo.daemon.plist
hvis du ser noen feil i Console.app
kan du stoppe demonen med unload
og se etter feil i stderr.log
– filen.
launchctl unload ~/Library/LaunchAgents/com.demo.daemon.plist
cat ~/demo/stderr.log
hvis alt gikk bra, bør du ikke se noe i Console.app
og du bør se logger som kommer inn i ~/demo/stdout.log
– filen hvert 20. sekund.