Estoy tratando de agregar una entrada crontab al crontab de mi usuario raíz. Puedo agregar una entrada sin problemas al crontab de mi usuario habitual, pero cuando hago su
root al usuario e intento agregar una entrada crontab, no guarda la entrada.
El proceso por el que estoy pasando es:
$sudo su
$crontab -e
# write out my crontab entry and then :wq to write and quit vi
$crontab -l
crontab: no crontab for root
También intenté salir de vi usando wq!
y todavía no guardará la entrada.
La entrada que estoy ingresando es:
* * * * * /sayhi.sh
sayhi.sh
es un script de shell simple que estoy usando para intentar verificar que el trabajo cron se está ejecutando.
¿Hay algo diferente que deba hacer si intento crear una entrada crontab para root? He estado buscando y no he visto nada sobre crontab que sea particular para el usuario root.
¡Cualquier ayuda sería apreciada!
Sus comandos deberían funcionar, sin embargo, no es como yo lo haría.
En su lugar, intente: -
sudo crontab -e -u root
luego a la lista: -
sudo crontab -l -u root
Como regla general, me tomo muchas molestias para nunca ejecutar un shell raíz. Cuando lo hago, uso sudo -s
en lugar de sudo su
.
Cuando salga de vi, debería ver dos líneas: -
crontab: no crontab for root - using an empty one
crontab: installing new crontab
Si no consigues esas dos líneas tienes serios problemas. Si lo hace y luego el comando de lista no muestra nada, sospecharía problemas de permisos.
Tampoco usaría su línea de ejemplo ya que le está pidiendo al sistema que ejecute "sayhi.sh" una vez por minuto todo el día, todos los días. También me pregunto sobre la ruta "/sayhi.sh": ¿realmente tiene el script en la parte superior de su unidad de arranque? Esa tampoco es una buena idea o quizás te refieres a "~/sayhi.sh", que en este caso estaría en el directorio de inicio raíz (generalmente /var/root) o te refieres a tu directorio de inicio. En los archivos crontab, es mejor codificar explícitamente la ruta completa, independientemente.
También se da cuenta de que muchos resultados del trabajo cron no irán a ningún terminal, sino que se enviarán por correo electrónico a la raíz (de forma predeterminada).
Si desea verificar que cron está ejecutando tareas de una manera simple
*/5 * * * * echo "CRON" > /Users/myname/.cronout
hará eso (el primer campo ejecuta la tarea de forma mucho más razonable cada 5 minutos).
Los propios crontabs se almacenan en /usr/lib/cron/tabs. /usr/lib/cron
es en realidad un enlace /var/at
y si vas allí encontrarás el tabs
directorio y también el cron.deny
archivo. Verifique que nadie haya agregado la raíz a eso y si aún no tiene alegría, puede intentar:
echo > /var/at/tabs/root
que debería crear un archivo vacío que luego podría editar.
crontab: no crontab for root
y no guarda el entrada de trabajo. Usted mencionó que puede ser un problema de permisos, ¿tiene alguna sugerencia sobre los permisos de qué archivo debo verificar? La idea de que el usuario raíz no tenga permisos para un archivo en particular parece extraña, ¿no?Estaba teniendo el mismo problema. Esto es lo que funcionó para mí (y por "funcionó" me refiero a que pude hacer que un trabajo cron se ejecutara como root):
sudo bash -login # su always tries to force me to change my password >:[
vi /usr/lib/cron/tabs/root # Just edit it directly
chmod 600 /usr/lib/cron/tabs/root
Los trabajos que coloque allí se ejecutarán, pero crontab -e
aún no funcionan, incluso después de crear el crontab.
kenorb