Necesito ejecutar un script diariamente. El script debe ejecutarse como un usuario específico (ej. Usuario1) no como root. Así que puse el archivo cron en /etc/cron.d y puse el nombre de usuario en la línea (segunda columna). Pero da un error que dice que no se encuentra el comando. Sospecho que el script no se ejecutó como el entorno del usuario1. ¿Me he perdido algo?
19
Respuestas:
Solo
/etc/crontab
y los archivos/etc/cron.d/
tienen un campo de nombre de usuario. En ese archivo puedes hacer esto:Desde el crontab de root
sudo crontab -e
puede usar:O puede usar el crontab real del usuario de esta manera:
La segunda columna en cualquier archivo crontab es la hora a la que desea que se ejecute el trabajo. ¿Te refieres al sexto campo?
fuente
/etc/cron.d/
archivos son parte de/etc/crontab
.sudo
Tampoco tiene sentido. Quitaré esa parte.sudo su...
generalmente es innecesario;sudo -u <user> <command>
Suele ser suficiente. (b) sudo se ahogará en algunos sistemas si no hay un TTY conectado (como cuando lo ejecuta cron). Eso se puede arreglar en su archivo sudoers.Es posible que deba establecer la RUTA para ese usuario, si el ejecutable que está usando está en, digamos, / usr / local / bin. Para establecer la RUTA, ponga algo como esto antes de los cronjobs:
La otra forma es especificar completamente la ruta a sample_executable en su cronjob, entonces:
Si sample_executable hace referencia a los ejecutables que no están en la RUTA estándar, debe usar la primera opción.
fuente
El directorio típico para crontabs de usuario está en / var / spool / cron / crontabs. El formato de archivo es el que no incluye el nombre de usuario. Las crontabs de usuario son propiedad del usuario y llevan el nombre del usuario con el modo 0600. Esto se maneja mejor escribiendo su archivo de pestañas y usándolo
crontab -u username filename
para configurar las entradas cron que desee para ese usuario.fuente