私は自分自身のための生産性スイートを作成しようとしています。私の最初の目標は、0900時から1600時までFacebook、Gmail、Stackexchangeをブロックすることでした。
現在、私は/etc/hosts
gmailとstackexchangeについて0.0.0.0 www.facebook.comと同様のコンテンツを編集して追加しました。
しかし、スクリプトにブロック期間を含める方法は少し混乱しています。
私の考えは、2つの異なるファイル(hosts_allow、host_ブロック)を持ち、時間に依存するcp hosts_allow hosts
ことですcp hosts_block hosts
。しかし、これを行うには、無限ループを入力する必要があるのか、それとも問題を解決するための最良の方法かはわかりません。
どんな手がかりがありますか?
答え1
使用cron
。
説明するcrontab -e
rootユーザーとして- またはすでに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
与えられたシェルコマンドを使用して上書きされることを意味します。
実際にはもっと複雑なものが欲しいかもしれません。
0 9 * * 1-5 cp /etc/hosts_worktime /etc/hosts
0 16 * * 1-5 cp /etc/hosts_playtime /etc/hosts
5番目の位置の変化は、1-5
勤務時間と遊び時間の変化が月曜日から金曜日にのみ発生することを意味します。
man 5 crontab
ファイルに対して実行できるすべての操作についての完全な指示を受けてくださいcrontab
。
hosts
ところで、上記のファイル名がhosts_allow
近すぎて名前を変更しましたhosts.allow
。TCPラッパー。
答え2
2つの異なるファイルがある場合は、hosts
特定の時間にファイルを上書きするようにcronジョブをスケジュールできます。/etc