我怎样才能编写一个从晚上 7 点到早上 7 点阻止我的互联网的 cron 作业?(这样我才能睡个好觉)

7 internet scheduled-tasks cron macos

我正在使用 OSX 10.6 并且它内置了 cron。我如何编写一个 cron 作业来阻止我每天晚上 7 点到早上 7 点的互联网?

我确定这一定很简单,但我只能在网上找到一个示例,但它不起作用。它说:

set /etc/hosts.allow file to 
be empty 
set hosts.deny file to
ALL : ALL
Run Code Online (Sandbox Code Playgroud)

我这样做了,谷歌仍然出现。

小智 8

在花了很多小时试图调试一个没有从 root 运行的作业的问题之后,我能够得到你所说的工作。这是我的确切步骤:

在终端类型中:

$ sudo crontab -eu root
Run Code Online (Sandbox Code Playgroud)

然后输入:

0 19 * * * /sbin/ifconfig en0 down > /dev/null
0 7 * * * /sbin/ifconfig en0 up > /dev/null
Run Code Online (Sandbox Code Playgroud)

就是这样!感谢@Amardeep 和@Stephenr 的贡献。


小智 5

艾伦的家长控制答案可能是最好的方法。但为了后代,我将描述为什么您的主机尝试不起作用并描述 cron 类型的解决方案。

Hosts.allow(及其对应的hosts.deny)用于指定允许(或禁止)使用某些服务访问您的计算机的主机。您想要做的是相反的事情,这就是为什么它不起作用。

应该断开网络然后重新连接网络的 crontab 条目将类似于:

0 19 * * * /path/ifconfig eth0 down 1> /dev/null
0  7 * * * /path/ifconfig eth0 up   1> /dev/null
Run Code Online (Sandbox Code Playgroud)

cron 在许多 *nix 系统上的实现方式不同,并且上述格式也有变化,因此请参阅您的手册页。抱歉,我无法提供 OS X 的具体细节。出于安全原因,某些 cron 实现在执行命令时只会设置有限的环境变量,因此您应该通过在 shell 提示符下键入“which ifconfig”来指定完整路径。您可以通过删除 stdout 重定向来对其进行一些调试,并且许多 crons 应该通过电子邮件将命令的输出发送给您,或者您可以直接重定向到日志文件。

我不确定 OS X 以太网设备叫什么...它可能与 eth0 不同。只需键入 ifconfig,它就会显示活动设备名称。您可能必须是 root 才能运行 ifconfig。您当然需要成为 root 才能编辑 crontab 文件。


小智 1

为什么要使用cron?看看这个应用程序,它更好,功能更多:http://getconcentration.com/