linux crontab 环境变量不生效

情况:

        执行nodejs做视频流转发时发现响应成功,但是视频流不能正常播放,但是手动执行nodejs时可以正常播放,最后排查到crontab执行脚本时ffmpeg这个命令没有找到

测试:

# crontab添加此任务
* * * * * env > /tmp/env.txt

# 执行后输出结果
cat /tmp/env.txt 

#结果
XDG_SESSION_ID=c33
SHELL=/bin/sh
USER=root
PATH=/usr/bin:/bin
PWD=/root
LANG=en_US.UTF-8
SHLVL=1
HOME=/root
LOGNAME=root
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env

原因:

        linux加载配置文件是有顺序的:https://www.jianshu.com/p/202e95eb79be

/etc/environment是系统在登录时读取的第一个文件,用于为所有进程设置环境变量。
/etc/profile是系统登录时执行的第二个文件,可以用于设定针对全系统所有用户的环境变量。
~/.profile是对应当前登录用户的profile文件,用于定制当前用户的个人工作环境。
/etc/bash.bashrc是针对所有用户的bash初始化文件,在此中设定的环境变量将应用于所有用户的shell中,此文件会在用户每次打开shell时执行一次。
~/.bashrc是对应当前登录用户的bash初始化文件,当用户每次打开shell时,系统都会执行此文件一次。

解决: 

        方法有很多,在此只贴出我用的两种

        1、* * * * * source /etc/profile && 需要执行的命令

        2、crontab开头加入
            SHELL=/bin/bash
            PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值