从报错no crontab for user/ vi exit with status 1看crontab
Posted QA小虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从报错no crontab for user/ vi exit with status 1看crontab相关的知识,希望对你有一定的参考价值。
问题描述: 启动定时脚本check mac 机器与jenkins平台的连接
crontab -e */5 * * * * sh check.sh
:q退出后报错形如:
为什么执行crontab命令出现的报错是和vi相关呢?crontab背后是如何实现的?发现起初使用crontab并未真实理解,只是使用。
原因:
Google后,很多回答在说修改vim配置等,https://superuser.com/questions/359580/error-adding-cronjobs-in-mac-os-x-lion
详解crontab
Linux系统会进行例行性检查等,依托的是cron系统服务。用户控制例行性工作调度使用crontab,核心利用的也是cron服务。
crontab权限控制 /etc/cron.allow /etc/cron.deny 工作调度记录 /var/spool/cron #cron服务分钟级别读取 /etc/crontab #cron服务分钟级别读取 /var/log/cron #日志 crontab -e #实际执行 /usr/bin/crontab,写入调度记录文件
/etc/init.d/crondrestart #重启crond服务
和vi有什么关系呢?关系是用户新增的任务调度会被记录到/var/spool/cron/[username]文件中(username必须先拥有权限,/etc/cron.allow和/etc/cron.deny中指定),此时vi出现,crontab默认调用vi打开文件。
出错原因:
vim已替代了vi,机器上执行vi时一般是alias到vim,而crontab仍是调用vi,则显示报错。
最终解决方法:
最后是命令行下执行如下命令解决了问题。
alias crontab="VIM_CRONTAB=true /usr/bin/crontab"
附加:
这次还看到几项使用crontab的注意事项也是之前没有关注到的,记录下。
- 资源分配
crontab配置例行性工作,若集中在相同的时间启动,某个时间段机器会变得不堪重负,建议是划分开执行时间段。
- 取消不必要输出选项
这一点是以前被忽略的。当有执行结果或者执行的选项中有输出的数据时,该数据将会mail给MAILTO(/etc/crontab文件中指定),所以会导致一直发送邮件出来。若必须有输出选项,则在配置时可指向 /dev/null垃圾桶
以上是关于从报错no crontab for user/ vi exit with status 1看crontab的主要内容,如果未能解决你的问题,请参考以下文章
Linux定时任务Crontab使用 提示no crontab for root
报错集:给新创建的MySQL数据库设置用户密码时报错(error: ‘Access denied for user ‘root‘@‘localhost‘ (using password: NO))
报错集:给新创建的MySQL数据库设置用户密码时报错(error: ‘Access denied for user ‘root‘@‘localhost‘ (using password: NO))(代
最新 mysql登录报错“Access denied for user 'root'@'localhost' (using password: NO”的处理方法
最新 mysql登录报错“Access denied for user 'root'@'localhost' (using password: NO”的处理方法
MySQL初始化之后登陆不进去,error:‘Access denied for user‘root‘@‘localhost‘(using password:NO)‘报错