定时任务crond,执行脚本模板

有的时候需要开机后就启动,但是在开机的时候又因为某些原因启动不起来的情况下,可以在开机后,让定时任务来执行启动任务。

设置定时任务

首先确保crond服务已安装和开机启动。
启动服务命令systemctl start crond
设置开机启动命令systemctl enable crond

执行命令crontab -e,写入以下定时任务配置信息(有人说末尾要换行,这里没有测试),命令涉及的文件必须使用绝对路径,相关执行脚本添加执行权限,加权命令chmod +x /path/to/start.sh

*/1 * * * * /path/to/start.sh

然后使crond服务reload,查看reload状态

systemctl reload crond
systemctl status crond

写文件的方式

上面的方式适合手动设置,另外一种可以写文件的方式配置。
编辑文件vim /var/spool/cron/root,此文件会被crond服务每分钟检查一次,以判断是否需要更新任务,不需要重启服务。
在网上看到有的会提示指定user name,这里就使用了默认的root。
配置的内容是一样的,举例:

*/1 * * * * /path/to/start.sh
*/1 * * * * /usr/bin/python /path/to/start.py

编写启动脚本

脚本start.sh如下

ret=$(ps -ef | grep python | grep -v grep)
start_command="python main.py"
crond_log=/path/to/crond.log
run_log=/path/to/run.log

function logger() {
	local msg=$1
    echo "$(date) ${msg}" >> ${crond_log}
}

if [ -z "${ret}" ]; then
  cd /path/to/dir
  nohup ${start_command} 2>&1 >> ${run_log} &
  wait
  logger "execute start command"
else
  logger "existed, no need to execute"
fi

完工,其实关闭的也可以这样写,stop.sh,restart.sh,etc。更完善的应该是单一脚本支持,start\stop\restart啦,这里只是快速实现。

无法正常指定定时任务

一般可以从这几个日志里面看问题

  1. /var/log/cron(定时任务具体的执行情况)
  2. /var/log/cron-20210104(类似这样的文件是日志备份文件)
  3. /var/log/maillog(root的定时任务如果程序有输出,会写入到/var/spool/mail/root,这里可以看到相关的日志)

目前遇到过的问题:

  1. 主机名不能为纯数字
  2. /var/spool/mail/root过大(49M)。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值