Mac的crontab定时任务

Mac的crontab定时任务

亲测案例

*/1 * * * * * `cd /Users/liuhao && /usr/local/bin/php ./mytest.php`
*/1 * * * * * `/usr/local/bin/php  /Users/liuhao/test.php`
*/1 * * * * * `date >> /Users/liuhao/log/crontab.log`

注意事项

Mac的定时任务,除基本规则外.很多地方还有很大不同的.
通过测试发现:
Mac新建文件的权限, 己: 读写 组: 读 他人: 读
和Linux还是有很大区别的.
-rw-r--r--    1 liuhao  staff   170B  9 13 16:11 test.php
所以我们在使用中应该特别注意, 定时任务创建者, 和运行文件之间的权限关系.


1.  和Linux不同的地方是, crontab定时任务中的命令需要用``包起来和shell中运行一般,PHP命令需要指定全路径.
    如PHP, 可以通过which php 获得(注意环境变量).
    
2.  需要认识到, 不同用户运行的contab是相对独立的, A和B用户, 看不到彼此添加的定时任务.这一点和Linux一样.

2.  最需要注意的时文件权限, 谁运行的crontab -e 就需要谁对运行文件拥有相应权限, 否则运行无效.
    如果定时任务,调用的时PHP, 还要注意该PHP文件与处理文件之前的权限问题.
    
    
我建议方式是:
    sudo crontab -e 直接用root来编写定时任务.
    免去, 后期维护的不确定性.

规则

规则就不累述了, 和Linux的写法一样.

test.php文件内容

date_default_timezone_set('PRC');
$redis = new Redis();
$redis->connect('127.0.0.1','6379');
$redis->select('9');
$redis->set('test',date('Y-m-d H:i:s', time()));

转载于:https://my.oschina.net/chinaliuhan/blog/3065351

<think>好的,我现在需要帮助用户解决crontab定时任务中遇到的“Operation not permitted”权限问题。首先,我要回忆一下用户提供的引用内容,看看有哪些相关的解决方案。 用户提供的引用中有几个关键点。引用[1]提到使用lsattr检查文件属性,发现可能有i属性导致无法修改,需要用chattr -ia去除。引用[2]指出在MacOS Mojave中需要系统权限设置,可能需要进入系统偏好设置的安全性与隐私中添加终端权限。引用[3]提到错误日志的问题,可能需要检查输出重定向是否正确。引用[4]涉及高版本MacOS的权限问题,使用chown可能无效,需要关闭SIP。引用[5]则建议检查脚本的执行权限,用chmod添加执行权限。 接下来,我需要将这些信息整合成一个清晰的解决步骤。首先应该检查文件属性和权限,特别是/var/spool/cron相关文件是否有i属性。然后,如果是Mac用户,可能需要调整系统权限或关闭SIP。此外,还要确保脚本本身有执行权限,并正确输出日志以便排查问题。 需要注意的是,用户可能使用的是Linux或Mac,不同系统解决方案可能不同。比如Mac的高版本需要处理SIP,而Linux可能更多是文件属性问题。因此,在步骤中需要区分不同情况,给出对应的解决方法。同时,要提醒用户谨慎操作,特别是修改系统文件或关闭SIP可能有风险。 最后,生成相关问题时要覆盖常见的情况,比如如何检查权限、其他错误如No such file或Permission denied的解决办法,以及MacOS特有的处理方式。</think>### crontab "Operation not permitted" 权限问题解决方案 #### 1. 检查文件属性锁 (Linux/Unix系统) - 使用 `lsattr` 命令检查关键文件是否被锁定: ```bash lsattr /var/spool/cron # 检查目录属性 lsattr /var/spool/cron/root # 检查用户任务文件 ``` - 如果显示含 `i` 属性(不可修改标志),执行解锁: ```bash chattr -ia /var/spool/cron chattr -ia /var/spool/cron/root ``` 此时可尝试重新执行 `crontab -r`[^1] #### 2. MacOS系统权限配置 (10.14+) 1. 进入 **系统偏好设置 > 安全性与隐私 > 隐私** 2. 在左侧栏选择 **完全磁盘访问权限** 3. 点击左下角解锁按钮后,添加终端/Terminal到许可列表[^2] 4. 重启终端后重试 #### 3. 系统完整性保护(SIP)问题 对于MacOS Catalina及以上版本: 1. 重启电脑,按住 `Command + R` 进入恢复模式 2. 打开终端执行: ```bash csrutil disable ``` 3. 重启后重试操作(注意:关闭SIP会降低系统安全性,操作后建议重新启用)[^4] #### 4. 脚本权限验证 确保执行的脚本具有可执行权限: ```bash chmod +x /path/to/script.sh # 添加执行权限 ``` 使用完整路径调用脚本: ```bash */5 * * * * /bin/bash /full/path/script.sh >> /logs/file.log 2>&1[^5] ``` #### 5. 日志排查技巧 使用显式错误输出定位问题: ```bash */5 * * * * /path/script.sh > /tmp/cron.log 2>&1 ``` 查看日志文件分析具体错误: ```bash tail -f /tmp/cron.log ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值