usuario recuperar mac hay estandar ejecutar desde crear como comandos cambiar administrador activar macos bash cron startup launchd

macos - hay - recuperar usuario administrador mac



Ejecute un script de shell periódicamente en Mac OS X sin permiso de root (2)

¿Alguna razón en particular por la que no quieres usar un crontab normal?

% echo "* * * * * /Users/paul/Desktop/1.sh" | crontab -

Este comando debe agregar un trabajo cron que se ejecuta una vez por minuto.

TEN EN CUENTA que este comando también reemplazará cualquier crontab que ya tengas. El comando crontab - debe usarse con precaución, como un atajo.

Si desea editar un crontab existente, para evitar borrar trabajos previamente configurados, puede usar crontab -e . (Si inicia vim y no sabe cómo usar vim , puede salir presionando ESC : q ! Ingrese y luego vaya a buscar la documentación del editor).

Si desea instrucciones sobre cómo editar crontabs, escriba man crontab en su shell. Si desea información de sintaxis en el archivo crontab, man 5 crontab le mostrará eso.

¡Disfrutar!

ACTUALIZACIÓN: (por comentarios)

Para ejecutar su trabajo cada 30 segundos se requiere un simple corte. Cron solo ejecuta trabajos por minuto, por lo que para ejecutar las cosas cada 30 segundos, puede tener dos trabajos, uno de los cuales tiene un retraso de 30 segundos. Por ejemplo:

#Mn Hr Da Mo DW Command * * * * * /Users/paul/Desktop/1.sh * * * * * sleep 30; /Users/paul/Desktop/1.sh

Espero que esto ayude.

Quiero iniciar un archivo con .sh tipo o .py en mac os x sin usar root, busqué en google y encontré launchctl me puede ayudar,

entonces leí el tutorial y hago lo mismo en el tutorial pero no funciona para mí, [i usando mac os x 10.9 x64]

Mi archivo .plist [ejecuta el archivo 1.sh cada 60 segundos]:

<?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.alvin.crontabtest</string> <key>ProgramArguments</key> <array> <string>/Users/paul/Desktop/1.sh</string> </array> <key>Nice</key> <integer>1</integer> <key>StartInterval</key> <integer>60</integer> <key>RunAtLoad</key> <true/> <key>StandardErrorPath</key> <string>/tmp/AlTest1.err</string> <key>StandardOutPath</key> <string>/tmp/AlTest1.out</string> </dict> </plist>

fuente de 1.sh:

echo ''+'' >> /Users/paul/Desktop/worked.txt

Puse Run.plist en /Users/paul/Run.plist

y ejecuta el comando desde la terminal:

launchctl load /Users/paul/Run.plist Launchctl start com.alvin.crontabtest

los comandos se ejecutan sin ningún error pero no veo nada en working.txt

¿alguien puede ayudarme por favor?


Para aclarar: el archivo .plist del OP en estaba perfectamente bien - el problema resultó estar dentro del script de shell invocado (no se muestra en la pregunta).

En OS X, el uso de los archivos .plist cargados por CLI launchctl e invocados por el administrador de daemon launchd es la forma preferida de tareas de programación (recurrentes) (consulte más abajo para obtener más información).

Cosas a tener en cuenta:

  • El formato de los archivos launchd .plist se describe en https://developer.apple.com/library/mac/documentation/Darwin/Reference/Manpages/man5/launchd.plist.5.html o man launchd.plist
  • Para que se cargue un archivo .plist cada vez que el usuario actual inicia sesión , debe colocarse en ~/Library/LaunchAgents/ ( los archivos de todos los usuarios deben colocarse en /Library/LaunchAgent/ - requiere privilegios de administrador).
  • Especificar archivos de captura de salida con claves StandardOutPath y StandardErrorPath significa que las invocaciones sucesivas se agregan a los archivos especificados, lo que significa que estos archivos siguen creciendo indefinidamente , a menos que se administren externamente .
  • Solución de problemas de Re: se aplica el consejo de @Grady Player: inicie Console.app y busque entradas com.apple.launchd.peruser ; una falla al invocar el comando especificado en .plist se mostraría allí.

La respuesta de @ghoti describe una alternativa general de Unix a launchd , cron (típicamente usado en Linux):

En cuanto a cómo cron relaciona con OS X: @ghoti pregunta:

¿Alguna razón en particular por la que no quieres usar un crontab normal?

En OS X, man crontab aconseja (énfasis añadido):

Aunque cron (8) y crontab (5) son oficialmente compatibles con Darwin [OS X], su funcionalidad ha sido absorbida en launchd (8) , que proporciona una forma más flexible de ejecutar comandos automáticamente . Ver launchctl (1) para más información.

La conclusión es esta:

  • Si proviene de un fondo * nix , puede estar más cómodo con continuar usando cron y crontab , suponiendo que:
    • usted es consciente del hecho de que pueden existir tareas de fondo adicionales, programadas a través de launchd .
    • usted conoce las limitaciones de cron y puede trabajar con / alrededor de ellos.
  • De lo contrario, en OS X :
    • muchas aplicaciones de terceros utilizan la función launchd nativa y especifican tareas de fondo periódicas a través de archivos .plist en /Library/LaunchAgents (para todos los usuarios) o ~/Library/LaunchAgents (para el usuario actual).
    • Si desea centralizar la administración de tareas en segundo plano en estas ubicaciones y / o desea aprovechar la mayor flexibilidad que proporciona launchd , especifique las tareas en segundo plano mediante archivos .plist evaluados por launchd .

Agregar tareas cron simples es probablemente más simple que crear archivos .plist para launchd , pero las utilidades de terceros como Lingon 3 pueden ayudar con la última.

Además, existen diferencias sutiles en la forma en que se invocan las tareas cron frente a las tareas de launchd por usuario: por ejemplo, las primeras no permiten la interacción del usuario a través de AppleScript, mientras que las últimas sí.

Un ejemplo es la mayor flexibilidad de launchd : el OP, en un comentario de seguimiento, solicita que la tarea se ejecute cada 30 segundos:

  • El intervalo mínimo para las tareas cron es de 60 segundos , lo que requiere la solución en la respuesta de @ghoti.

  • Por el contrario, con el archivo .plist launchd , cambiar <key>StartInterval</key><integer>60</integer> a <key>StartInterval</key><integer>30</integer> es suficiente.