Linux 定时任务不生效的问题

 

Linux 中定时任务不生效的问题屡见不鲜, 本质原因是: 登录式 shell & 非登录式 shell.

 

登录式 shell & 非登录式 shell

登录式 shell 有:

su -

Login: username / password

 

非登录式 shell

su

图形见面

脚本执行

 

Bash 配置文件

全局配置文件

/etc/profile 

/etc/profile.d/*.sh

/etc/bashrc

 

用户配置文件

~/.bash_profile

~/.bashrc

 

profile 类文件主要用途

设定环境变量
运行命令和脚本 

 

bashrc 类文件主要用途
 
设定本地变量
定义命令别名 

 

shell 读取配置文件顺序

登录式 shell

/etc/profile --> /etc/profile.d --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

 

非登录式 shell

~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

 

 

总结

由以上信息可知, 因为定时任务是 [ 非登录式 shell ], 其读取的配置文件为: ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh , 故而很多环境变量不会被加载, 其中包括 PATH.

 

我自己写定时任务脚本的时候, 会在脚本的开头写:

#!/bin/sh

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/zookeeper/bin:/root/bin

 

这是一个很不错的方法.

转载于:https://www.cnblogs.com/tiantiandas/p/6872296.html

你可能感兴趣的:(Linux 定时任务不生效的问题)