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?


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.


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


C'était super utile aussi!
MacMania
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.