1 votes

Sudo crontab -e" ne met pas à jour /etc/hosts

Dans mon fichier /etc/hosts, j'ai des enregistrements comme celui-ci:

127.0.0.1 www.youtube.com

Pour éviter d'être distrait. Lorsque j'ai besoin de quelque chose sur l'un des sites que j'ai bloqués, j'ajoute # au début de la ligne. En exécutant cette commande, je peux faire en sorte que toutes les lignes puissent être décommentées pour supprimer à nouveau l'accès:

sudo sed -i '' 's/\#//g' /etc/hosts

Pour supprimer automatiquement l'accès, j'exécute sudo crontab -e et j'ajoute cette ligne:

*/10 8-15 * * 1-5 sed -i '' 's/\#//g' /etc/hosts

J'ai également essayé avec sudo crontab -e -u root

Après l'avoir enregistré, Mac demande l'autorisation à l'administration de la machine via le terminal, ce que j'accepte, et je pense que tout devrait être en ordre, mais il ne semble pas voir que la commande est exécutée (le fichier n'est pas mis à jour). Y a-t-il quelque chose que je dois faire pour qu'il mette à jour le fichier?

0 votes

Quelle version de macOS utilisez-vous?

0 votes

C'était une bonne suggestion @lx07, mais malheureusement cela n'a pas fonctionné.

3voto

Douglas Points 10417

Lorsque vous émettez une commande via cron, vous devez spécifier le chemin complet, donc à la place, vous devriez utiliser /usr/bin/sed.

Il y a quelques autres problèmes que vous devriez prendre en considération :

  • cron est obsolète et cela devrait être fait en utilisant launchd à la place

  • Pourquoi modifier le fichier en place? Il suffit de sauvegarder la version originale du fichier hosts (c'est-à-dire /etc/hosts.orig) et de créer un nouveau fichier hosts lorsque vous voulez bloquer YouTube (c'est-à-dire /etc/hosts.nodistractions). Copiez simplement le fichier approprié vers /etc/hosts à l'intervalle de temps spécifié.

    Par exemple, pour débloquer tout :

      cp /etc/hosts.orig /etc/hosts

    Pour passer en mode "sans distractions" :

      cp /etc/hosts.nodistractions /etc/hosts

L'avantage d'utiliser cette méthode est que vous pouvez facilement modifier le fichier pour ajouter plus de hosts au fur et à mesure que vos distractions évoluent, et vous n'aurez pas à modifier le code. Exécuter cela en tant que LaunchDameon exécute cela en tant que root donc il n'y a pas vraiment de problèmes de permission à craindre. Vous n'aurez pas à vous préoccuper de sudo ou su ou de vous assurer que vous utilisez le bon utilisateur.

Cela dit, il y a une application appelée Focus (20 $) qui possède un ensemble de fonctionnalités très riche qui vous permettra de bloquer non seulement les sites web, mais aussi les applications. Il y a une fonction "prendre une pause" qui vous permettra de lever les restrictions pendant un laps de temps configurable, vous permettant de prendre une pause ou, comme vous l'avez décrit, obtenir quelque chose quand vous en avez besoin. Le prix (à mon avis) est assez raisonnable pour ce qu'il offre.

Veuillez noter, je ne suis affilié de quelque manière que ce soit à cette application/entreprise et je ne l'utilise personnellement pas. Je connais simplement ce produit suite à avoir dû trouver un outil pour les parents d'élèves - qui n'étaient pas concentrés sur la tâche à accomplir - leur donnant la possibilité de gérer leurs distractions automatiquement; principalement en raison de l'emplacement (les parents au travail, les enfants à la maison ne faisant pas leurs devoirs).

0 votes

J'ai trouvé sudo launchctl load ... et en changeant les autorisations sur /etc/hosts, j'ai pu le mettre à jour toutes les 10 minutes. Probablement que l'un ou l'autre de ces solutions permettrait de le faire fonctionner. L'utilisation de cron n'a tout simplement pas fonctionné pour cela, donc launchctl semble être la meilleure solution.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X