egy egyszerű Launchd bemutató

tegyük fel, hogy írt egy kis szkriptet, amelyet olyan gyakran szeretne futtatni. Ha Mac-et használ, akkor a launchd tökéletes eszköz a használatához.

ez jobb, mint a crontab, mert többek között, ha a számítógép ki van kapcsolva, amikor a program a tervek szerint fut, launchd futtatja a programot, amint a számítógép felébred. Eközben crontab nem.

az első lépés egy futtatandó Szkript létrehozása. Egy egyszerű csomópontot fogok írni.js, de azt használhatsz, amit csak akarsz.

touch ~/demo/main.js

ennek a példának a kedvéért ez a szkript csak annyit fog tenni, hogy naplózza a Futtatás idejét.

console.log("Hello", Date.now())

most létre kell hoznunk egy launchd konfigurációs plist fájlt.

touch ~/Library/LaunchAgents/com.demo.daemon.plist

a plist fájl csak az Apple egyéni XML formátuma a konfigurációkhoz. Illessze be ezt a kódot. Lehet, hogy meg kell változtatnia a /Users/chet/demo könyvtárat, amelyet ebben a példában használ.

ez a fájl néhány dolgot meghatároz:

  • a démon elindul, amikor a felhasználó bejelentkezik.
  • 20 másodpercenként végrehajtja.
  • néhány naplófájlt fog kiadni (nagyon hasznos a hibakereséshez).
  • beállítja a környezeti útvonalat (hasznos, ha a program más parancsokat használ a usr/local/bin – től).
  • a parancs a /Users/chet/demo könyvtárban fog végrehajtani.
  • és a parancs /usr/local/bin/node main.js.

van egy csomó más lehetőség, amelyről itt olvashat. Gyakran használt opció a KeepAlive opció, amely újraindítja a szkriptet, amikor véget ér vagy összeomlik. Ez akkor hasznos, ha azt szeretné, hogy a szkript mindig futjon.

most már csak be kell indítanunk. Először nyissa meg a Console.appértéket. Lehet, hogy még soha nem használta, de ez egy natív segédprogram az ilyen dolgok hibakereséséhez. A rendszerben.log szakasz, akkor keresse meg a com.demo.daemon, hogy ha vannak olyan rendszer hibák, amikor megpróbálja elindítani launchd.

vissza a terminálba, futtassa a következő parancsot.

launchctl load ~/Library/LaunchAgents/com.demo.daemon.plist

ha hibát látsz a Console.app – ban, megállíthatod a démont a unload gombbal, és a stderr.log fájlban kereshetsz hibákat.

launchctl unload ~/Library/LaunchAgents/com.demo.daemon.plist
cat ~/demo/stderr.log

ha minden jól ment, akkor nem kell semmit látnia a Console.app – ban, és látnia kell a ~/demo/stdout.log fájlba érkező naplókat 20 másodpercenként.