zoukankan      html  css  js  c++  java
  • 【linux】crontab的环境变量问题

    今天遇到一个奇怪的问题,同样一个脚本,手动执行没问题,加入到crontab中,就出现无法运行的情况,第一反应是环境变量问题

    环境说明:

    操作系统:centos

    用户:test用户通过sudo su切换到root用户执行脚本和计划任务

    程序目录:脚本中引用的程序在/usr/local/bin目录下

    1,查看/etc/crontab,发现这里有写环境变量,之前没有红框中的目录,我手动添加以后,重启crontab服务。

    service crond restart

    重启之后,测试还是不行,做了一个这样的计划任务

    执行之后,发现只有/usr/bin:/bin:/usr/sbin

    居然没有/usr/local/bin怪不得程序不能运行。

    2,之后尝试将变量写入到家目录的.bash_profile中,比如/root/.bash_profile中,发现也不行,估计是因为这个root是通过test的sudo得来的,没有加载环境变量。

    3,终极解决方案:

    前提:将需要的程序目录添加到/etc/profile最后,如下

    方案一:在计划任务中增加source /etc/profile,这样执行

    方案二:在脚本的开头中添加source /etc/profile

     总结:

    个人感觉方案二比较合适,有更好的适应性,脚本在新的机器上也可以正常运行。另外,就是计划任务启动以后,一定要检查是不是真的正确执行了!!!

  • 相关阅读:
    红帽7 创建网络会话
    红帽7 Iptables与Firewalld防火墙
    红帽7 配置网卡
    红帽7 LVM逻辑卷管理器
    红帽7 RAID磁盘冗余阵列
    红帽7 磁盘划分
    wpf学习一(转)
    选中当前点击的位置
    c#客显
    两个程序间的通信有三种
  • 原文地址:https://www.cnblogs.com/zhenglisai/p/6846372.html
Copyright © 2011-2022 走看看