Hvordan kan jeg lage mitt eget launchctl script?

Diskusjon rundt Mac OS

Hvordan kan jeg lage mitt eget launchctl script?

Innleggav ggt667 » ons 09.03.2016 0:07

Hvordan kan jeg lage mitt eget launchctl script?

Jeg ønsker å starte scriptet /opt/dev/kjekt/aaha.js når maskinen starter uavhengig av om noen er logget på maskinen.

Er det bare å kopiere denne fila /System/Library/LaunchDaemons/bootps.plist og gjøre endringen som under?
Kode: Merk alt
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Disaabled</key>
    <false />
    <key>Label</key>
    <string>test.myproject</string>
    <key>ProgramArguments</key>
    <array>
      <string>/opt/dev/kjekt/aaha.js</string>
    </array>
    <key>inetdCompatibility</key>
    <dict>
      <key>Wait</key>
      <true />
    </dict>
    <key>InitGroups</key>
    <true />
    <key>Sockets</key>
    <dict>
      <key>Listeners</key>
      <dict>
        <key>SockServiceName</key>
        <string>kjektaaha</string>
        <key>SockType</key>
        <string>dgram</string>
      </dict>
    </dict>
  </dict>
</plist>
Legger så endringen i: /Library/LaunchDaemons/kjektaaha.plist

Etter denne oppskriften:
FILES
~/Library/LaunchAgents Per-user agents provided by the user.
/Library/LaunchAgents Per-user agents provided by the administrator.
/Library/LaunchDaemons System wide daemons provided by the administrator.
/System/Library/LaunchAgents Mac OS X Per-user agents.
/System/Library/LaunchDaemons Mac OS X System wide daemons.

Brukerens avatar
medlem i 241 måneder
 

Re: Hvordan kan jeg lage mitt eget launchctl script?

Innleggav tiddylicious » ons 09.03.2016 17:10

Hei,

Prøv følgende:

Kode: Merk alt
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>[b]com.kjekt.app[/b]</string>
        <key>ProgramArguments</key>
        <array>
            <string>[b]/usr/local/bin/node[/b]</string>
            <string>[b]/opt/dev/kjekt/aaha.js[/b]</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <false/>
        <key>Sockets</key>
        <dict>
        <key>Listeners</key>
           <dict>
              <key>SockServiceName</key>
              <string>kjektaaha</string>
              <key>SockType</key>
              <string>[b]dgram[/b]</string>
              <key>SockFamily</key>
              <string>IPv4</string>
            </dict>
       </dict>
     </dict>
</plist>


Hvis scriptet kjører for tidlig ved startup, prøv å slenge til:
Kode: Merk alt
<key>KeepAlive</key>
<dict>
     <key>SuccessfulExit</key>
     <false/>
</dict>


Legg merke til at hvis du bruker tcp, så må du endre socktype til stream og sende med portnr dersom det er en non-os port: <string>23</string>

Håper dette hjelper :-)

edit: det gikk særdeles dårlig med utheving in-code. Så se nøye etter bold blokkene, de representerer verdier du skal bytte ut

Brukerens avatar
medlem i 167 måneder
 

Re: Hvordan kan jeg lage mitt eget launchctl script?

Innleggav ggt667 » tor 10.03.2016 22:30

Omtrent slik tenker du?
Kode: Merk alt
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>___com.kjekt.app___</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/bin/env</string>
      <string>node</string>
      <string>___/opt/dev/kjekt/aaha.js___</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
    <key>Sockets</key>
    <dict>
      <key>Listeners</key>
      <dict>
        <key>SockServiceName</key>
        <string>kjektaaha</string>
        <key>SockType</key>
        <string>___dgram___</string>
        <key>SockFamily</key>
        <string>IPv4</string>
      </dict>
    </dict>
    <key>KeepAlive</key>
    <dict>
      <key>SuccessfulExit</key>
      <false/>
    </dict>
    <key>UserName</key>
    <string>___username___</string>
  </dict>
</plist>

Brukerens avatar
medlem i 241 måneder
 

Re: Hvordan kan jeg lage mitt eget launchctl script?

Innleggav tiddylicious » lør 12.03.2016 17:52

Litt usikker på om /usr/bin/env vil fungere, ville endret til stien til node om det ikke fungerer.

Si gjerne til om det går :)

Brukerens avatar
medlem i 167 måneder
 

Re: Hvordan kan jeg lage mitt eget launchctl script?

Innleggav ggt667 » lør 12.03.2016 18:14

Det interessante er om hashbang funker, jeg har
Kode: Merk alt
#!/usr/bin/env node
på første linje av scriptet.

Brukerens avatar
medlem i 241 måneder
 

Re: Hvordan kan jeg lage mitt eget launchctl script?

Innleggav tiddylicious » søn 13.03.2016 11:37

Det er riktig shebang for node script

Brukerens avatar
medlem i 167 måneder
 


Returner til Mac OS



Hvem er i Forumene

Registrerte brukere: Google [Bot]