Crontab en ArchLinux

cronComo prometi en la entrada anterior a esta, añadiremos el script que hemos escrito a cron para que se ejecute automaticamente cuando queramos. Como actualmente uso Archlinux primero lo he hecho en esta distro, luego lo haré en Debian para los que useis esa distro o derivadas.

El caso es que me ha costado un rato de dar con la tecla en Arch, ya que la info que he encontrado no es del todo clara y el manual de crontab tampoco, pero tras varios errores viendo » No existe el archivo o directorio » probé a hacerlo mas manual, aquí os cuento como por si también os habeis tropezado en esto.

Lo primero que haremos será crear un archivo junto al script, yo lo he llamado backup a secas.

nano backup

Y en este archivo editaremos cuando queremos que se ejecute el script de la siguiente forma

30 12 * * * /ruta/del/script.sh

Esto significa

30 = minuto 30 (0-59)

12 = hora 12 (0-23)

* =  todos los dias del mes (1-31)

* = todos los meses del año (1-12)

* = todos los dias de la semana (0-6)

Por tanto este script se ejecutara a las 12:30 de cada dia.

Si quisieramos por ejemplo usarlo una sola vez a la semana, quedaria así

30 12 * * 5 /ruta/del/script.sh

Esto nos lanzaría el script todos los viernes a las 12:30, como veis las posibilidades son infinitas, o casi 😛

Tambien existen unas palabras especiales que nos facilitan la introducción del horario, os muestro algunas:

@hourly

@daily

@weekly

@mounthly

@yearly

@reboot

Creo que son lo suficientemente obvias para no tener que explicarlas, si quisieramos hacer una copia cada hora seria

@hourly /ruta/del/script.sh

o cada semana

@weekly /ruta/del/script.sh

Ya tenemos nuestro archivo editado con el horario que queremos, guardamos y cerramos.

Si lo lo habeis usado antes, seguro teneis que arrancar y agregar al inicio del sistema el demonio cron y lo haremos asi.

sudo systemctl start cronie.service

y lo adjuntamos al inicio

sudo systemctl enable cronie.service

Ya hecho esto solo nos falta añadir el archivo a nuestro cron

crontab /ruta/del/fichero /ruta/del/script.sh

y comprobamos que este correcto con

crontab -l

lo que nos dara una lista de los script que tenemos gestionados por cron

captura-cron

Ya tenemos añadido a cron nuestro script.

Como siempre mucha y mejor información en el manual de crontab

Me da la sensación de que no he terminado de entender esto bien, o que se me escapa algo, pero la verdad es que ya lo he probado y funciona. Si descubro mas de su funcionamiento, lo dejaré por aquí.

11 comentarios:

  1. Pingback: Bitacoras.com

  2. Francisci Ospina

    Buenos días Dmacias.

    Ando tratando de hacer algo similar y tu post me cae como anillo al dedo está muy bien explicado, gracias por el tiempo dedicado en realizarlo.

    Intento hacer las cosas con ciertas diferencias; no me corre y quisiera saber si me puedes dar una mano.

    La principal diferencia radica en que mi partición home (disco A) como el disco donde hago el backup (disco B) están cifrados,así que mi script monta el disco con cryptsetup en /dev/mapper/backup y posteriormente es montada la partición en /backup, antes de hacer el backup. El montaje se hace con un keyfile para que sea automatizado. El script que hace todo el proceso se llama autoBack.sh y su contenido es:

    # Descifra el disco de destino
    cryptsetup luksOpen –key-file /home/key/keyfileback /dev/sdb1 backup;

    # Monta el disco en /backup
    mount /dev/mapper/backup /backup/;

    # Crea backup incremental
    rsync –progress -av –delete -u /home/ /backup/;

    # Desmonta partición
    umount /backup;

    # Cierra cifrado
    cryptsetup luksClose backup

    Y la tarea de cron encaragada de lanzarlo es:

    0 13 * * * /home/key/autoBack.sh

    Pero no funciona y no me hace el backup a las 13:00 cómo deberías ser.

    Cabe aclarar que el script autoBack.sh está bien, porque si lo corro desde la consola ejecuta todo el proceso impecablemente.

    No es mas, quisiera saber si puedes ayudarme con esto.

    De nuevo te agradezco por el post y por el tiempo dedicado a leer esto. De antemano agradezco en caso de que puedas ayudarme con mi problema.

    • Francisci Ospina

      Se me olvidaron un par de detalles, para cron utilizo cronie, y al revisar el estado del servicio con: systemctl status cronie.service
      me muestra que el servicio está funcionando a la perfección:

      cronie.service – Periodic Command Scheduler
      Loaded: loaded (/usr/lib/systemd/system/cronie.service; enabled)
      Active: active (running) since dom 2013-07-07 06:56:22 COT; 1h 24min ago
      Main PID: 225 (crond)
      CGroup: name=systemd:/system/cronie.service
      ??225 /usr/bin/crond -n

  3. Holaaaaa
    no se si he entendido bien, pero te explico
    Tiene que crear un nuevoarchivo que contenga la linea que me muestras 0 13 * * * /home/key/autoBack.sh y luego agregarlo a crontab asi
    crontab /home/key/nuevoarchivo /home/key/autoBack.sh
    luego haces un crontab -l y te debe salir la lista de acciones de crontab, y debe de estar.
    Si de todos modos no te funciona prueba a cambiar 0 13 * * * por @daily por si acaso
    Espero que te funcione y que te pases por aqui a decirnos que tal te fue.

    Un saludo 🙂

    • Francisci Ospina

      Gracias por la respuesta.

      El acrchivo que describes ya lo tenía y lo cargaba con crontab. El archivo es backupCron y su contenido es el mismo que tu describes: 0 13 * * * /home/key/autoBack.sh.

      Al usar crontab -l la tarea aparece registrada pero de nuevo no ocurre nada.

      No he probado con el @daily así que lo voy a hacer y me pego de nuevo una pasada por acá.

      Esto me genera dos nuevas dudas ¿el @daily tiene un horario predefinido para actuar? y ¿dichi horario es personalizable?.

      De nuevo gracias por tu ayuda, voy a ver como me sale todo.

    • Francisci Ospina

      Buanas tardes Dmacias.

      El problema era la banalidad mas grande del mundo. No le había dado privilegios de ejecución al script con chmod +x autoBack.sh.

      La razón por la que si me corría desde la consola y no desde el crontab es porque la invocaba con sh autoBack.sh y no con ./autoBack.sh que es como se invocan los ejecutables.

      De nuevo muchas gracias por tu ayuda tu post fue de mucha utilidad y te ganaste un nuevo suscriptor.

      Hay algo que creo que no sobra decir y es que soy usuario asiduo de los RSS así que no estaría de mas pedirte de la forma mas cordial que lo implementes.

  4. Por cierto, he actualizado la plantilla y la letra de los comentarios se ha quedado digamos enanas, o es mi ordenador k se a quedado un poco tonto con la calor ???

  5. Desde luego, si no me lo cuentas, creeria que solo me pasan a mi estas cosas jajajajaja xDD.
    Yo tambien soy de los que aun usan los RSS y almenos a mi, si pincho sobre el iconito rojo de feedburner te lleva a mis rss, solo copias esa dirección en tu lector de feed favorito y listo.
    De todos modos aquí te la pongo, http://feeds.feedburner.com/Dmaciasblog
    EDITO:

    Hay algo que creo que no sobra decir y es que soy usuario asiduo de los RSS así que no estaría de mas pedirte de la forma mas cordial que lo implementes.

    parece ser que de nuevo feedburner hace lo que le sale de los web’s, haber si mañana con mas tiempo lo miro

    Gracias por pasarte a comentar 🙂

    Un saludo

  6. Luis Miguel Cajilema Lucero

    y si quisiera correrlo cada 5 minutos como hago ..

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.