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

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

127.0.0.1 www.youtube.com

Para evitar que me distraiga. Cuando necesito algo en uno de los sitios que he bloqueado, agrego # al comienzo de la línea. Ejecutando este comando, puedo hacer que todas las líneas se puedan descomentar para eliminar el acceso nuevamente:

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

Para eliminar automáticamente el acceso, ejecuto sudo crontab -ey agrego esta línea

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

También probé consudo crontab -e -u root

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

¿Qué versión de macOS estás ejecutando?
Fue una buena sugerencia @ lx07, pero desafortunadamente no funcionó.

Respuestas (1)

Cuando emite un comando a través de cron, debe especificar la ruta completa, por lo que, en su lugar, debe usar /usr/bin/sed.

Hay un par de otras cuestiones que debe considerar:

  • cronestá en desuso y esto debe hacerse usando launchden su lugar

  • ¿Por qué editar el archivo en su lugar? Simplemente guarde la versión original del archivo de hosts (es decir, /etc/hosts.orig) y cree un nuevo archivo de hosts para cuando desee bloquear YouTube (es decir, /etc/hosts.nodistractions). Simplemente copie el archivo apropiado en /etc/hostsel intervalo de tiempo especificado.

    Por ejemplo, para desbloquear todo:

      cp /etc/hosts.orig /etc/hosts
    

    Para entrar en "modo sin distracciones":

      cp /etc/hosts.nodistractions /etc/hosts
    

El beneficio de usar este método es que puede editar fácilmente el archivo para agregar más hosts a medida que evolucionan sus distracciones y no tendrá que modificar el código. Ejecutar esto como LaunchDameon ejecuta esto de rootmodo que no hay problemas de permisos de los que preocuparse. No tendrá que lidiar con sudoo suasegurarse de que está utilizando el usuario correcto.

Dicho esto, hay una aplicación llamada Focus ($ 20) que tiene un conjunto de funciones muy rico que le permitirá bloquear no solo sitios web, sino también aplicaciones. Hay una función de "tomar un descanso" que le permitirá liberar las restricciones durante un período de tiempo configurable que le permitirá tomar un descanso o, como describió, obtener algo cuando sea necesario. El punto de precio (IMO) es bastante razonable para lo que ofrece.

Tenga en cuenta que no estoy afiliado a esta aplicación/compañía de ninguna manera ni la uso personalmente. Solo conozco este producto como resultado de tener que encontrar una herramienta para los padres de los estudiantes, que no estaban enfocados en la tarea en cuestión, que les diera la capacidad de administrar sus distracciones automáticamente; principalmente debido a la ubicación (padres en el trabajo, niños en casa sin hacer la tarea).

Encontré sudo launchctl load ... y cambiando los permisos en /etc/hosts lo hice para poder actualizarlo cada 10 minutos. Probablemente podría hacer cualquiera de estos para que funcione. Usar cron simplemente no funcionó para esto, por lo que launchctl parece ser el camino a seguir.