Querer ejecutar un trabajo cron por horas como un usuario específico (xfeautomation) y un entorno virtual de Python. Al ejecutarlo como un usuario específico, ¿tendré que agregar la ubicación del script en PATH? Mi trabajo cron actual se ve así:
0 * * * * xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
¿Es esta la forma correcta u óptima? tia
Respuesta1
cambiar a ese usuario.
sudo su - xfeautomation
Correr
crontab -e
Aparecerá un editor de archivos con un archivo vacío. Agregue su trabajo sin nombre de usuario allí y guárdelo.
0 * * * * /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
Verificación:
sudo su - xfeautomation
crontab -l
O
sudo crontab -u xfeautomation
Respuesta2
Al ejecutarlo como un usuario específico, ¿tendré que agregar la ubicación del script en PATH?
Por lo general, no es necesario modificar la variable de entorno PATH cuando utiliza rutas absolutas como lo hace ahora con/opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
Como administrador de sistemas, tiene varias opciones para crear trabajos por lotes programados que se ejecutan con una ID de usuario diferente:
Como se explica enesta respuesta:configurar un crontab personal para ese usuario. Los trabajos en un crontab personal siempre se ejecutarán con el ID de usuario de su propietario.
Tenga en cuenta que cuando usted, como administrador, configura un crontab personal para otro usuario, ese usuario podrá modificar y eliminar esa especificación del trabajo cron, deshaciendo su trabajo.Alternativamente puedesprogramar un trabajo del sistema desde el crontab del sistema. El crontab del sistema (normalmente
/etc/crontab
y/o los archivos desplegables en/etc/cron.d/
) es propiedad del root y no puede ser modificado por usuarios sin privilegios. La especificación del trabajo en el crontab del sistema admite un campo adicional que no está presente en los archivos crontab personales: el campo #6 necesita un nombre de usuario, comoxfeautomation
el ID de usuario que se utilizará para ejecutar el trabajo.
La sintaxis que publicó es correcta para una entrada/etc/crontab
o un archivo desplegable como/etc/cron.d/wf_api_linux
0 * * * * xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
Dado que está registrando todos los resultados y los errores, no es una preocupación, pero normalmente cron enviará por correo electrónico los resultados estándar y los errores a la raíz cuando configure un crontab del sistema y directamente al usuario cuando use un crontab personal.
Hasta donde yo sé, ambos métodos dan como resultado las mismas condiciones para el trabajo y, aparte de las preocupaciones sobre la propiedad de las especificaciones del trabajo y los correos electrónicos, son equivalentes.