¿Cuál es el archivo adecuado para usar y la mejor manera de hacerlo?
crontab -e
es la mejor manera de hacerlo, esto le permitirá editar fácilmente crontabs por usuario.
Si programo una tarea como mi usuario no root, ¿se ejecutará sola en el intervalo de tiempo especificado, sin problemas?
Sí, y se ejecutará con los privilegios de esa cuenta de usuario.
Como principio, es mejor ejecutar tareas programadas con los privilegios más bajos con los que pueda salirse con la suya, por lo que si lo que está haciendo no requerirá root, no use root. Si ni siquiera necesita poder acceder a los archivos y carpetas de su cuenta, puede crear un nuevo usuario y usar esa cuenta de usuario solo para esa tarea. Por otro lado, si su tarea no requiere de raíz, crontab uso de raíz ( su
/ sudo su
a raíz luego use crontab -e
).
¿Tendré que reiniciar el servidor después de guardar el trabajo cron en el archivo crontab antes de que comience a funcionar?
No, comenzará a funcionar de inmediato (bueno, la próxima hora programada posible).
¿Por qué no editar el archivo directamente? ¿Donde está localizado?
Los archivos crontab de los usuarios se encuentran en /var/spool/cron/crontabs
sus archivos , pero sus permisos están configurados de tal manera que no se pueden atravesar sin el permiso del superusuario (pero una vez abiertos y el proceso cron pierde los privilegios, aún puede acceder al archivo).
El sistema no está diseñado para que los usuarios finales editen estos archivos directamente, y de hecho la parte superior del archivo tiene una DO NOT EDIT THIS FILE
advertencia severa en la parte superior para este efecto. En cambio, el archivo está diseñado para editarse mediante el crontab -e
cual configura un espejo temporal del archivo /tmp
para su edición, sin la advertencia severa, después de lo cual comprueba e instala el archivo crontab permanente. Todo esto se puede hacer sin el permiso del superusuario.
Si editó el archivo crontab directamente, no sé cuál sería el resultado. Es posible que simplemente no surta efecto hasta el próximo reinicio y que cualquier error sea difícil de depurar.
crontab -e
le permite editar su crontab de usuario sin sudo. Los crontabs de usuario se encuentran en/var/spool/cron/crontabs
un directorio al que no se puede acceder sin el permiso del superusuario (pero de tal manera que una vez que cron elimina los privilegios, aún puede leerlo). Incluso si usa sudo para intentar editar el archivo directamente, verá una gran advertencia en la parte superior, "NO EDITE ESTE ARCHIVO": el archivo está diseñado para editarse con elcrontab
comando que usa una copia temporal/tmp
y luego se instala después de guardarlo.Cada usuario tiene su propio
crontab
.Para verlo solo escribe
y sí, lo has visto bien, cuando quieres agregar un y
crontab
luego simplemente hazpor primera vez se le preguntará sobre el editor que debe usar
crontab
. Como eres un novato como dices, te recomendaría usar nano, es el editor más simple de usar.El crontab en sí funciona así
Entonces, por ejemplo, para activar un trabajo cada 15 minutos solo los lunes, lo haces así
y SÍ, es muy importante que coloque su cronjob en el crontab del usuario que tiene suficientes derechos para ejecutarlo.
Entonces, si su script debe ser root o un usuario especial, asegúrese de su su a ese usuario y agregue el cronjob allí.
También muy importante!
cronjob es tonto! Si lo dije. Siempre asegúrese de ingresar la RUTA completa a la
application/command/script
que está utilizando, porque crontab no funcionará con.bashrc
o similar. Siempre debe asegurarse de decirle a cron dónde puede encontrar los archivos y directorios.Para responder el resto de sus preguntas:
Por supuesto, se ejecutará solo, para eso está ahí. Pero debe verificar que cronjob realmente lo haga, o si le falta algo. Por ejemplo, inicie sesión en un archivo de registro para ver si realmente funciona.
Y NO, no es necesario reiniciar. Normalmente, solo es necesario reiniciar con Linux si instala un nuevo núcleo. Para usarlo, necesitarías reiniciar. Casi todo lo demás se puede hacer sin reiniciar en Linux. Por supuesto que hay excepciones, pero en general esta afirmación es correcta.
fuente