1 votos

"sudo crontab -e" no actualiza /etc/hosts

En mi archivo /etc/hosts, tengo registros como este:

127.0.0.1 www.youtube.com

Para no distraerme. Cuando necesito algo en uno de los sitios que he bloqueado, añado # al principio de la línea. Ejecutando este comando, puedo hacer que todas las líneas puedan ser descomentadas para eliminar el acceso de nuevo:

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

Para eliminar automáticamente el acceso, ejecuto sudo crontab -e y añadir esta línea

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

También he probado con sudo crontab -e -u root

Después de guardarlo, el mac pide permiso para que el terminal administre la máquina, lo que concedo, y supongo que debería estar todo bien, pero no ve que el comando se ejecute nunca (el archivo no se actualiza). ¿Hay algo que deba hacer para que se actualice el archivo?

0 votos

¿Qué versión de MacOS utilizas?

1 votos

0 votos

Fue una buena sugerencia @lx07, pero lamentablemente no funcionó.

3voto

Douglas Puntos 10417

Cuando se emite un comando a través de cron es necesario especificar toda la ruta, por lo que se debe utilizar /usr/bin/sed .

Hay un par de cuestiones más que debes tener en cuenta:

  • cron está en desuso y esto debe hacerse utilizando launchd en cambio

  • ¿Por qué editar el archivo en el lugar? Basta con guardar la versión original del archivo de hosts (es decir /etc/hosts.orig ) y crea un nuevo archivo de hosts para cuando quieras bloquear YouTube (por ejemplo /etc/hosts.nodistractions ). Basta con copiar el archivo correspondiente en /etc/hosts en el intervalo de tiempo especificado.

    Por ejemplo, para desbloquear todo:

      cp /etc/hosts.orig /etc/hosts

    Entrar en "modo no distracción":

      cp /etc/hosts.nodistractions /etc/hosts

La ventaja de utilizar este método es que puedes editar fácilmente el archivo para añadir más hosts a medida que tus distracciones evolucionan y no tendrás que modificar el código. Ejecutar esto como un LaunchDameon ejecuta esto como root por lo que no hay problemas de permisos de los que preocuparse. No tendrá que lidiar con sudo o su o asegurarse de que está utilizando el usuario correcto.

Dicho esto, hay una aplicación llamada Enfoque (20 dólares) que tiene un conjunto de características muy rico que le permitirá bloquear no sólo los sitios web, sino también las aplicaciones. Hay una función de "tomar un descanso" que le permitirá liberar las restricciones para una cantidad configurable de tiempo que le permite tomar un descanso o como usted describió, conseguir algo cuando sea necesario. El precio (OMI) es bastante razonable para lo que ofrece.

Por favor, ten en cuenta que no estoy afiliado a esta aplicación/empresa de ninguna manera ni la utilizo personalmente. Sólo conozco este producto como resultado de tener que encontrar una herramienta para los padres de los estudiantes -que no estaban concentrados en la tarea que tenían entre manos- que les diera la posibilidad de gestionar sus distracciones de forma automática; principalmente debido a la ubicación (padres en el trabajo, niños en casa sin hacer los deberes).

0 votos

Encontré sudo launchctl load ... y cambiar los permisos en /etc/hosts hizo que pudiera actualizarlo cada 10 minutos. Probablemente podría hacer cualquiera de estos para conseguir que funcione. El uso de cron no funcionó para esto, por lo que launchctl parece ser el camino a seguir.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X