Linux 如何在Mac os上使用Cron更新自制软件

Linux 如何在Mac os上使用Cron更新自制软件,linux,macos,bash,cron,crontab,Linux,Macos,Bash,Cron,Crontab,我一直在探索一些持久的linux技术来帮助我实现日常工作的自动化。我发现cron非常强大,如果我可以使用它检查我系统上的一些软件包的更新 例如,我想每天晚上11点更新我的自制软件。我所做的是,使用sudo crontab-u user-e,我在Vim中打开了crontab。我在其中输入了以下命令,对自制进行更新并给我发送电子邮件 代码如下: MAILTO=myemail@foo.com * 23 * * * brew update 我把它保存起来,等待奇迹发生。我收到的电子邮件中没有执行此命令

我一直在探索一些持久的linux技术来帮助我实现日常工作的自动化。我发现
cron
非常强大,如果我可以使用它检查我系统上的一些软件包的更新

例如,我想每天晚上11点更新我的
自制软件。我所做的是,使用
sudo crontab-u user-e
,我在Vim中打开了
crontab
。我在其中输入了以下命令,对
自制
进行更新并给我发送电子邮件

代码如下:

MAILTO=myemail@foo.com
* 23 * * * brew update
我把它保存起来,等待奇迹发生。我收到的电子邮件中没有执行此命令,而是说
/bin/sh:brew:command-not-found

但当我在终端中键入
/bin/sh
以打开
sh
并键入
brew update
时,它将更新
自制

我的
crontab
配置出了什么问题


任何帮助都将不胜感激

您的
bash
配置可能有问题。确保设置了
路径
,使其包含
brew
所在的目录。您可以在
~/.profile
中设置它,但请确保在
~/.bashrc
中也设置了它。或者,您可以在
crontab
中设置它,方法与设置
MAILTO

Cron未定义路径相同,请确保始终使用完整路径调用命令,这可能是
/usr/local/bin/brew update


这被认为是防止不需要的/意外的命令运行的良好实践。如果有人将名为“brew”的恶意脚本放在您路径的其他位置,但在/usr/local/bin之前,它将被调用。

cronjob是一个不错的选择,但我不希望它自动发生。我发现了一个新的程序,如果你的Mac上安装了新版本的公式,它会通知你

我扩展了,在通知程序中不显示固定公式

我决定为cronjb使用启动代理,因为如果Mac稍后启动,它也会运行。如果你的mac电脑当时已经打开,Cron作业就可以运行

要比较cronjob和launchd,我建议阅读

这是我的配置,每天上午10点和下午3点运行。代理调用的脚本位于
/usr/local/bin/homebrew update notifier

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>EnableGlobbing</key>
    <false/>
    <key>Label</key>
    <string>homebrew.simonsimcity.update-notifier</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>/usr/local/bin/homebrew-update-notifier</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/tmp/homebrew.simonsimcity.update-notifier.err</string>
    <key>StandardOutPath</key>
    <string>/tmp/homebrew.simonsimcity.update-notifier.out</string>
    <key>StartCalendarInterval</key>
    <array>
        <dict>
            <key>Hour</key>
            <integer>10</integer>
            <key>Minute</key>
            <integer>0</integer>
        </dict>
        <dict>
            <key>Hour</key>
            <integer>15</integer>
            <key>Minute</key>
            <integer>0</integer>
        </dict>
    </array>
</dict>
</plist>

使能全球化
标签
homebrew.simonsimcity.update-notifier
程序参数
/bin/bash
/usr/local/bin/homebrew更新通知程序
运行负荷
标准错误路径
/tmp/homebrew.simonsimcity.update-notifier.err
标准门诊
/tmp/homebrew.simonsimcity.update-notifier.out
StartCalendarInterval
时辰
10
分钟
0
时辰
15
分钟
0

如果有新的更新可用,您现在将收到通知。如果您觉得已过时,请致电
brew upgrade
,或将其包含在脚本中。

我个人的处理方法是:

  • 下载CronniX(它已停止使用,但仍然有效,例如
    brew cask安装CronniX

  • 通过
    /usr/local/bin/brew update
    在UI中设置作业,使其每小时运行一次

让它在背景中勾选


谢谢@Donovan,这个成功了。现在我知道在哪里配置我的
crontab
。许多感谢使用
crontab
的人似乎不赞成达尔文(MacOSX是基于达尔文的)。改用
launchd
。这是许多快速教程中的一个:不确定是否要执行第11小时的每一分钟。。。你可能会在11点到12点之间收到很多电子邮件