Я пытаюсь создать себе пакет для повышения производительности. Моя первая цель — заблокировать Facebook, Gmail и Stackexchange с 09:00 до 16:00.
На данный момент я отредактировал свой /etc/hosts
и добавил 0.0.0.0 www.facebook.com и аналогичные для gmail и stackexchange.
Но я немного не понимаю, как включить длительность блокировки в свой сценарий.
Я думал, что будет 2 разных файла (hosts_allow, hosts_block), а затем cp hosts_allow hosts
в cp hosts_block hosts
зависимости от времени это нужно будет поместить в бесконечный цикл или что-то в этом роде, но я не уверен, что это лучший способ решения проблемы.
Есть какие-нибудь подсказки?
решение1
Использовать cron
.
Сказатьcrontab -e
как корень— или, sudo crontab -e
если вы это sudo
настроили, — и вставьте следующее в файл, который появится в текстовом редакторе:
0 9 * * * cp /etc/hosts_worktime /etc/hosts
0 16 * * * cp /etc/hosts_playtime /etc/hosts
Это означает, что в нулевую минуту 9-го и 16-го часов каждого дня месяца необходимо перезаписать данные /etc/hosts
с помощью указанных команд оболочки.
На самом деле вам может понадобиться что-то более сложное:
0 9 * * 1-5 cp /etc/hosts_worktime /etc/hosts
0 16 * * 1-5 cp /etc/hosts_playtime /etc/hosts
Это единственное изменение — добавление 1-5
пятой позиции — означает, что смена рабочего времени и времени отдыха происходит только с понедельника по пятницу.
Допустим, вы man 5 crontab
хотите получить полное объяснение того, что можно делать с crontab
файлом.
Кстати, я изменил названия ваших hosts
файлов выше, потому что hosts_allow
они слишком близки к hosts.allow
, используемомуTCP-оболочки.
решение2
Если у вас есть два разных hosts
файла, вы можете просто запланировать задание cron для перезаписи файла в /etc
определенное время в течение дня.