¿Cuál es la forma correcta de editar un archivo crontab?

¿Cuál es la forma correcta de editar un archivo crontab?

Estoy intentando automatizar la actualización de awstats para mi servidor web y entiendo que necesito usar cron para configurarlo. ¿Entonces cada usuario tiene un archivo crontab?

estaba siguiendo las instruccionesaquícomunidad/AWStats

Y dice ir al archivo en:/etc/crontab

Ese archivo ya contiene cierta información. ¿Es este el archivo principal crontabo algo así? He visto algunas instrucciones en línea para usar el archivo que aparece con crontab -e.

¿Cuál es el archivo adecuado a utilizar y la mejor manera de hacerlo?

Si programo una tarea como mi usuario no root, ¿se ejecutará sola en el intervalo de tiempo especificado, sin problemas?

¿Tendré que reiniciar el servidor después de guardar el trabajo cron en el crontabarchivo antes de que comience a funcionar?

Respuesta1

¿Cuál es el archivo adecuado para usar y la mejor manera de hacerlo?

crontab -ees la mejor manera de hacerlo: esto le permitirá editar fácilmente los 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 que puedas, así que si lo que estás haciendo no requiere root, no uses root. Si ni siquiera necesitas poder accedersuarchivos y carpetas de la cuenta, luego puede crear un nuevo usuario y usar esa cuenta de usuariosolopara esa tarea. Por otro lado si tu tareahacerequiere root, use el crontab de root ( su/ sudo supara root y 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, en la próxima hora programada posible).

¿Por qué no editar el archivo directamente? ¿Donde está localizado?

Los archivos crontab del usuario se encuentran en /var/spool/cron/crontabs, pero sus permisos están configurados de tal manera que no se pueden acceder a ellos sin el permiso de superusuario (pero una vez abiertos y el proceso cron pierde 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 severa DO NOT EDIT THIS FILEadvertencia en la parte superior a este efecto. En cambio, el archivo está diseñado para editarse a través crontab -edel cual se configura un espejo temporal del archivo /tmppara editarlo, sin la advertencia severa, después de lo cual verifica e instala el archivo crontab permanente. Todo esto se puede hacer sin el permiso de superusuario.

Si editara el archivo crontab directamente, no sé cuál sería el resultado. Es posible que simplemente no entre en vigor hasta el próximo reinicio y que cualquier error sea difícil de depurar.

Respuesta2

Cada usuario tiene el suyo crontab.

Para verlo solo escribe

crontab -l

y sí, lo has visto bien, cuando quieras agregar un crontabsimplemente hazlo.

crontab -e

por primera vez se le preguntará sobre el editor que desea utilizar crontab. Como eres un novato como dices, te recomiendo usar nano, es el editor más sencillo de usar.

El crontab en sí funciona así

MIN =  Minute 0-60
HOUR = Hour [24-hour clock] 0-23
MDAY = Day of Month 1-31
MON = Month 1-12 OR jan,feb,mar,apr ...
DOW =  Day of Week 0-6 OR sun,mon,tue,wed,thu,fri,sat
COMMAND = Command to be run Any valid command-line

Entonces, por ejemplo, para activar un trabajo cada 15 minutos solo los lunes, hazlo así.

*/15 * * * mon /home/me/yourscript.sh

y SÍ, es muy importante que coloques tu cronjob en el crontab del usuario que tiene suficientes derechos para ejecutarlo.

Entonces, si su script necesita ser root o un usuario especial, asegúrese de su a ese usuario y agregue el cronjob allí.

¡También muy importante!

¡cronjob es tonto! Sí lo dije. Asegúrese siempre de ingresar la RUTA completa que application/command/scriptestá utilizando, porque crontab no funcionará con .bashrco similar. Siempre debes asegurarte de indicarle a cron dónde puede encontrar los archivos y directorios.

Para responder al resto de tus preguntas:

Por supuesto que funcionará solo, para eso está. Pero debes comprobar que cronjob realmente funciona 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 Linux si instala un nuevo kernel. Para que funcione, deberás 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.

información relacionada