un simplu tutorial Launchd
să presupunem că ați scris un script mic pe care doriți să rulați fiecare atât de des. Dacă utilizați un Mac, atunci launchd
este un instrument perfect de utilizat.
este mai bine decât crontab
deoarece, printre altele, dacă computerul este oprit când programul dvs. este programat să ruleze, launchd
va rula programul dvs. imediat ce computerul se trezește. Între timp crontab
nu va.
primul lucru de făcut este să creați un script pentru a rula. Voi scrie un nod simplu.js, dar poți folosi orice vrei.
touch ~/demo/main.js
de dragul acestui exemplu, tot acest script va face este să înregistreze momentul în care a fost rulat.
console.log("Hello", Date.now())
acum trebuie să creăm un fișier plist de configurare launchd
.
touch ~/Library/LaunchAgents/com.demo.daemon.plist
un fișier plist este doar formatul XML personalizat Apple pentru configurații. Inserați acest cod acolo. Poate fi necesar să modificați /Users/chet/demo
la directorul pe care îl utilizați pentru acest exemplu.
acest fișier specifică câteva lucruri:
- demonul va începe ori de câte ori utilizatorul se conectează.
- se va executa la fiecare 20 de secunde.
- se va ieșire la unele fișiere jurnal (foarte util pentru depanare).
- se va seta calea de mediu (util în cazul în care programul utilizează alte comenzi de la
usr/local/bin
). - comanda se va executa în directorul
/Users/chet/demo
. - și comanda este
/usr/local/bin/node main.js
.
există o grămadă de alte opțiuni pe care le puteți citi aici. O opțiune frecvent utilizată este opțiunea KeepAlive
care va reporni scriptul ori de câte ori se termină sau se blochează. Acest lucru este util dacă doriți ca scriptul dvs. să ruleze întotdeauna.
acum, trebuie doar să-l pornim. Mai întâi, deschideți Console.app
. Este posibil să nu fi folosit-o niciodată, dar este o aplicație utilitară nativă pentru depanarea acestui tip de lucruri. În sistem.secțiunea Jurnal, puteți căuta com.demo.daemon
pentru a vedea dacă există erori de sistem atunci când încercați să porniți launchd
.
înapoi în terminalul dvs., executați următoarea comandă.
launchctl load ~/Library/LaunchAgents/com.demo.daemon.plist
dacă vedeți unele erori în Console.app
puteți opri demonul cu unload
și căutați erori în fișierul stderr.log
.
launchctl unload ~/Library/LaunchAgents/com.demo.daemon.plist
cat ~/demo/stderr.log
dacă totul a mers bine, nu ar trebui să vedeți nimic în Console.app
și ar trebui să vedeți jurnalele care vin în fișierul ~/demo/stdout.log
la fiecare 20 de secunde.