Bienvenidos a esta Guía Rápida de Linux para Hackers #16 Programación de Tareas desde la Shell. Comparte este articulo y síguenos para recibir más capítulos y cursos gratis.

Esta guía es parte de un curso mucho más grande en donde te enseñamos a convertirte en hacker de 0 a 100. Desde los conocimientos más básicos hasta conseguir empleo.

En esta guía veremos desde cero un tema tan amplio como es Linux y lo haremos desde el punto de vista del hacking y la ciberseguridad.

Para saber más comente a continuación, respondemos todos y cada uno de los comentarios.

Índice

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Lo que aprenderás en este artículo:

  1. Qué es un proceso en Linux y los diferentes tipos de procesos.
  2. Los distintos estados en los que puede encontrarse un proceso.
  3. Cómo identificar y monitorear procesos en Linux.
  4. Comandos para finalizar procesos y sus señales correspondientes.
  5. Gestión de prioridades para procesos en ejecución.
  6. Manejo de procesos en segundo plano y su reactivación.
  7. Cómo mantener procesos persistentes después de cerrar una terminal.
  8. Administrar servicios en Linux utilizando systemctl.
  9. Ejemplo práctico: Configuración básica de MariaDB y administración de puertos.

Linux al mando

El comando at de Linux se utiliza para programar una tarea para que se ejecute una sola vez en un momento determinado, sin editar un archivo de configuración. Es una alternativa al programador de tareas cron. Puede resultar útil si queremos ejecutar un proceso después de un tiempo, como apagar el sistema, realizar copias de seguridad, enviar correos electrónicos como recordatorios, etc.

El comando at es capaz de ejecutar un comando o script en una fecha y hora específicas, o en un intervalo de tiempo determinado. Podemos utilizar minutos, horas, días o semanas para especificar la hora. También permite algunas palabras clave como medianoche o hora del té (que se utiliza para “hasta las 4 p. m.”).

Nota: No se puede utilizar para tareas recurrentes, para tareas recurrentes prefiera el crontab de Linux.

Los comandos atq y atrm también forman parte del comando at. Veamos brevemente cómo funcionan ambos comandos.

El comando atq: el comando atq se utiliza para mostrar las tareas pendientes del usuario. Si el usuario es un usuario root, mostrará todas las tareas. De lo contrario, mostrará el trabajo del usuario en particular. El formato de visualización de la salida es ID de tarea, fecha, hora, cola y nombre de usuario.

El comando atrm: Se utiliza para eliminar tareas, identificadas por su número de trabajo.

Opciones

El comando ‘at’ admite varias opciones para que sea más específico. Las opciones que se facilitan con el comando at son las siguientes:

  • -V: Se utiliza para mostrar el número de errores estándar y salir exitosamente.
  • -q: se utiliza para especificar la cola. La designación de la cola consiste en una letra. Varía de la a a la z o de la A a la Z. La cola es la cola predeterminada y la cola b se utiliza para el lote. Las colas con las letras más altas se ejecutan con mayor prioridad. La cola ‘=’ es una cola especial; está reservada para los trabajos que se están ejecutando actualmente.
  • -m: se utiliza para enviar un correo electrónico al usuario cuando el trabajo se ejecuta correctamente. Funcionará si no hay salida.
  • -M: Se utiliza para no enviar nunca correo al usuario.
  • -f: Se utiliza para leer el trabajo desde el archivo en lugar de la salida estándar.
  • -t: Se utiliza para especificar la hora de ejecución de un trabajo, estará en el formato [[CC]AA]MMDDhhmm[.ss].
  • -l: La opción -l es un alias para el comando atq.
  • -r: La opción -r es un alias para el comando atrm.
  • -d: La opción -d es un alias para el comando atrm.
  • -b: La opción -b es un alias para el comando por lotes.
  • -v: La opción -v se utiliza para mostrar el tiempo del trabajo antes de su ejecución.

Para utilizar el comando at, tenemos que instalarlo en nuestro sistema. Veamos cómo instalarlo.

Instalar en el comando en Linux (Ubuntu)

Para instalar el comando, ejecute el siguiente comando:

sudo apt-get install at

El comando anterior solicitará la contraseña del sistema. Escriba la contraseña y presione la tecla ENTER. Iniciará un proceso demonio e instalará el comando at en su máquina. Considere el siguiente resultado:

Una vez instalado el comando at, debemos iniciar y habilitar el servicio atd . Para iniciar y habilitar el servicio atd en el momento del arranque, ejecute los siguientes comandos:

systemctl start atd  
systemctl enable atd  

El comando anterior iniciará y habilitará el servicio atd. Considere el siguiente resultado:

Una vez que el servicio atd esté habilitado en nuestra máquina, podremos programar cualquier tarea o comando. Ahora, estamos listos para programar nuestra primera tarea. Sigamos adelante.

Programe la primera tarea utilizando at

Para programar una tarea, ejecute el comando at seguido de la hora o una palabra clave.

Por ejemplo, para que se copie el archivo carlos.txt a la carpeta hackers a las 22:20, ejecute el comando de la siguiente manera:

 at 10:20 pm
cp carlos.txt hackers

Presione las teclas CTRL+D o ^d para completar la tarea. El comando anterior programará el backup.sh a las 22:20. Considere el siguiente resultado:

echo "cp carlos.txt hacker" | a las 22:20  

El comando anterior ejecutará el backup.sh a las 22:20. Considere el siguiente resultado:

Enumere las tareas programadas

Podemos listar todas las tareas programadas utilizando el comando atq . Si lo ejecutamos desde el usuario root, listará todos los trabajos del usuario. Pero, si no somos un usuario root, solo listará los trabajos del usuario en particular. Ejecute el comando de la siguiente manera:

atq  

Considere el siguiente resultado:

En el resultado anterior, podemos ver que hemos programado solo una tarea. Muestra el ID de la tarea, la fecha y la hora, y el nombre de usuario, respectivamente.

Eliminar tarea programada

Podemos eliminar una tarea programada por su ID de tarea con el comando atrm . Para eliminar un trabajo programado, ejecute el comando atrm seguido del ID del trabajo de la siguiente manera:

 atrm 2

El comando anterior eliminará la tarea que tiene el ID de tarea 2. Considere el siguiente comando:

A partir de la salida anterior, podemos ver si un trabajo se eliminó correctamente; no se mostrará ninguna salida. Para verificar si el trabajo se eliminó correctamente o no, ejecute el comando atq.

Verificar el contenido de la tarea programada

Podemos enumerar la tarea ejecutando el comando atq. Pero si queremos saber qué script o comando está programado, debemos ejecutar el comando at con la opción ‘-c’ seguida del ID de la tarea. Ejecute el comando de la siguiente manera:

 at -c 1

El comando anterior mostrará el contenido de la tarea que tiene el ID de tarea 2.

Ejemplos del comando at

Algunos ejemplos útiles del comando at son los siguientes:

Ejemplo 1: Programar tarea a las 8:00 AM.

Para programar la tarea a las 8:00 AM, ejecute el comando de la siguiente manera:

at 8:00 AM  

Producción:

Ejemplo 2: Programar una tarea a las 8:00 a. m. del próximo martes.

Para programar una tarea a las 8:00 a. m. del próximo martes, ejecute el siguiente comando:

at 8:00 AM tue  

Producción:

Ejemplo 3: Programar una tarea a las 8:00 a. m. del próximo 15 de abril.

Para programar una tarea a las 8:00 a. m. del próximo 15 de abril, ejecute el siguiente comando:

at 8:00 AM feb 17  

Producción:

Ejemplo 4: Programar tarea para las 8:00 a. m. de mañana.

Para programar una tarea a las 8:00 a. m. de mañana, ejecute el siguiente comando.

at 8:00 AM tomorrow  

Producción:

Ejemplo 5: Programar tareas para que se ejecuten justo después de 2 horas .

Para programar una tarea para que se ejecute justo después de 2 horas, ejecute el siguiente comando:

ahora + 2 horas  

Producción:

Obtener ayuda

Si te quedas atascado en algún lugar mientras usas el comando ‘at’, puedes buscar ayuda en tu terminal leyendo el manual. Para visualizar el manual del comando at , ejecuta el comando man de la siguiente manera:

Para leer más, desplácese por la salida y para salir del manual, presione la tecla ‘q’ .

Este comando tiene más opciones que puedes explorar

at --help

También  te recomendamos consultar las páginas man para este comando:

 man at

El Comando Cron

El cron se puede definir como una utilidad de software proporcionada por un sistema operativo similar a Linux que ejecuta la operación programada en un período predeterminado. Es un proceso demonio y se ejecuta como un proceso en segundo plano. Realiza las tareas descritas en un período predefinido cuando se encuentra una condición o un evento sin intervención del usuario.

Con frecuencia, lidiar con cualquier operación repetida es una tarea tediosa para un administrador de sistemas. Por lo tanto, el administrador de sistemas puede programar este tipo de procesos para que se ejecuten en segundo plano automáticamente a intervalos de tiempo regulares haciendo una lista de los comandos con la ayuda del comando cron.

Permite a todos los usuarios ejecutar la operación programada de forma regular, como hacer una copia de seguridad todos los días, sincronizar archivos en algunos intervalos regulares y programar actualizaciones semanalmente.

De forma recurrente, Cron inspecciona la tarea programada y cuando los campos de tiempo programado coinciden con los campos de tiempo actual, se ejecutarán los comandos programados. Automáticamente, se inicia desde el archivo /etc/init.d al ingresar a niveles de ejecución multiusuario.

Introducción al comando Crontab en Linux

El comando Crontab lista, edita, elimina o envía trabajos cron. Los trabajos cron son comandos que ejecuta el demonio cron a intervalos programados de forma regular. Necesitamos especificar el comando, es decir, crontab, con el indicador, es decir, -e, para finalizar cualquier trabajo cron. El comando crontab conjura una sesión de edición que nos permite establecer un archivo crontab. Creamos entradas para todos los trabajos cron en este archivo. Todas las entradas deben estar en un formato adecuado para el demonio cron.

El comando crontab copia las entradas en el directorio, es decir, /var/spool/cron/crontabs, y las coloca dentro de un nombre de archivo para nuestro nombre de usuario actual cuando terminamos de establecer las entradas y salimos del archivo. Alternativamente, podemos establecer un archivo crontab describiendo el parámetro de archivo. El archivo debe estar en el formato que el demonio cron espera si existe. El comando crontab conjura el editor si no existe. El comando conjura el editor que describe si la variable de entorno EDITOR está disponible. De lo contrario, el comando crontab utiliza el editor vi.

  • Necesitamos describir el comando crontab junto con el indicador -l para listar el contenido de nuestro archivo crontab.
  • Podemos usar la bandera -r para eliminar un archivo existente.
  • El parámetro Nombre de usuario (opcional) puede ser aplicado por el propietario del archivo crontab o por el usuario raíz para verificar, eliminar, enumerar o editar el estado del trabajo cron para el usuario definido.
  • Se genera un mensaje de error y el programa sale si el nombre de usuario no es válido.
  • Si no se especifica el parámetro Nombre de usuario (opcional), los indicadores crontab están presentes para el usuario actual y el usuario raíz.
  • El crontab es un conjunto de comandos que deseamos ejecutar según un cronograma regular.
  • El nombre del comando también se utiliza para organizar esa lista.

La forma completa de crontab es “tabla cron” porque utiliza el programador de tareas cron para ejecutar tareas; cron en sí se llama así por “chronos”. Cron es el proceso del sistema que realizará tareas automáticamente para nosotros de acuerdo con un cronograma fijo. Este cronograma se conoce como crontab, que es el nombre del programa que se utiliza para modificar dicho cronograma.

¿Por qué utilizamos Cron Jobs?

Las siguientes son algunas razones para utilizar trabajos cron en Linux:

  • Los trabajos cron se utilizan para automatizar el mantenimiento del sistema.
  • Crontab es una opción perfecta para automatizar trabajos Unix.
  • Los datos almacenados en caché se limpian periódicamente.
  • Envió correos electrónicos de notificación, como correos electrónicos de expiración de contraseña, boletines informativos, etc.
  • Purgar y archivar tablas de bases de datos
  • Eliminar archivos de registro antiguos
  • Ayuda al sistema operativo a realizar una copia de seguridad programada de la base de datos o de los archivos de registro.

Tipos de archivos de configuración de Cron

Los siguientes son los tipos de archivos de configuración de cron:

  • El usuario Crontab
    puede instalar sus trabajos cron con la ayuda del comando crontab. Todos los usuarios pueden tener su archivo crontab, y por lo tanto estos son archivos en crontabs /var/spool/cron/; no suelen editarse directamente. Podemos usar el comando crontab para editar y configurar nuestros trabajos cron.
  • El crontab del sistema Linux/Unix
    requiere privilegios sudo porque se utiliza para trabajos críticos y servicios del sistema. Proporciona la capacidad de ejecutar comandos como usuario en el crontab del sistema.

Sintaxis básica de Crontab

Cron lee todos los archivos de configuración de la lista de comandos que se van a ejecutar. El demonio aplica una sintaxis particular para interpretar las líneas dentro de las tablas de configuración de crontab.

La crontab (“tabla cron”) es una lista de comandos para ejecutar las operaciones programadas en un momento determinado. Permite al usuario agregar, eliminar o modificar las operaciones programadas.

La sintaxis del comando crontab contiene seis partes separadas por un espacio en el que las primeras cinco partes ilustran el tiempo para ejecutar la operación y la última parte ilustra el comando.

Minuto (contiene los valores de 0 a 59).

Hora (contiene los valores de 0 a 23).

Día del mes (contiene los valores del 1 al 31).

El mes del año (contiene los valores de enero a diciembre o del 1 al 12, se aplicarán las tres letras iniciales del nombre del mes).

Día de la semana (alberga los valores de Dom a Sáb o de 0 a 6, se aplicarán las tres letras iniciales del día).

El crontab de Linux contiene seis campos diferentes. Los cinco campos iniciales especifican la fecha y la hora de ejecución, y el último se utiliza para la ejecución de comandos.

Sintaxis de crontab

[Minuto] [Hora] [Día_del_Mes] [Día_del_Año] [Día_de_la_Semana] [Comando]  

Sintaxis:

cron [-f] [-1] [-L nivel de registro]  

Opciones en el comando Cron

  • -f: Esta opción se utiliza para permanecer en modo de primer plano y no realiza ninguna función de “daemonía”.
  • -1: Esta opción habilitará los nombres de los archivos compatibles con LSB, es decir, /etc/cron.d.
  • -n: Esta opción se utiliza para agregar los FQDN dentro del asunto al transferir correos.
  • -L loglevel: Le informará al cron qué registrar de las tareas utilizando unos valores que se mencionan a continuación:
    • Este valor registrará el comienzo de cada tarea cron.
    • Este valor registrará la finalización de cada tarea cron.
    • Este valor registrará cada tarea fallida y el estado de salida no será equivalente a cero.
    • Este valor registrará el número de proceso de cada tarea cron.

Las siguientes son algunas reglas que definen el campo de formato de fecha y hora:

  • Si uno de los cinco campos está fijado con un símbolo de asterisco (*), este representa el valor de cada campo. Por ejemplo, podemos poner el símbolo de asterisco (*) para ejecutar el comando diariamente en el campo de la semana.
  • También podemos aplicar el rango de números separados por un símbolo de guion (-) en el campo de fecha y hora para incluir varios valores contiguos, pero no cada valor de campo. Por ejemplo, podemos aplicar el 7-10 para ejecutar cualquier comando de julio a octubre.
  • El operador de coma (,) se utiliza para incluir la lista de números que pueden ser consecutivos o no. Por ejemplo, “1, 3, 5” en el campo de la semana significa que el comando se ejecutará todos los lunes, miércoles y viernes.
  • El carácter de barra (/) se agrega para omitir los valores de los números proporcionados. Por ejemplo, “*/4” en el campo de la hora define “cada 4 horas” y es igual a los números 0, 4, 8, 12, 16, 20.

Permitir a los usuarios ejecutar las tareas cron:

El usuario debe estar incluido en este archivo para poder ejecutar las tareas cron cuando el archivo esté disponible:

/etc/cron.allow  

En caso de que el archivo, es decir, /etc/cron.allow no exista, pero sí exista el archivo, es decir, cron.deny, un usuario no debe estar incluido dentro de este archivo para poder ejecutar la tarea cron.

/etc/cron.deny  

Importante: En caso de que ninguno de los archivos anteriores esté disponible, solo el administrador del sistema (superusuario) tendrá permiso para utilizar el comando proporcionado.

Comando para ejecutar

Define el comando a ejecutar. Ilustra el nombre de archivo o directorio exacto de los comandos o scripts que deseamos que cron ejecute.

A continuación se menciona un ejemplo:

/root/backup.sh  

El comando anterior examina el directorio raíz del sistema y ejecuta el script, es decir, backup.sh. Podemos definir cualquier comando o script que queramos.

Salida (opcional)

De forma predeterminada, cron envía un correo electrónico al propietario del archivo crontab cuando se ejecuta. Es una forma eficiente de mantener un registro de las operaciones. Recuerde que las operaciones menores o habituales pueden llenar rápidamente nuestra bandeja de entrada.

Podemos evitar este escenario deteniendo el envío de un correo electrónico porque es un aspecto opcional.

Para desactivar la salida del correo electrónico, podemos incluir la cadena, es decir, >/dev/null 2>&1 después de los campos de comando y tiempo.

Configuración de la operación Cron

Necesitamos abrir crontab junto con un editor de texto para configurar la operación cron e ingresar la sintaxis del comando que deseamos ejecutar.

Edición de un archivo crontab

Necesitamos escribir un comando en nuestra ventana de terminal para abrir el archivo de configuración de crontab para un usuario actual. El comando se menciona a continuación:

crontab-e  

Podemos incluir cualquier operación programada, una por línea.

Guarde ese archivo y luego salga una vez que hayamos terminado de incluir operaciones. El demonio de cron leerá y ejecutará las instrucciones proporcionadas.

Nota: No es necesario reiniciar Cron para aplicar las modificaciones.

Edición de crontab para un usuario distinto

Podemos introducir un comando para editar un crontab para un usuario específico. El comando se menciona a continuación:

crontab -u other_username -e  

Hay algunos puntos que se deben tener en cuenta al trabajar con cron. Estos puntos se mencionan a continuación:

  • Tener el control de la versión fuente para rastrear y mantener las modificaciones a las expresiones de cron.
  • Organice todas las operaciones programadas en función de su frecuencia o importancia y agrúpelas según su tiempo o rango de acción.
  • Verifique las operaciones programadas incluyendo inicialmente una frecuencia alta.
  • No escriba directamente código típico ni varias redirecciones y canalizaciones en la expresión de cron. En lugar de eso, escríbalos para programar un script y un script en crontab.
  • Aplique alias si se repiten conjuntos de comandos similares con frecuencia.
  • Ignore la ejecución de scripts o comandos utilizando cron como superusuario.

Cadena única de Crontab

Podemos utilizar ocho cadenas únicas proporcionadas por crontab. No solo nos ahorrará tiempo, sino que también aumentará la legibilidad.

Unique StringExplicación
@rebootDespués del inicio, ejecutar una vez.
@yearlyEjecutar una vez al año, es decir, 0 0 1 1 *
@annuallyEs lo mismo que @yearly.
@monthlyEjecutar una vez al mes, es decir, 0 0 1 * *
@weeklyEjecutar una vez a la semana, es decir, 0 0 * * 0
@dailyEjecutar una vez al día, es decir, 0 0 * * *
@midnightEs lo mismo que @daily.
@hourlySe ejecuta una vez por hora, es decir, 0 * * * *

Directorio Cron

Un administrador del sistema puede utilizar una programación cron para todo el sistema, que recae en el directorio cron predefinido, como se muestra a continuación:

  • /etc/cron.weekly
  • /etc/cron.monthly
  • /etc/cron.hourly
  • /etc/cron.daily
  • /etc/cron.d

Cómo modificar o agregar crontab

El usuario puede modificar sus trabajos crontab utilizando el siguiente comando:

crontab -u -e  

Este comando abre la configuración crontab personal de nuestro sistema informático, que puede modificarse con nuestro editor de texto predeterminado.

No necesitamos reiniciar nuestro crontab porque recogerá automáticamente nuestras modificaciones cuando usemos el siguiente comando:

crontab -l

Podemos usar el siguiente comando crontab para eliminar nuestras tareas crontab:

crontab -r

Podemos usar el siguiente comando crontab para actualizar o agregar trabajos en crontab:

crontab -e

Podemos usar el siguiente comando crontab para editar el crontab de otros usuarios:

crontab -u nombre de usuario -e  

Lista de crontab

Podemos usar el siguiente comando crontab para ver las entradas crontab del usuario:

crontab -l

Podemos usar el siguiente comando crontab para ver las entradas crontab de un usuario específico:

crontab -u nombre de usuario -l  

Ejemplos de operaciones Cron

Podemos utilizar el símbolo para especificar cada valor al describir las operaciones. Al introducir un valor dentro de cualquier campo, solo se ejecuta el comando sobre ese valor.

Por ejemplo:

* 2 0 * 4 /root/backup.sh  

Solo se ejecuta si el primer día de un mes (0) cae en miércoles (4), aunque esté configurado para ejecutarse a las 2 a. m. Si lo modificamos de la siguiente manera:

* 2 0 * * /root/backup.sh  

El comando anterior se ejecutará el primer día de cada mes a las 2 a. m. La tabla facilita algunos comandos comunes con un archivo, es decir, /root/backup.sh a través de nuestro ejemplo anterior. Esta tabla se menciona a continuación:

N.ºDominioOperación Cron
1.* * * * * /root/backup.shEjecutar la operación Cron cada minuto
2.30 * * * * /root/backup.shEjecutar la operación Cron cada 30 minutos
3.0 * * * /root/backup.shEjecutar la operación Cron cada hora
4.0 0 * * * /root/backup.shEjecutar la operación Cron a medianoche todos los días
5.0 2 * * * /root/backup.shEjecutar la operación Cron todos los días a las 2 a. m.
6.0 0 1 * * /root/backup.shEjecutar la operación Cron cada primer día del mes
7.0 0 1 5 * * /root/backup.shEjecutar la operación Cron cada quince días del mes
8.0 0 0 1 2 * /root/backup.shEjecutar la operación Cron a medianoche el 1 de diciembre
9.0 0 * * 6 /root/backup.shEjecutar la operación Cron a medianoche el sábado

Programar operaciones anualmente

@yearly /scripts/greeting.sh  

Podemos ejecutar el anterior para enviar un saludo de año nuevo. Además, se ejecutará en el primer minuto de cada año.

Programar operaciones para que se ejecuten mensualmente

@monthly /scripts/cleanup.sh  

Podemos ejecutar el comando anterior para implementar algunas actividades de limpieza al comienzo de cada mes. De manera similar, podemos usar otras cadenas únicas de crontab para objetivos horarios, diarios y semanales.

Ejemplos importantes de Crontab

Discutiremos algunos comandos crontab importantes y su descripción a continuación:

0 7, 17 * * * /scripts/script.sh

Es un comando cron para implementar varios trabajos de programación. Este comando se ejecutará diariamente a las 7 a. m. y a las 5 p. m.

* / 5 * * * * * /scripts/script.sh

El comando anterior ejecutará un cron después de 5 minutos.

0 5 * * mon /scripts/script.sh

El comando es un programador de cron que nos ayudará a ejecutar la tarea cada lunes a las 5 a. m. Es útil para realizar tareas semanales, como la limpieza del sistema.

* / 3 * * * * /scripts/monitor.sh

El comando anterior ejecutará nuestro script en intervalos de 3 minutos.

* * * feb, jun, sep * /script/script.sh

El comando anterior se puede utilizar para programar cualquier cron que se ejecute durante un mes en particular. El comando se utiliza para ejecutar tareas en los meses de septiembre, junio y febrero. A veces necesitamos programar cualquier tarea para que se ejecute una tarea mensual.

0 17 * * mon, wed /script/script.sh

Este comando se ejecuta en algunos días específicos. Se ejecutará todos los lunes y miércoles a las 5:00 p. m.

0 2 * * sat [ $(date +%d) -le 06 ] && /script/script.sh

El comando anterior permite que cron se ejecute el primer sábado de cada mes.

0 * / 6 * * * /scripts/script.sh

Este comando se utiliza para ejecutar un script durante un intervalo de 6 horas, por lo que se puede configurar como se muestra arriba.

0 4, 17 * * mon, tue /scripts/script.sh

El comando anterior programa una tarea para que se ejecute dos veces el martes y el lunes. Podemos usar la configuración anterior para hacerlo.

* * * * * /scripts/script.sh * * * * * sleep 15; /scripts/script.sh

El comando anterior programa un cron para que se ejecute cada 15 segundos.

@yearly /scripts/script.sh

El comando anterior programa una tarea anualmente. La marca de tiempo de @yearly es “0 0 5 1*”. Ejecutará la tarea en el quinto minuto de cada año. Podemos usarlo para enviar saludos de año nuevo.

@monthly /scripts/script.sh

El comando anterior programa una tarea para que se ejecute mensualmente. La marca de tiempo de @monthly es la misma que “0 0 1 * *”. La expresión del comando permite la ejecución de la tarea en 5 minutos por mes.

* * * * * /scripts/script.sh; /scripts/script2.sh

El comando anterior se utiliza para ejecutar múltiples tareas con un cron.

@weekly /bin/script.sh

Este comando programa tareas para que se ejecuten semanalmente. La marca de tiempo de @weekly es la misma que “0 0 4 * sun”. Implementa las tareas semanales, como la limpieza del sistema.

@daily /scripts/script.sh

Este comando se utiliza para programar tareas que se ejecutarán diariamente. La marca de tiempo de @daily es la misma que “0 2 * * *”. Ejecuta la tarea en el segundo minuto de cada día.

@hourly /scripts/script.sh

Permite que las tareas se ejecuten cada hora. La marca de tiempo de @hourly es la misma que “0 * * * *”. Ejecuta la tarea durante 5 minutos cada hora.

@reboot /scripts/script.sh

Permite que las tareas se ejecuten al reiniciar el sistema. La expresión @reboot es útil para las tareas que el sistema informático desea ejecutar al iniciar el sistema. Es útil para iniciar automáticamente las tareas en segundo plano.

Ejemplos de Programación de Tareas con Cron

Ejecutar una tarea todos los días a las 2:30 am:

30 2 * * * /ruta/a/mi_comando.sh

Esto ejecutará el script mi_comando.sh todos los días a las 2:30 am.

Ejecutar cada lunes a las 8:00 am:

0 8 * * 1 /ruta/a/mi_comando.sh


Aquí, 1 representa el lunes en el campo del día de la semana, y la tarea se ejecutará cada lunes a las 8:00 am.

Ejecutar cada 15 minutos:

*/15 * * * * /ruta/a/mi_comando.sh

El asterisco (*) significa “cualquier valor”, y */15 en el campo de minutos indica que se ejecute cada 15 minutos.

Ejecutar cada primer día del mes a medianoche:

0 0 1 * * /ruta/a/mi_comando.sh

Esta tarea se ejecutará a las 12:00 am del primer día de cada mes.

Ejecutar cada día entre las 9:00 am y 5:00 pm cada 30 minutos:

*/30 9-17 * * * /ruta/a/mi_comando.sh

Aquí se limita la ejecución a los horarios entre 9:00 am y 5:00 pm, cada 30 minutos.

Ejecutar cada domingo a la medianoche:

0 0 * * 0 /ruta/a/mi_comando.sh

Como 0 también representa el domingo, esta tarea se ejecutará a las 12:00 am todos los domingos.

Comandos Adicionales de Crontab

Usar cron para tareas específicas del sistema (ubicación de archivos crontab del sistema):
Existen ubicaciones de cron en el sistema para tareas automatizadas de todos los usuarios y del sistema en general. Estas están en directorios específicos y no necesitan ser configuradas manualmente en el crontab de un usuario individual.

  • /etc/crontab: Define tareas de cron para el sistema y permite especificar directamente el usuario en cada tarea.
  • /etc/cron.hourly/: Ejecuta scripts cada hora.
  • /etc/cron.daily/: Ejecuta scripts cada día.
  • /etc/cron.weekly/: Ejecuta scripts cada semana.
  • /etc/cron.monthly/: Ejecuta scripts cada mes.

Configuración de Variables de Entorno en Crontab

Puedes definir variables de entorno dentro del archivo crontab. Esto es útil para especificar la ruta de ejecución o el shell a usar.

Establecer el shell a utilizar:

SHELL=/bin/bash

Establecer la ruta predeterminada:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Ejemplo de configuración:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/bash
MAILTO=miemail@example.com

Aquí, MAILTO define la dirección de correo a la que se enviarán los resultados o errores de las tareas de cron.

Redirigir Salida y Errores de Cron

Si deseas guardar la salida o los errores de una tarea programada, puedes redirigirlos a archivos de registro específicos.

Redirigir solo la salida estándar:

* * * * * /ruta/a/mi_comando.sh > /ruta/a/salida.log

Redirigir errores a un archivo de error:

* * * * * /ruta/a/mi_comando.sh 2> /ruta/a/errores.log

Redirigir tanto la salida como los errores:

* * * * * /ruta/a/mi_comando.sh > /ruta/a/salida.log 2>&1

Este comando tiene más opciones que puedes explorar

at --help

También  te recomendamos consultar las páginas man para este comando:

 man cron
 man crontab

Conclusión

Con cron, puedes automatizar casi cualquier tarea en tu sistema, lo cual es especialmente útil para trabajos de mantenimiento y administración en servidores Linux. La clave es definir adecuadamente el tiempo y la frecuencia en el crontab, y utilizar las configuraciones de redirección para hacer un seguimiento de los resultados y errores de las tareas.

Ahora veamos cómo obtener ayuda en Linux

Comando info

El objetivo de este comando es ligeramente diferente de las páginas man: proporcionar un recurso de documentación que proporciona una estructura lógica, facilitando la lectura de la documentación. La información se desglosa en categorías que funcionan de una manera parecida que una tabla de contenido en un libro.

Se proporcionan hipervínculos hacia páginas con la información sobre los temas individuales para un comando específico o función. Toda la documentación se combina en un solo “book” en el que puedes ir a un nivel superior de la documentación y ver la tabla de contenido que representa toda la documentación disponible.

Info podría no estar instalado en sus sistema y deberá instalarlos

 apt-get install info

Otra ventaja  es que el estilo de escritura de los documentos info es típicamente más propicio para aprender un tema. Considera que las páginas man son un recurso de referencias y los documentos info sirven más como una guía de aprendizaje. Para visualizar la documentación info de un comando, ejecuta el comando info command (reemplaza command con el nombre del comando sobre cuál buscas la información). Por ejemplo, la siguiente pantalla muestra la salida del comando info ls:

Observa que la primera línea proporciona información que te indica dónde dentro de la documentación info estás ubicado. Esta documentación se divide en nodes y en el ejemplo anterior estás actualmente en el nodo ls invocation. Si pasaras al siguiente nodo (tal como ir al siguiente capítulo en un libro), estarías en el nodo dir invocation.

Si te pasaras un nivel hacia arriba estarías en el nodo Directory listing. Igual que el comando man, puedes obtener un listado de comandos de movimiento escribiendo la letra h al leer la documentación info. Si quieres cerrar la pantalla de ayuda, debes introducir la letra l. Esto te regresa a tu documento y te permite a continuar leyendo. Para salir completamente, introduce la letra q.

Table de Info

La tabla siguiente proporciona un resumen de los comandos útiles:

ComandoFunción
Flecha abajo ↓Bajar una línea
EspacioBajar una página
sBuscar un término
[Ir al nodo anterior
]Vaya al siguiente nodo
uSubir un nivel
TABULADORSaltar al siguiente hipervínculo
INICIOIr a inicio
FINIr al final
hMostrar ayuda
LCerrar la página de ayuda
qCerrar el comando info

Si te desplazas en el documento, verás el menú para el comando ls:

Los elementos bajo el menú son hipervínculos que pueden llevarte a los nodos que describen más del comando ls. Por ejemplo, si colocas tu cursor en la línea «* Sorting the output::»  y presionas la tecla Entrar , pasarás al nodo que describe la clasificación de la salida del comando ls:

Ten en cuenta que entrando al nodo de clasificación, prácticamente entras a un subnodo del nodo del que originalmente partiste. Para regresar a tu nodo anterior, puedes utilizar la tecla u. Mientras que u te llevará un nivel arriba hasta el inicio del nodo, también puedes utilizar la tecla l para volver exactamente a la ubicación anterior en la que te encontrabas antes de entrar al nodo de clasificación.

En lugar de utilizar la documentación info para buscar la información sobre un comando específico o función, puedes considerar la posibilidad de explorar las capacidades de Linux mediante la lectura a través de la documentación info. Si ejecutas el comando info sin ningún argumento, pasarás a un nivel superior de la documentación. Desde allí puedes explorar muchas características:

Utilizar la opción –help

Muchos comandos te proporcionan información básica, muy similar a la sección SYNOPSIS que aparece en las páginas man, al aplicar la opción –help al comando. Esto es útil para aprender el uso básico de un comando. En la mayoría de los sistemas, existe un directorio donde se encuentra la documentación adicional. A menudo se trata de una ubicación donde los proveedores que crean software adicional (de terceros) almacenan sus archivos de documentación.

Estos archivos de documentación se suelen llamar archivos “readme”, ya que los archivos tienen nombres como README o readme.txt. La ubicación de estos archivos puede variar según la distribución que estés utilizando. Ubicaciones típicas incluyen /usr/share/doc y /usr/doc.

Búsqueda de los Comandos y la Documentación

El comando whatis

Recuerda que el comando whatis (o man -f) te dirá en qué sección se almacena la página man. Si utilizas este comando con suficiente frecuencia, probablemente te topes con una salida inusual, como la siguiente:

Según esta salida, hay dos comandos que listan el contenido del directorio. Hay dos comandos ls porque UNIX tuvo dos variantes principales, lo que dio lugar a que algunos comandos fueran desarrollados «en paralelo».

Por lo tanto, algunos comandos se comportan diferentemente en diversas variantes de UNIX. Muchas distribuciones modernas de Linux incluyen comandos de ambas variantes de UNIX. Cuando corres el comando ls, ¿Cuál de los comandos se ejecuta? Esto lo veremos más adelante.

Para buscar la ubicación de un comando o de las páginas man para un comando, utiliza el comando whereis (o «dónde está» en español). Este comando busca los comandos, archivos de código fuente y las páginas man en las ubicaciones específicas donde estos archivos se almacenan normalmente:

Las páginas man se suelen distinguir fácilmente entre los comandos ya que normalmente están comprimidos con un comando llamado gzip, dando por resultado un nombre de archivo que termina en .gz.

Lo interesante es que verás que hay dos paginas man, pero sólo un comando (/bin/ls). Esto es porque el comando ls puede utilizarse con las opciones/funciones que se describen por cualquiera de las páginas man. Así que, cuando estás aprendiendo lo que puedes hacer con el comando ls, puedes explorar ambas páginas man. Afortunadamente, esto más bien es una excepción ya que la mayoría de los comandos sólo tienen una página man.

El comando whereis

El comando whereis está diseñado para encontrar de manera específica las páginas man y los comandos. Si bien esto es útil, hay veces en las que quieras encontrar un archivo o directorio, no sólo archivos de comandos o páginas mas.

Para encontrar cualquier archivo o directorio, puede utilizar el comando locate. Este comando buscará en una base de datos de todos los archivos y directorios que estaban en el sistema cuando se creó la base de datos. Por lo general, el comando que genera tal base de datos se ejecuta por la noche.

Los archivos que creaste hoy normalmente no los vas a poder buscar con el comando locate. Si tienes acceso al sistema como usuario root (con la cuenta del administrador de sistema), puede actualizar manualmente la base de datos locate ejecutando el comando updatedb. Los usuarios regulares no pueden actualizar el archivo de base de datos.

También ten en cuenta que cuando utilizas el comando locate como un usuario normal, tu salida puede ser limitada debido a los permisos. En general, si no tienes acceso a un archivo o directorio en el sistema de ficheros debido a los permisos, el comando locate no devolverá esos nombres. Esta es una característica de seguridad diseñada para evitar que los usuarios «exploren» el sistema de ficheros utilizando el comando locate. El usuario root puede buscar cualquier archivo en la base de datos con el comando locate.

La salida del comando locate puede ser bastante grande. Cuando buscas un nombre de archivo, como passwd, el comando locate producirá cada archivo que contiene la cadena passwd, no sólo los archivos passwd.

El comando locate

En muchos casos, puede que quieras empezar listando cuántos archivos coincidirán. Lo puedes hacer mediante la opción -c del comando locate:

Puedes limitar la salida producida por el comando locate mediante la opción -b. Esta opción sólo incluye los listados que contienen el término de búsqueda en basename del archivo. El basename es la parte del nombre de archivo que no incluye los nombres de directorio.

Como puedes ver en la salida anterior, todavía habrá muchos resultados cuando utilices la opción -b. Para limitar la salida aún más, coloca un carácter \ delante del término de búsqueda. Este carácter limita la salida a los nombres de archivo que coincidan exactamente con el término:

Las Páginas man

Las páginas man se utilizan para describir las características de los comandos. Te proporcionarán una descripción básica de la finalidad del comando, así como los detalles de las opciones del comando. Para ver una página man de un comando, ejecuta el comando man en la ventana del terminal. Por ejemplo, el comando man chmod mostrará la página man para el comando chmod:

El comando man utiliza un «localizador» para mostrar documentos. Este localizador es normalmente el comando less, pero en algunas distribuciones puede ser el comando more. Ambos son muy similares en cómo se ejecutan. Si quieres ver los diferentes comandos de movimiento que están disponibles, puedes introducir la letra h mientras visualizas una página man. Esto mostrará una página de ayuda.

Nota: Si estás trabajando en una distribución Linux que utiliza el comando more como un localizador, su salida será diferente que el ejemplo que se muestra aquí.

Si tu distribución usa el comando less, podría estar un poco abrumado por la gran cantidad de «comandos» que están disponibles. La tabla siguiente proporciona un resumen de los comandos más útiles:

Tabla de comandos

ComandoFunción
Return (o Intro)Bajar una línea
Space (o Espacio)Bajar una página
/term(o /términoBuscar un término
nBuscar el siguiente elemento de la búsqueda
1GIr a Inicio
GIr a la final
hMostrar ayuda
qCerrar página man

Las Secciones de la Página man

Las páginas man se dividen en secciones. Cada sección está diseñada para proporcionar información específica acerca de un comando. Si bien hay secciones comunes que verás en la mayoría de las páginas man, algunos desarrolladores también crean secciones que sólo verás en una página man específica. La siguiente tabla describe algunas de las secciones más comunes que encontrarás en las páginas del comando man:

Nombre de la SecciónPropósito
NAME (Nombre)Proporciona el nombre del comando y una breve descripción. NAME                                                                           
       ls – list directory contents  
SYNOPSIS (Sinopsis)Proporciona ejemplos de cómo se ejecuta el comando. Información detallada a continuación. SYNOPSIS                                                                       
       ls [OPTION]… [FILE]…  
DESCRIPTION (Descripción)Proporciona una descripción más detallada del comando. DESCRIPTION 
       List  information  about  the FILEs (the current directory by default). 
       Sort entries alphabetically if none of -cftuvSUX nor –sort  is  speci- 
       fied.  
OPTIONS (Opciones)Muestra las opciones para el comando, así como una descripción de cómo se utilizan. A menudo esta información se encontrará en la sección DESCRIPTION y no en una sección separada de OPTIONS.        -a, –all                                                                
              do not ignore entries starting with . 
 
       -A, –almost-all                                                        
              do not list implied . and ..                                     
                                                                               
       –author                                                                
              with -l, print the author of each file                           
                                                                               
       -b, –escape                                                            
              print C-style escapes for nongraphic characters                  
                                                                               
       –block-size=SIZE                                                       
              scale sizes by SIZE before printing them; e.g., ‘–block-size=M’ 
              prints sizes in units of 1,048,576 bytes; see SIZE format below  
FILES (Archivos)Muestra las opciones para el comando, así como una descripción de cómo se utilizan. Estos archivos pueden utilizarse para configurar las características más avanzadas del comando. A menudo esta información se encontrará en la sección de DESCRIPTION y no en una sección separada de OPTIONS.
AUTHOR (Autor)El nombre de la persona que creó la página man y (a veces) la manera de contactar a la persona. AUTHOR                                                                          
       Written by Richard M. Stallman and David MacKenzie.
REPORTING BUGS (Reportando Errores)Proporciona información sobre cómo reportar problemas con el comando. REPORTING BUGS                                                                 
       GNU coreutils online help: <http://www.gnu.org/software/coreutils/>     
       Report ls translation bugs to <http://translationproject.org/team/>
COPYRIGHT (Derechos de Autor)Proporciona información básica de los derechos de autor. COPYRIGHT                                                                      
       Copyright (C) 2017 Free Software Foundation, Inc.  License GPLv3+:  GNU 
       GPL version 3 or later <http://gnu.org/licenses/gpl.html>.              
       This  is  free  software:  you  are free to change and redistribute it. 
       There is NO WARRANTY, to the extent permitted by law.  
SEE ALSO (Ver También)Proporciona una idea de dónde puedes encontrar información adicional. También suele incluir otros comandos que están relacionados con este comando. SEE ALSO                                                                       
       Full documentation at: <http://www.gnu.org/software/coreutils/ls>       
       or available locally via: info ‘(coreutils) ls invocation’ 

La sección SYNOPSIS de la Página man

La sección de SYNOPSIS (o «SINOPSIS» en español) de una página man puede ser difícil de entender, pero es muy importante porque proporciona un ejemplo conciso de cómo utilizar el comando. Por ejemplo, considera la SYNOPSIS de la página man para el comando cal:

SYNOPSIS                                                             
     cal [-3hjy] [-A number] [-B number] [[[day] month] year]

Los corchetes [ ] se utilizan para indicar que esta característica no es necesaria para ejecutar el comando. Por ejemplo, [-3hjy] significa que puedes usar las opciones -h, -j, -y, 1 o 3, pero ninguna de estas opciones son necesarias para el correcto funcionamiento del comando cal. El segundo conjunto de corchetes en la SYNOPSIS del comandocal ([[[day] month] year]) muestra otra característica. Esto significa que puedes especificar un año por sí mismo, pero si se especifica un mes también se debe especificar un año. Además, si especificas un día entonces también necesitarás especificar un mes y un año. Otro componente de SYNOPSIS que puede causar cierta confusión puede verse en SYNOPSIS del comando date:

SYNOPSIS                                                             
       date [OPTION]… [+FORMAT]                                     
       date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]]

En estaSYNOPSIS hay dos sintaxis para el comando date. El primero de ellos se utiliza para mostrar la fecha en el sistema mientras que el segundo se utiliza para fijar la fecha. Las elipses siguientes a [OPTION], …, indican que uno o más ítems antes de la opción pueden usarse. Además, la notación [-u|–utc|–universal] significa que puedes utilizar la opción -u , la opción –utc o la opción –universal . Normalmente esto significa que las tres opciones hacen lo mismo, pero a veces este formato (uso del carácter |) sirve para indicar que no se utilicen las opciones combinadas, tal como un operador lógico «o».

Buscando dentro de la Página man

Para buscar un término en la página man, pulsa / e introduce el término seguido por la tecla Entrar. El programa buscará desde la ubicación actual hacia el final de la página para tratar de localizar y resaltar el término.

Si el término no se encuentra, o has llegado al final de las coincidencias, el programa reportará Pattern not found (press Return). Si se encuentra una coincidencia y quieres pasar al siguiente término, pulsa n. Para volver al término anterior pulsa N.

A veces los archivos de configuración también tienen sus páginas man. Estos contienen datos que se utilizan para almacenar información sobre el Sistema Operativo o servicios. Adicionalmente, existen varios tipos de comandos (comandos de usuario, comandos del sistema y comandos de administración), así como otras funciones que requieren documentación, como las librerías y los componentes del Kernel.

Como resultado, hay miles de páginas man en una distribución típica de Linux. Para organizar todas estas páginas, las páginas se clasifican por secciones, al igual que cada página man se divide en secciones. Por defecto, hay nueve secciones de las páginas man.

Secciones de las páginas man:

  1. Programas ejecutables o comandos del shell
  2. Llamadas del sistema (funciones proporcionados por el kernel)
  3. Llamadas de la librería (funciones dentro de las librerías de los programas)
  4. Archivos especiales (generalmente se encuentran en /dev)
  5. Formatos de archivo y convenciones, por ejemplo /etc/passwd
  6. Juegos
  7. Otros (incluyendo paquetes macro y convenciones), por ejemplo, man(7), groff(7)
  8. Comandos de administración de sistema (generalmente sólo para el root)
  9. Rutinas del kernel [No estándar]

Usando el Comando MAN

Cuando utilizas el comando man, éste busca cada una de estas secciones por orden hasta que encuentra al primer “match”. Por ejemplo, si ejecutas el comando man cat, en la primera sección (programas ejecutables o comandos del shell) se buscará la página man llamada cat. Si no lo encuentra, entonces se busca en la segunda sección. Si no se encuentra ninguna página man tras buscar en todas las secciones, recibirás un mensaje de error

Para determinar a qué sección pertenece una página man específica tienes que ver el valor numérico de la primera línea de la salida de la página man. Por ejemplo, si ejecutas el comando man cat, verás que el comando cal pertenece a la primera sección de las páginas man:

En algunos casos, necesitarás especificar la sección para visualizar la página man correcta. Esto es necesario porque a veces habrá páginas man con el mismo nombre en diferentes secciones.

Por ejemplo, hay un comando llamado passwd que permite cambiar tu contraseña. También hay un archivo llamado passwd que almacena la información de la cuenta. Ambos, el comando y el archivo tienen una página man.

El comando passwd es un comando de “user” (o «usuario» en español), por lo que el comando man passwd mostrará la página man para el comando passwd por defecto:

Para especificar una sección diferente, proporciona el número de la sección como el primer argumento del comando man. Por ejemplo, el comando man 5 passwd buscará la página man de passwd sólo en la sección 5:

man -f

A veces no es claro en qué sección se almacena una página man. En estos casos, puedes buscar una página man por nombre. La opción -f para el comando man mostrará páginas que coinciden, o parcialmente coinciden, con un nombre específico y provee una breve descripción de cada página man.

Ten en cuenta que en la mayoría de las distribuciones de Linux, el comando whatis hace lo mismo que el comando man -f. En esas distribuciones, ambos comandos producen la misma salida.

man -k

Desafortunadamente, no siempre te acordarás del nombre exacto de la página man que quieres ver. En estos casos puedes buscar páginas man que coincidan con una palabra clave mediante el uso de la opción -k del comando man.

Por ejemplo, ¿qué pasa si quieres ver una página que muestra cómo cambiar la contraseña, pero no recuerdas el nombre exacto? Puedes ejecutar el comando man -k password.

Al utilizar esta opción puedes recibir una gran cantidad de salidas. El comando anterior, por ejemplo, dió salida a 60 resultados.

Atropos

Recuerda que hay miles de páginas man, así que cuando buscas por una palabra clave, sé tan específico como sea posible. Usando una palabra genérica, como “the” (o «el/la» en español), podría resultar en cientos o incluso miles de resultados.

Ten en cuenta que en la mayoría de las distribuciones de Linux, el comando apropos hace lo mismo que el comando man -k. En esas distribuciones, ambas producen la misma salida.

Puntos clave del artículo y su explicación

  1. Concepto y Tipos de Procesos
    Los procesos son instancias de programas en ejecución en Linux, clasificados en:
    • Primer plano: Interactúan con el usuario a través de la terminal.
    • Segundo plano: Se ejecutan sin interacción directa.
    • Daemons: Procesos especializados que inician con el sistema.
  2. Estados de los Procesos
    Un proceso puede estar en varios estados:
    • Ejecución: Activo o esperando el CPU.
    • Espera: Suspendido hasta un evento específico.
    • Zombie: Finalizado, pero aún listado en la tabla del kernel.
    • Otros: Interrumpible, ininterrumpible y detenido.
  3. Identificación y Monitoreo de Procesos
    Los procesos se identifican con un PID (ID de proceso) y un PPID (ID del proceso padre). Herramientas como top, ps y pstree permiten monitorear procesos.
  4. Eliminación de Procesos
    Comandos como kill, killall y xkill permiten finalizar procesos. Las señales usadas incluyen:
    • SIGTERM (15): Termina procesos de forma ordenada.
    • SIGKILL (9): Fuerza la terminación.
  5. Gestión de Prioridades
    Usar nice y renice permite ajustar prioridades de procesos. Los valores oscilan entre -20 (alta prioridad) y 19 (baja prioridad).
  6. Manejo de Procesos en Segundo Plano
    Comandos como bg, fg y jobs gestionan tareas en segundo plano. El operador & envía procesos al fondo.
  7. Persistencia de Procesos
    El comando nohup mantiene procesos activos incluso al cerrar la terminal, redirigiendo la salida a un archivo.
  8. Administración de Servicios con systemctl
    Comandos clave incluyen:
    • systemctl start/stop/restart <servicio>: Iniciar, detener o reiniciar servicios.
    • systemctl enable/disable <servicio>: Activar/desactivar servicios al arranque.
  9. Uso del Comando at para Tareas Puntuales
    El comando at programa tareas únicas basadas en tiempo, como ejecutar scripts o enviar correos. Los comandos relacionados son:
    • atq: Lista tareas programadas.
    • atrm: Elimina tareas pendientes.
  10. Introducción a crontab y Cron Jobs
    • Crontab: Define tareas recurrentes mediante un formato específico de tiempo.
    • Ejemplo de sintaxis: 30 2 * * * /ruta/script.sh # Ejecuta a las 2:30 am diariamente.
    • Soporta tareas diarias, semanales, mensuales y más.
  11. Configuración Básica de MariaDB
    • Instalación: sudo apt install mariadb-server.
    • Configuración del servicio: sudo systemctl start mariadb sudo systemctl enable mariadb
    • Apertura de puertos: firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload
  12. Obtener Ayuda en Linux
    • Comandos útiles:
      • man: Muestra documentación oficial de comandos.
      • info: Proporciona explicaciones detalladas y estructuradas.
      • whatis: Resumen rápido sobre comandos.
      • whereis: Ubica archivos ejecutables y documentación.

Esta guía combina conceptos básicos y herramientas avanzadas, proporcionando a los lectores una base sólida en la administración de sistemas Linux y tareas programadas, con aplicaciones prácticas en hacking y ciberseguridad.

Pon en práctica lo aprendido

Ahora pon a prueba lo aprendido con estas preguntas y ejercicios.

Preguntas sobre el artículo

  1. ¿Qué función principal tiene el comando at en Linux y en qué situaciones es útil utilizarlo?
  2. ¿Cuál es la diferencia entre el comando at y el programador de tareas cron?
  3. ¿Qué comando permite listar las tareas programadas con at y qué información muestra?
  4. ¿Cómo se elimina una tarea programada en at y qué opciones tiene para este propósito?
  5. ¿Qué pasos básicos son necesarios para instalar y habilitar el comando at en un sistema Linux?
  6. Menciona tres ejemplos de palabras clave o formatos de tiempo que se pueden usar con el comando at.
  7. ¿Qué opción del comando at permite especificar una cola de prioridad y cómo funciona?
  8. ¿Cómo puedes visualizar el contenido de una tarea programada con at sin ejecutarla?
  9. ¿Qué significan las cadenas únicas en crontab como @reboot o @hourly y cómo se utilizan?
  10. ¿Cómo puedes evitar que un trabajo cron envíe correos electrónicos con la salida de su ejecución?

Ejercicios prácticos sobre el contenido

  1. Instala el comando at en un sistema Linux y habilita el servicio atd. Verifica que el servicio esté activo.
  2. Programa una tarea con at para copiar un archivo llamado documento.txt a la carpeta /backup mañana a las 9:00 a. m.
  3. Lista las tareas programadas usando el comando atq y describe la salida.
  4. Elimina una tarea programada en at usando su ID y verifica que se haya eliminado correctamente.
  5. Programa una tarea con cron que se ejecute todos los lunes a las 7:00 a. m. para realizar una copia de seguridad de un archivo.
  6. Crea una tarea con crontab para limpiar archivos temporales diariamente a las 3:00 a. m.
  7. Utiliza la sintaxis de crontab para ejecutar un script cada 15 minutos.
  8. Define una variable de entorno en un archivo crontab para especificar el shell que debe usar.
  9. Configura un trabajo cron para que se ejecute el primer sábado de cada mes.
  10. Explora la ayuda del comando at con man y resume las opciones que encuentres más relevantes.

Respuestas a las preguntas

  1. Función del comando at: Permite programar tareas únicas que se ejecutarán en un momento específico. Es útil para apagar el sistema, enviar recordatorios o realizar copias de seguridad en horarios específicos sin recurrir a tareas recurrentes.
  2. Diferencia entre at y cron: at es para tareas únicas, mientras que cron se utiliza para tareas recurrentes que se ejecutan en intervalos regulares o predefinidos.
  3. Comando para listar tareas programadas: atq. Muestra el ID de la tarea, la fecha y hora de ejecución, la cola de prioridad y el usuario que programó la tarea.
  4. Eliminación de tareas en at: Se utiliza el comando atrm seguido del ID de la tarea. También se puede usar at -r o at -d como alias para eliminarla.
  5. Pasos para instalar y habilitar at:
    • Ejecutar sudo apt-get install at.
    • Iniciar y habilitar el servicio con systemctl start atd y systemctl enable atd.
  6. Palabras clave y formatos de tiempo en at:
    • tomorrow para programar una tarea el día siguiente.
    • now + 2 hours para programar una tarea en dos horas.
    • 10:30 PM para una tarea a una hora específica.
  7. Opción para especificar una cola: -q. Permite asignar una tarea a una cola determinada (de a a z o A a Z), donde las letras más altas tienen mayor prioridad.
  8. Visualizar contenido de tareas en at: Ejecutar at -c [ID] para mostrar el comando o script programado asociado al ID sin ejecutarlo.
  9. Cadenas únicas en crontab:
    • @reboot: Ejecuta una tarea al reiniciar el sistema.
    • @hourly: Ejecuta una tarea cada hora.
  10. Evitar correos en trabajos cron: Agregar >/dev/null 2>&1 al final del comando en el archivo crontab.

Respuestas a los ejercicios

  1. Instalar y habilitar at: sudo apt-get install at systemctl start atd systemctl enable atd systemctl status atd Verifica que atd esté activo con el último comando.
  2. Programar tarea con at: at 9:00 AM tomorrow cp documento.txt /backup <Ctrl+D>
  3. Listar tareas programadas: atq Salida: 1 2024-11-22 09:00 a username
  4. Eliminar tarea programada: atrm 1 Verifica que no aparezca en la lista al usar atq.
  5. Programar tarea con cron:
    Edita el crontab con: crontab -e Agrega la línea: 0 7 * * 1 cp archivo.txt /backup
  6. Tarea diaria para limpiar archivos temporales: crontab -e Agrega:bashCopiar código0 3 * * * rm -rf /tmp/*
  7. Ejecutar script cada 15 minutos: */15 * * * * /ruta/mi_script.sh
  8. Definir shell en crontab: SHELL=/bin/bash
  9. Trabajo cron para el primer sábado de cada mes: 0 2 * * 6 [ $(date +\%d) -le 07 ] && /ruta/mi_script.sh
  10. Explorar ayuda del comando at: man at Opciones relevantes:
    • -f: Leer comandos desde un archivo.
    • -m: Notificar al usuario al completar una tarea.
    • -q: Asignar una tarea a una cola específica.

No te detengas, sigue avanzando

Aquí tienes un propósito que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Sobre los autores

Álvaro Chirou

Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes seguirme en mis redes:

Laprovittera Carlos

Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:

Hacker de 0 a 100 desde las bases hasta conseguir empleo

¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/hacker-de-0-a-100-desde-las-bases-hasta-conseguir-empleo/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.

Hemos creado una ruta de 0 a 100. Un plan de desarrollo que va desde las bases: cómo aprender hacking, qué aprender, en qué orden; pasando por las areas técnicas necesarias como Linux, Redes, Programación y los conocimientos necesarios en ciber seguridad, hacking, pentesting hasta la práctica y el inicio laboral: Crear tu propio laboratorio, certificaciones, adquirir experiencia e iniciarse laboralmente.

Este es un mega post. Una guía con más de 250 artículos que te llevaran por el camino del hacker. Esta guía es gratuita y esta creada gracias al esfuerzo y al trabajo combinado de Alvaro Chirou y mío (Laprovittera Carlos).

Creamos esta guía (futuro curso) para que puedas iniciarte en este mundo. Puedes arrancar ahora, GRATIS, solo necesitas un PC, conexión a internet y paciencia (Ser hacker NO ES un camino de la noche a la mañana).

El Hacking y la ciberseguridad es una carrera divertida, emocionante y gratificante que te recompensará y desafiará por igual. Sin embargo, para quienes buscan adentrarse en este campo en auge y en constante evolución, puede resultar difícil saber por dónde empezar. ¡Ahí es donde entra en juego nuestra guía en ciberseguridad!

Esta es la hoja de ruta hacia el trabajo de ciberseguridad de tus sueños. Te ayudará a entender qué conocimientos, habilidades y certificados son necesarios para alcanzar tus metas profesionales y tener una carrera próspera. Si quieres ser consultor de ciberseguridad, analista de malware, evaluador de penetración, analista de SOC o cualquier otro puesto de ciberseguridad, esta guía es lo que necesitas.

SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS

Aprende con nuestros más de 100 cursos que tenemos disponibles para vos

Compartimos estos recursos para ayudar a la comunidad de hacking y ciberseguridad. COMPARTE y Siéntete libre de agregar más sugerencias en los comentarios a continuación, respondemos todos y cada uno de los comentarios.

Saludos amigos y happy hacking!!!