开发经验随笔程序员我用 Linux

技术随笔小技巧--linux的定时任务之mysql comman

2017-09-05  本文已影响57人  山东大葱哥

背景

山东大葱哥写了一个bash脚本,主要内容包括:

问题现象

手工执行该脚本一切正常,正常生成了xls文件,山东大葱哥也正常接收到了预期邮件。
于是为了方便,将其加入到了crontab中,设定为每日0点15分执行。奇怪的事情就发生了,每次山东大葱哥收到的邮件都是大小为0字节的xls文件。

问题追踪

后经仔细核查在linux的本地邮箱中找到了错误:

Message  3:
From root@iZ2364j30brZ  Mon Sep  4 14:33:01 2017
Return-Path: <root@iZ2364j30brZ>
Date: Mon, 4 Sep 2017 14:33:01 +0800
From: root@iZ2364j30brZ (Cron Daemon)
To: root@iZ2364j30brZ
Subject: Cron <root@iZ2364j30brZ> /dailyReport/test/auto.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin>
X-Cron-Env: <MAILTO=root>
X-Cron-Env: <HOME=/>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Status: R

/dailyReport/test/auto.sh: line 5: mysql: command not found

mysql在用户命令行状态是可以正常执行的,为什么在定时任务中不能执行呢?本地邮件中给出了理由,经山东大葱哥核查mysql确实不在cron执行的环境变量 中

<PATH=/sbin:/bin:/usr/sbin:/usr/bin>

问题解决

既然找到了问题,那么自然好找解决办法了,山东大葱哥在cron的环境路径下 建立mysql的软链,这样定时任务就可以正常执行mysql命令了。

[root@iZ bin]#which mysql
/application/mysql/bin/mysql
[root@iZ /]# cd /usr/bin
[root@iZ bin]# ln -fs /application/mysql/bin/mysql mysql

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入技术爱好者交流群373107565,我们一起学技术!

linux 定时任务描述格式
上一篇 下一篇

猜你喜欢

热点阅读