Exécution des autorisations Cron Job w / Sudo

1

Strictement à des fins d'apprentissage (éventuellement d'entretien), j'essaie de faire en sorte qu'un travail Cron vide mes ordures une fois par jour.

J'ai ouvert le terminal et entré la commande crontab -e pour accéder à l'éditeur de VI pour ajouter la commande. Je suis entré en mode insertion et ajouté * * * * * sudo rm -rf ~/.Trash/*, appuyez sur la touche échap pour sortir et quitter VI avec :wq!

Ce script particulier que j'ai exécuté chaque minute juste pour voir si cela fonctionne et ce n'est pas. Je pensais que c’était peut-être un problème avec le fait que cron n’avait pas d’accès root, j’ai donc ajouté la même ligne à sudo crontab -e fichier et il ne semble pas être en train d'économiser.

Des idées ce qui pourrait être le problème avec ce travail cron?

MacMania
la source
Pourquoi essayez-vous de supprimer les fichiers de votre utilisateur? .Trash avec sudo en premier lieu? La configuration de votre sudoers est-elle définie sur NOPASSWD?
techraf
@techraf Est-ce que Cron accorde automatiquement des droits sudo? Si non, comment puis-je exécuter les droits sudo dans un travail Cron?
MacMania
Je vous ai posé deux questions, répondez s'il vous plaît.
techraf

Réponses:

1

Vous pensez avoir besoin de sudo. Vous pas. Vous n'essayez pas de vider le dossier Corbeille de la racine. Vous avez la permission de supprimer des fichiers dans votre propre ~/.Trash dossier, vous n'avez donc pas besoin de devenir root (c'est ce que fait sudo) rm.

Vous pouvez simplement utiliser:

* * * * * rm -rf ~/.Trash/*

Notez, je vous déconseille également d'utiliser ~ dans une commande dangereuse comme celle-ci (quand vous appelez) rm -rf c'est potentiellement dangereux). Mettez le chemin complet vers le .Trash dossier est donc très explicite ce qui se passera lorsque la ligne est exécutée. Quelque chose comme /Users/yourusername/.Trash/. Alors:

* * * * * rm -rf /Users/yourusername/.Trash/*

Où vous remplacez yourusername avec votre nom d'utilisateur actuel sur l'hôte.

Marc Wilson
la source
Merci pour la réponse bien expliquée! Cela a du sens et cela a fonctionné!
MacMania
re ~ ut n'est pas une recommandation de ne pas l'utiliser. Ça ne marche pas dans cron
Mark
3

Si vous voulez spécifier la crontab de l’utilisateur root, vous devez utiliser le -u option.

sudo crontab -e -u root

Cela dit, il existe un moyen plus sûr de nettoyer vos déchets que de simplement supprimer tout le répertoire. Personnellement, j'aime bien supprimer les fichiers de plus d'un certain nombre de jours. De cette façon, si je supprime par inadvertance quelque chose aujourd’hui, j’ai un "tampon" de temps pour récupérer.

La commande suivante supprimera tous les fichiers qui sont plus âgée de 15 jours.

find ~/.Trash/ -type f -mtime +15 -exec rm {} \;

Maintenant ... cela dit ...

cron est déconseillé pour launchd. Je prendrais du temps et apprendre à créer .plist Fichiers XML pour lauchd et utiliser ce service au lieu de cron

Allan
la source
C'était super utile aussi!
MacMania