我正在嘗試為自己製作一套生產力套件。我的第一個目標是從 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