一次迁移linux-crontab带来的坑中坑

计划任务定义

    crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。[摘自百度百科]

切换账号的原因

    笔者在一个项目中使用的php的laravel框架。但在用root执行计划任务生成时报错,错误信息写入到了框架默认的文件中storage/log/laravel.log去,文件的权限变成了root。
当应用程序运行程序再有错误或者日志信息需要记录时候,导致无权访问storage/log/laravel.log,出现更多的错误。
于是我决定把计划任务迁移到www的账号下。一改动带了坑中坑。【ps:不是系统管理员,只是临时替代下】
下面是我做演示的例子情景再现
计划任务

* * * * * /usr/bin/php /tmp/testcron.php

怎么操作呢

crontab  -e -u www
-e 代表编辑
-u 代表某个用户 
-l 列出某个账号的计划任务

三下五除二的迁移完成,迁移到了www的账号下。

问题出现

    过了两天业务人员说数据不正确,我想最近只调整了crontab呀。
于是猜想是出问题了,经同事指点才知道计划任务也有日志。
查看日志报错信息

zhangjuntaohost CROND[17732]: (www) CMD (/usr/bin/php /tmp/testcron.php)
zhangjuntaohost CROND[17712]: (CRON) ERROR chdir failed (/home/www): No such file or directory

原来是下面的原因导致,无家目录,

www:x:1002:1002::/home/www:/sbin/nologin

建立 /home/www ,如果要有切换目录等命令要让账号可登录

www:x:1002:1002::/home/www:/bin/bash

再看日志,正常了

 zhangjuntaohost CROND[16807]: (www) CMD (/usr/bin/php /tmp/testcron.php)
 zhangjuntaohost CROND[16814]: (www) CMD (/usr/bin/php /tmp/testcron.php)

删除/var/log/cron[坑中坑]

    在演示上述例子中,看着计划任务的日志不顺眼,删除了。但后来运行下面的命令

tail -f /var/log/cron

一直提示没有文件,没有日志了。 我重新 touch 了一个 /var/log/cron 还是不行。
又从网上搜索下重启日志服务

service rsyslog restart  
service crond restart 

结束语

这次的改动,害得我跑了好几天的数据。
服务器的修改下,一定要详细的想想哪里会受到影响,权限,文件等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值