He creado un script para instalar dos scripts en el crontab.
#!/bin/bash
sudo crontab -l > mycron
#echo new cron into cron file
echo "*/05 * * * * bash /mnt/md0/capture/delete_old_pcap.sh" >> mycron #schedule the delete script
echo "*/12 * * * * bash /mnt/md0/capture/merge_pcap.sh" >> mycron #schedule the merge script
#install new cron file
crontab mycron
rm mycron
El script se ejecuta y agrega las dos líneas al crontab. Pero si ejecuto el script nuevamente, agrega esas líneas nuevamente, por lo tanto tendré cuatro líneas que dicen lo mismo. Quiero que el script de instalación se ejecute de tal manera que las líneas insertadas en el crontab no se repitan. Cómo puedo hacer eso
Respuestas:
Recomendaría usar
/etc/cron.d
máscrontab
.Puede colocar archivos en los
/etc/cron.d
que se comportan como entradas crontab. Aunque el formato es ligeramente diferente.Por ejemplo
/etc/cron.d/pcap
:La diferencia en el formato es agregar al usuario para ejecutar el trabajo como después de la especificación de tiempo.
Ahora puede simplemente verificar si el archivo existe, y si lo sobrescribe, no importa.
Tenga en cuenta que es posible que su cron daemon no tenga
/etc/cron.d
. No sé qué demonios cron lo tienen, pero vixie cron es el demonio cron estándar en Linux, y lo hace.fuente
En su lugar, podría declarar una función:
e invocarlo diciendo:
Esto agregaría la línea solo si no existe en el archivo.
fuente
-F
haríagrep
interpretar el patrón como una cadena fija.de bash yo uso
Utilice también este script para agregar entradas cron en servidores remotos
fuente
Puede escribir un script y agregarlo a crontab para detenerlo:
fuente
kill -9
solo debe hacerse como último recurso - unix.stackexchange.com/questions/8916/…