我正在使用 OSX 10.6,它内置了 cron。我该如何编写一个 cron 作业来在每天晚上 7 点到早上 7 点之间阻止我的互联网?
我确信这一定很简单,但我在网上只能找到一个例子,而且它不起作用。它说:
set /etc/hosts.allow file to
be empty
set hosts.deny file to
ALL : ALL
我这样做了,但谷歌仍然出现。
答案1
在花费大量时间尝试调试未从 root 运行的作业问题后,我终于能够按照您所说的方法工作。以下是我的具体步骤:
在终端类型中:
$ sudo crontab -eu root
然后输入:
0 19 * * * /sbin/ifconfig en0 down > /dev/null
0 7 * * * /sbin/ifconfig en0 up > /dev/null
就这样就大功告成了!感谢@Amardeep 和@Stephenr 的贡献。
答案2
Alan 的家长控制回答可能是实现此目的的最佳方法。但为了方便后人,我将描述您的主机尝试失败的原因,并描述 cron 类型的解决方案。
hosts.allow(及其对应的 hosts.deny)用于指定允许(或禁止)访问的主机你的机器上某些服务。而您要执行的操作恰恰相反,这就是它不起作用的原因。
应该断开然后重新连接网络的 crontab 条目将是“类似”的“某些内容”:
0 19 * * * /path/ifconfig eth0 down 1> /dev/null
0 7 * * * /path/ifconfig eth0 up 1> /dev/null
cron 在许多 *nix 系统上的实现方式不同,并且上述格式也有所不同,因此请查阅手册页。抱歉,我无法提供 OS X 的具体细节。出于安全原因,某些 cron 实现在执行命令时只会设置有限的环境变量,因此您应该通过在 shell 提示符下键入“which ifconfig”来指定完整路径。您可以通过删除 stdout 重定向来对其进行调试,许多 cron 会通过电子邮件向您发送命令的输出,或者您可以重定向到日志文件。
我不确定 OS X 以太网设备叫什么... 它可能与 eth0 不同。只需输入 ifconfig,它就会显示活动设备名称。您可能必须以 root 身份运行 ifconfig。您当然需要以 root 身份编辑 crontab 文件。
答案3
在 OS X 中,考虑使用家长控制权。它将完全满足您的要求。
答案4
为什么要使用 cron?看看这个应用程序,它更好,功能更多:http://getconcentrating.com/