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.daemonpentru 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.