私は自分用の生産性スイートを作ろうとしています。最初の目標は、午前 9 時から午後 6 時まで Facebook、Gmail、Stackexchange をブロックすることです。
現時点では、私は自分のものを編集し、/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 時の 0 分に、/etc/hosts
指定されたシェル コマンドを使用して上書きすることを意味します。
実際には、もう少し複雑なものが必要な場合があります。
0 9 * * 1-5 cp /etc/hosts_worktime /etc/hosts
0 16 * * 1-5 cp /etc/hosts_playtime /etc/hosts
その 1 つの変更 ( 1-5
5 番目の位置に配置する) は、仕事と遊びの時間の切り替えが月曜日から金曜日のみに行われることを示しています。
man 5 crontab
ファイル内で何ができるかについて、詳しく説明しますcrontab
。
ちなみに、hosts
上記のファイル名はhosts_allow
に近すぎるため変更しましたhosts.allow
。TCP ラッパー。
答え2
2 つの異なるファイルがある場合は、日中の特定の時間にhosts
ファイルを上書きする cron ジョブをスケジュールするだけです。/etc