我正在尝试为自己制作一套生产力套件。我的第一个目标是从 0900 到 1600 阻止 Facebook、Gmail 和 Stackexchange。
截至目前,我已经编辑/etc/hosts
并添加了 0.0.0.0 www.facebook.com 以及 gmail 和 stackexchange 的类似内容。
但我对如何在脚本中包含阻塞持续时间感到有点困惑。
我的想法是有两个不同的文件(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 点的第 0 分钟,/etc/hosts
使用给定的 shell 命令进行覆盖。
您实际上可能想要更复杂的东西:
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
如果您有 2 个不同的文件,您可以简单地安排一个 cron 作业在一天中的特定时间hosts
覆盖该文件。/etc