¿Cómo programo un command raíz para ejecutar en intervalos?

Necesito ejecutar una secuencia de commands en intervalos que requieren la ejecución de un usuario raíz. Creé un plist que llamará a un script en ~/bin/test.sh

 user@MBP:~$ ls -lah ~/bin/ -rw-r--r-- 1 root staff 566B Feb 6 23:44 test.plist -rwxr-xr-x 1 root staff 51B Feb 6 23:38 test.sh 

Aquí están los contenidos:

  • ¿Puedo evitar que el audio óptico salga de 'time out' cuando está inactivo?
  • No se puede usar launchctl como usuario no root
  • Lanzamiento: permissions dudosos en el file: problema al instalar Jenkins
  • Uso de tmux y pbpaste, pbcopy y launchctl
  • Launchd se ejecuta una vez por inicio en lugar de en cada inicio de session
  • Ejecutando script a través de launchd sin posts molestos
  •  user@MBP:~$ cat ~/bin/test.plist <?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.test.script</string> <key>ProgramArguments</key> <array> <string>sh</string> <string>/Users/user/bin/test.sh</string> </array> <key>StartInterval</key> <integer>30</integer> </dict> </plist> user@MBP:~$ cat ~/bin/test.sh #!/bin/sh cp /Users/user/bin/dummy.txt /etc 

    Luego vinculé el plist en /Library/LaunchAgents .

     user@MBP:~$ ls -lah /Library/LaunchAgents/ lrwxr-xr-x 1 root wheel 31B Feb 5 06:28 com.test.script.plist -> /Users/user/bin/test.plist 

    Pero todo esto no funciona. Cuando miro en /var/logs/system.log , solo digo:

     Feb 7 14:42:12 MBP com.apple.launchd.peruser.501[242] (com.test.script`[925]): Exited with code: 1 

  • OSX 10.8 - Cómo mantener un puerto personalizado para todos los usuarios que inicien session
  • ¿Cómo asocio un launchd 2 plist con su dominio y objectives de service?
  • Hacer asociaciones de files para iniciar una cierta extensión, ¿pero con un progtwig de console?
  • ¿Se puede eliminar el molesto post de sudo de Mountain Lion 10.8.0?
  • LaunchDaemon for pf no se cargará al inicio
  • Uso de tmux y pbpaste, pbcopy y launchctl
  • 3 Solutions collect form web for “¿Cómo programo un command raíz para ejecutar en intervalos?”

    La página man para launchd.plist describe una key UserName que se requiere al ejecutar el trabajo como raíz. Presumiblemente, el valor debe ser "raíz".

    No soy un gurú, pero parece que esto es lo único que te hace falta, a less que los agentes de lanzamiento no puedan vincularse simbólicamente.

    Entonces, según esta respuesta de SuperUser , debes ejecutar launchctl como sudo para retener los permissions

     sudo load -w /Library/LaunchDaemons/com.apple.samplelaunchdscript.plist 

    Las lists de properties en LaunchAgents también funcionan, pero tienes que cargar tanto agentes como daemons con sudo:

     sudo chown root ~/bin/test.plist sudo launchctl load /Library/LaunchAgents/test.plist 

    Si el plist no tiene una tecla Disabled, se carga automáticamente en el siguiente inicio de session o reinicio, y -w no es necesario.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).