shell脚本手动执行成功,定时任务执行脚本不成功

上一篇文档脚本手动能执行成功,crontab定时任务执行脚本不成功。

原因:cron的环境变量和shell脚本的环境变量不一样

 

1
2
3
4
5
6
7
8
9
解决办法:
#方法一:定时任务里面切换到root执行()
*/5 * * * * su - root -c "/data/pkgs/mysql/tools/auto_backup.sh"
 
#方法二:在脚本里面添加环境变量(亲测可用)
vim /data/pkgs/mysql/tools/auto_backup.sh
#!/bin/bash
source /etc/profile
source ~/.bash_profile

 

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh
# 在这修改程序名和程序所在目录,其他不用改
source /etc/profile
source ~/.bash_profile
name="carte"
path="/app/bigdata/data-integration/"
pid=`ps -A |grep $name| awk '{print $1}'`
now=`date  "+%Y-%m-%d %H:%M:%S"`
# 检测是否在运行
if [ ! $pid ]
then
    echo "$now $name is not running, start it now..."
    # 启动程序命令
    cd $path
  echo "$now $path come in..."
    nohup /app/bigdata/data-integration/carte.sh  /app/bigdata/data-integration/pwd/carte-config-master-8080.xml >> /data/bigdata/kettle/log/spoon.log 2>&1 &
    new_pid=`ps -A |grep $name| awk '{print $1}'`
    # 检测是否启动成功
else
    echo "$now $name is running, pid is $pid"
fi

定时任务可以通过cat /var/spool/mail/root查看是否生效

 

posted @   大日很忧伤  阅读(2545)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示