web-dev-qa-db-fra.com

Crontab: script d'exécution Ubuntu (noob)

Je suis nouveau sur crontab et je voudrais exécuter le script suivant à partir de /etc/crontab:

0 15    * * *   root    bash-c 'for i in /home/Dell/Downloads/*.{pdf,docx,png,jpg,PDF,DOCX}; do shred -zvu "$i" -n20; done'

J'ai essayé avec et sans bash-c option, mais le script ne s'exécute pas.

Mon objectif est:

  1. Obtenez ce script à partir de Crontab
  2. Obtenez ce script en cours d'exécution au démarrage

L'aide est appréciée.

4
orrp

Il vous manque un espace après la commande bash et l'argument -c.

Cela devrait fonctionner:

0 15    * * *  root bash -c 'for i in /home/Dell/Downloads/*.{pdf,docx,png,jpg,PDF,DOCX}; do shred -zvu "$i" -n20; done'

Quelques conseils supplémentaires:

  • N'exécutez pas un crontab en tant qu'utilisateur root si vous n'en avez pas besoin.
  • Vous avez écrit que vous l'aviez mis dans /etc/crontab fichier. Ne modifiez pas directement les fichiers crontab, utilisez plutôt crontab -e commande ou Sudo crontab -e pour les commandes qui ont besoin des droits root. Notez que vous ne placez pas le champ user dans les "autres" fichiers crontab.
  • Si vous avez plusieurs commandes, vous pouvez utiliser bash -c comme vous le faites, mais je préfère mettre les commandes dans un script et l'exécuter à partir de crontab.

  • Pour exécuter un script au démarrage, vous pouvez utiliser @reboot au lieu de 0 15 * * *.

13
pLumo