我如何编写一个 cron 任务来阻止我上网,从晚上 7 点到早上 7 点?(这样我就可以睡一觉了)

我如何编写一个 cron 任务来阻止我上网,从晚上 7 点到早上 7 点?(这样我就可以睡一觉了)

我正在使用 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/

相关内容