No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Cómo y para qué dejar tareas programadas

21/23
Recursos

Aportes 177

Preguntas 37

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Para los que no les funcionó el at y les salió esto “Can’t open /var/run/atd.pid to signal atd. No atd running?” Tienen que activar los servicios atd y cron de la siguiente forma.

Ejecuta para ver si los servicios están activos:
$ service --status-all

Para activar cada uno:
$ sudo service atd start
$ sudo service cron start

Finalmente repite el primer comando y deberá salirte un signo + en esos servicios. Después prueba de nuevo programar las tareas. 😄

Ese fondo blanco me tiene ciego

Ya me estaba volviendo loco porque ni at ni cron ejecutaban mis tareas. Sólo hay que ejecutar antes de programar tareas

sudo service atd start
sudo service cron start

Mis notas
Para realizar tareas programadas, se puede hacer de dos formas:

  • at: permite realizar la programación de tareas unicas en un momento especifico. Ejemplo:
  1. at now +2 minutes (instrucción para ejecución de tarea en 2 min)
  2. echo “hola mundo!” > /home/user/hola.txt (se ingresa la tarea a ejecutar)
  3. se oprime Ctrl + D para finalizar el ingreso de tareas en at.
  • cron: el comando cron permite a demás de programar tareas, también que estás sepuedan hacer de forma periodica. Este comando se apoya en un archivo “crontab” donde se guardar las tareas que se programan en el sistema.
  • para modificar el archivo mencionado, se ingresa: crontab -e. al principio saldrá un texto con instrucciones; las tareas a programar deben ir al final de este texto.
  • Las tareas a realizar se deben ingresar de la siguiente manera:
    Minuto Hora DiaDelMes Mes DiaDeLaSemana Usuario Comando
  • Un asterisco * como valor en los primeros cinco campos, indicará inicio-fin del campo, es decir todo. Un * en el campo de minuto indicará todos los minutos.

Siento que este curso fue sumamente útil, y que aporto cosas vliosisimas, pero lastimosamente no tengo aún las capacidades ni los conocimientos para aprovecharlo, por el momento me alegra haber aprendido algunos comandos de la linea de comandos, y en un futuro espero commprender mucho mejor todo lo aprendido aquí

Ojo que debemos levantar los servicios
sudo service atd start
sudo service cron start

at now +2 minutes
echo “HOLA…!!” > /home/paul/development/learning/prog_bash_shell/hola.txt

CRON

crontab -e

Y lo que demos insertar va en este orden:
1.- Minuto a ejecutarse Numero=0 a 59
2.- Hora a ejecutarse Hora=0 a 23
3.- Dia del mes o Todos Dia = 1 - 31 / Todos = *
4.- En que mes o Todos Meses = 1 - 12 / Todos = *
5.- Dia de la semana o Todos Dia = 0 (Sunday) / Todos = *

Ej:
45 12 * * * <Rutadelarchivo>/archivo.extension

Apuntes
Cómo y para qué dejar tareas programadas

Hemos visto que el tema de crear nuestros propios comandos es sumamente útil para no tener que estar repitiendo constantemente lo mismo. Pero, la mayor utilidad es poder dejar tareas programadas, para hacer esto tenemos dos utilidades:
Pero primero para evitar que salga el error “Can’t open /var/run/atd.pid to signal atd. No atd running?” se tiene que activar los servicios atd y cron.
Ejecutamos el siguiente comando para saber si los servicios están activos:

$ service --status-all

si sale así, efectivamente no se encuentran activos:

[ - ]  atd
[ - ]  cron 

Para activar cada uno:

$ sudo service atd start
$ sudo service cron start

Y volvemos a verificar con el primer comando y debe aparecer así:

[ + ]  atd
[ + ]  cron

at now + tiempo unidad_de_tiempo #Ejecuta una tarea después de un tiempo

ejemplo:

at now +2 minutes
warning: commands will be executed using /bin/sh
at> echo "hola Mundo" > ~/hola.txt
at> <EOT>          #ctrl +d
job 4 at Mon Jul  6 11:53:00 2020

-rw-rw-rw- 1 diego diego  11 Jul  6 11:53 hola.txt

_crontab -e #muestra las tabla de cron o de tareas programadas _
ctrol+i #insertar nueva información

   12     45       *      *          *          echo”Hola” > hola2.txt
#Min   hora  día  mes  semana   comando
:x # para salir

Muy bien, entonces ahora ya sabes cómo crear tus propios comandos, como ejecutarlos en forma periódica y completamente desatendida.

.--------------- minuto (0-59)
| .------------ hora (0-23)
| | .--------- día del mes (1-31)
| | | .------ mes (1-12) o jan,feb,mar,apr,may,jun,jul… (meses en inglés)
| | | | .— día de la semana (0-6) (domingo=0 ó 7) o sun,mon,tue,wed,thu,fri,sat (días en inglés)
| | | | |

          • comando a ejecutar

Programación de tareas

Son tareas programadas que se ejecutan en un tiempo especifico.

  • at: at now +2 minutes, luego se escribe el procedimiento y salido de allí con CTRL+D.
    .
  • cron: crontab -e: me permite editar, ver y crear nuevas tareas
    Ejemplo: 45 12 * * * echo “hola” > hola2.txt

Siento que me voy a quedar ciego con el fondo blanco jajaja

NOTA: Para que funcione, al iniciar la terminal debemos escribir

sudo service atd start
sudo service cron start

Si no, por más que escribas los comandos, no funcionarán.

Aquellos que no les funcione el comando at y que al correrlo les sale un error como este

Can’t open /var/run/atd.pid to signal atd. No atd running?

Pueden intentar esta solución

sudo service atd start

PSDT: Estuve buena la clase.

Comando para iniciar el proceso cron:

Para iniciar el proceso atd:

Recuerden instalar at

Se puede instalar con:

sudo apt install at

cron es un administrador de procesos en segundo plano, ejecuta procesos a intervalos en (minuto, día, semana o mes).

comando cron:
Utiliza un archivo: crontab donde programamos las tareas
Acceso:
crontab -e →editar crontab
Sintaxis de tareas:
<min> <hora> <dia_mes> <mes> <dia_semana> <expresion>

elegir opción 2

Para los que les sale:
bash: at: command not found

Intenten esto:
sudo apt-get install at

Programacion de Tareas:
**at **
Programa la ejecucion de comandos pasado un tiemplo determinado
Sintaxis:

at now +<tiempo>
	<expresiones>

salimos del editor con ctrl + e

Excelente funciono todo.
Solo deben usar los siguiente comandos antes:
sudo service atd start
sudo service cron start

Crontab ofrece muchas opciones para desglosar la hora, una de las más útiles es esta:

Se le puede indicar que ejecute una tarea cada 15 minutos de dos formas principalmente.

0,15,30,45 * * * * comando

Y la forma abreviada es:

*/15 * * * * comando

Además de 15 minutos, puedes poner los minutos que sean, con este método puedes poner los intervalos que quieras, tanto en los minutos como en los demás campos.

Les dejo una página en la que puede probar la periodicidad de su cron, excelente curso!
https://crontab.guru/#0_0_26_9_1

Diferencia entre atd y cron, para que aclarar alguna duda:
atd: está encargado de los programas a ejecutar una sola vez pero en un momento específico en el futuro.
cron: es el demonio responsable de ejecutar tareas programadas y recurrentes (todos los días, todas las semanas, etc.), si desean mayor información les recomiendo el siguiente link: https://debian-handbook.info/browse/es-ES/stable/sect.task-scheduling-cron-atd.html

Perfecto, me faltaban subir los servicios, pero con la ayuda brindada en los comentarios me fue super bien

Buen dia, al hacer la practica del comando at al finalizar es decir el ctrl+d recibía este mensaje “Can’t open /var/run/atd.pid to signal atd. No atd running?”, la tarea programada quedaba en cola y esto lo pude verificar con el comando atq. Para solucionar consulte en internet y es necesario subir el servicio con el comando sudo service atd start, luego de esto las tareas se ejecutaron según programación.

puedes hacer contab para por ejemplo renovar de manera automática los certificados ssl de letsencrypt

creamos un archivo de nombre updatessl.sh yo los guardo en /root/maintenace/ pero puede ser en cualquier directorio

#!/bin/bash
 
#Updating letsencrypt  
certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"

les damos permisos de ejecución

chmod +x updatessl.sh

Ceamos el crontab

#renovacion de ssl
30  11  *  *  *  root /root/maintenace/updatessl.sh >> /root/maintenace/cert-renew.log 2>&1
28  23  *  *  *  root /root/maintenace/updatessl.sh >> /root/maintenace/cert-renew.log 2>&1

en crontab:

m := minutos
h := hora del dia
dom := dia del mes.
mon := en que mes.
dow := dia de la semana

para los que no les sirvio con atd lo que van a hacer es instalar el paquete con
sudo apt install at
sudo service atd start
y listo ya tienen su automatizador de tareas

y para quitar la tarea programada?..para que ya deje de funcionar…

No pude ver esta clase por los colores de terminal, por favor modifiquen eso

Herramientas para programar tareas:

  • at
  • crontab

No entiendo este cambio a la terminal en color blanco! quejesto!

dependiendo de la distribucion de linux se deberan inicializar los servicios ejemplo
sudo service atd start
sudo service cron start

eso claro si no les funciona.

En caso de que les marque el siguiente error en at

Can’t open /var/run/atd.pid to signal atd. No atd running?

se resuelve levantando el servicio de at

$sudo service atd start 

La primera vez que se utiliza crontab -e aprece este mensaje:
no crontab for sammy - using an empty one

Select an editor. To change later, run ‘select-editor’.

  1. /bin/nano <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]:
entonces se selecciona el editor que queremos usar. Pero si no aparece ningún menú de editores de texto. entonces utilizar los
siguientes comandos para asignar un editor de texto.
$ which $EDITOR
$
$ EDITOR=vi “Si no queremos usar Vin, podemos poner en lugar
de vi, nano”
$ export EDITOR
y listo.

Para los que no tienen instalado el servicio de ATD. Basta con el ejecutar el comando:

sudo apt-get install at

Luego con el comando:

service --status-all

Verifican que at esta corriendo.

Es bueno tener siempre una copia de seguridad de todos los trabajos que insertéis en crontab (o incluso una copia de todo el texto que muestra crontab -e), ya que, con el comando crontab -r borras todos los trabajos que están dentro, con lo cerca que está la r de la e en los teclados, y no hay forma de recuperarlos.

chavos, les dejo esta pagina, me ha sido muy util para hacer mis crons.
les recomiendo usar “/” para dividir cada asterisco.
https://crontab.guru/

La mayor utilidad de crear scripts, es que puedan ejecutarse sin que nosotros debamos correrlos manualmente ni con la necesidad de estar frente al ordenador. Para programar esta tareas, tenemos nos utilidades que nos sirven para esto: at y cron.

  • at: con este comando, podemos dejar tareas programadas para que se ejecuten en un tiempo que le indiquemos. Por ejemplo, programemos una tarea para que se ejecute en dos minutos. Primero, abrimos la terminal de at indicándole en cuánto tiempo deben ejecutarse las instrucciones que ingresaremos: $ at now +2 minutes. Luego, con la terminal ya abierta, podemos ingresar las instrucciones que deseamos que se ejecuten:
    at> echo "Hola mundo!" > /home/juan/hola.txt
  • cron: con esta herramienta ni siquiera tengo que invocar el comando, sino que dejamos los comandos programados para que se ejecuten de forma periódica. Esta herramienta utiliza un archivo (crontab, una tabla de cronjobs o tareas programadas) que maneja una sintaxis algo particular. Podemos editar este archivo ejecutando el comando $ crontab -e. Una vez abierto el archivo, tenemos una corta documentación sobre el funcionamiento y la sintaxis del archivo.

Bueno que loco Estos Códigos me volaron la cabeza !!

en el día a día es útil para crear tareas de respaldos, compresiones, envíos a la NAS u otro servidor, eliminar, depurar, reiniciar servicios, obtener logs de las operaciones, en fin utilidades para que sólo registres en alguna bitácora todo lo que ya ha hecho por tí estos cron jobs

Si a alguien le sirve dejo esto por aca:
Me salia “No crontab for usuario” intente con el contrab -e y no me funcionò, fue necesrio apuntar directamente al archivo asi:

crontab /etc/crontab

Cuando ejecuté el comando " crontab -e ", me salió esto:

Para los que deseen elegir vim:

What is the difference between the basic and tiny options?

  • vim.basic es simplemente vainilla Vim (as you can check with apt-file vim.basic or dpkg -S /usr/bin/vim.basic).

  • vim.tiny, es una versión reducida de Vim.

muchas gracias por la información, no conocia estos procesos

crontab -e = permite editar (ver tareas programadas )y crear nuevas tareas
lo primero que se escribe es el minuto en que debe ejecutarse un comando, luego la hora, luego el mes (* en todos los meses),luego el día del mes (*cualquier día de la semana)

Para que dejar tareas programadas? R// para que se ejecuten mientras nosotros podamos estar haciendo otra cosa.

Hola una pregunta saben que puedo hacer para que se ejecuten mis tareas programadas con At . Es que lo que me aparece al momento de ejecutarlo es Can’t open /var/run/atd.pid to signal atd. No atd running?
¿Alguna idea de como lo puedo solucionar?

Tambien si falla el crontab no funciona quiza sea porque no esta en estado start. Tendrías que ejecutar en la terminal:

sudo service cron start

Estupenda clase, por medio de los comandos at y cron vamos por a poder asignar las tareas que queremos que se ejecuten cada cierto tiempo en un ordenador.

++La pantalla blanca se logra con click derecho en la ventana de la terminal despues propiedades y por ultimos color ahi aparaceran las colores pudes usar el de tu gusto ++

Está herramienta puede ayudar a programar sus crontabs

https://crontab.guru/#0_12___*

El comando (at) lo entendí perfectamente, de hecho es fácil de usar, pero el comando (cron) no me quedó muy claro de cómo usarlo, porque al ejecutar el comando, me sale información difierente de la que se ve en el video.

; para ejecutar comandos uno despues de otros

Programación de tareas:

  • At: Se instala, se define el momento y comando
  • Cronotab -e: Ya viene por defecto. Nos permite hacer tareas repetitivas

Completamente útil.

Sería bueno hacer los comandos sobre una pantalla negra, o no se si se le pueda cambiar el color por algún lado porque casi no se ve

Utilidades programar tareas.

Cómo y para qué dejar tareas programadas

Es posible programar tareas en la terminal para que se ejecuten incluso cuando no estamos usando la computadora, para hacer eso existen dos utilidades:

  • at:

    Ejemplo:

    $ at now +2 minutos
    warning: commands will be executed using /bin/sh
    at> echo "Hola mundo"> /home/user/hola.txt
    #crtl d para salir
    

    Con este script se ejecutará el echo y dirigirá la salida al archivo hola.txt dentro de 2 minutos.

  • cron: A diferencia de at, con cron puedes programar tareas para que se ejecuten sin invocar el comando at.
    Con el comando $ crontab -e podemos ver las tareas que hay programadas y crear nuevas tareas.

    Ejemplo:

    <minuto> <hora> <dia> <mes> <dia de la semana> <comando>
    45 12 * * * echo "Hola" > hola2.txt
    # Todos los dias de todos los meses a las 12:45 guardará
    # en el archivo llamado hola2.txt con un Hola dentro.
    # Si el archivo no existe lo creará.
    

Estas tareas se guardan en un archivo?, o solo con ejecutarla desde la terminal ya quedan programadas?, como se haría para modificar o eliminar la tarea?

¿Si el computador está apagado, apenas se prenda se harán los comandos pendientes o se dejarán pasar?

El uso del comando cron no me quedó claro, alguien tiene algunas referencia dónde poder revisar, porfa.

Buenas tengo una duda, en la sintaxis del cron utilizaban: min hora d.mes n.mes d.semana Qué pasaría si solo quiero limitar hasta el día del mes y el día de la semana no le pongo cero en el lugar de d.semana o simplemente no pongo mas nada

Gracias .😄

Les recomiendo mucho la siguiente página para enfatizar en at, ya que en la clase no se hizo tanto énfasis en él.

aplicación de nuevas tareas

Hi guys, if you’re using Mac OS or find that vim editor is a bit messy try using NANO, I was running into an error trying to save my crontab with vim.

EDITOR=NANO crontab -e

Resumen de lo que tienes que probar en tu pc:
crontab -e
45 12 * * * echo “Holi” > hola2.txt

Estos comandos los desconocía pero tienen una utilidad increíble.

Para los que como a mi, después de ejecutar el comando

service --status-all

no nos aparece el comando “atd” instalado, solo debemos ejecutar la siguiente linea en la terminal

sudo apt install at

y listo, ejecutan nuevamente la primera linea de comando aquí presentada y nos será confirmado el comando en nuestras terminales

Una excelente herramienta para poder usar crontab de una forma más sencilla
https://crontab.guru/

programar con crontab

programar con crontab

El comando crontab -e no me funciona en mac. Alguien sabe como se ejecuta?

genial muchas gracias 😄

Si les da problemas el comando at dándoles un mensaje que no puede ejecutar el atd, solo instalen el daemon, sudo apt intall daemon y listo ya pueden ejecutarlo!

No se si sea yo, pero con la terminal en fondo blanco ya no veo nada. XD

Me encantó esto de automaitzar tareas. Me muero de ganas por terminar de automatizar maquinas para hacer tareas repetitivas todo el tiempo.

HOla. El Comando at si me funciona pero el cron no 😯 e inicie los servicios como lo recomiendan aca y nada.

¿Entonces si queremos que el programa se deje de ejecutar, tenemos que borrarlo del crontab?

Mi sistema esta recien iniciado

sudo apt install at

Increíble en verdad, sí tan solo WSL estuviera para Windows 8 me habría sacado la lotería.

Programación de tareas

El poder de la terminal

Exelente clase

Ya casi se acaba 😕 😦 !

No me funciona el comando

Vaya poder! 😲

Excelente, muchas gracias.

Wow.

La utilidad cron : sirve para dejar tareas programadas.

Los cron jobs son muy útiles en programación, puedes programar un cron que ejecute un script en PHP para revisar, por ejemplo, las suscripciones de tus usuarios, o un cron para enviar correos a tus usuarios cada día de la semana como un boletín informativo, etc 😄!

Super esta herramienta para liberar carga de trabajo

excelente clase, super util a la hora de automatizar tareas

Muy buenas utilidades nos ofrecen las tareas programadas.

Programación de tareas:

  • at - Se ejecuta en cierto tiempo establecido
  • cron - Se ejecuta periódicamente.