依時間不同有兩個不同的 /etc/hosts

依時間不同有兩個不同的 /etc/hosts

我正在嘗試為自己製作一套生產力套件。我的第一個目標是從 0900 到 1600 封鎖 Facebook、Gmail 和 Stackexchange。

截至目前,我已經編輯/etc/hosts並新增了 0.0.0.0 www.facebook.com 以及 gmail 和 stackexchange 的類似內容。

但我對如何在腳本中包含阻塞持續時間感到有點困惑。

我的想法是有兩個不同的檔案(hosts_allow、hosts_block),然後cp hosts_allow hostscp 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

相關內容