两种方式:

1)直接在crontab中定义变量,如:

A=123

* * * * * echo $A > /tmp/a.txt

注意在定义变量时不能使用$引用其它变量,如下面的做法错误:

A=123

B=$A

2)在/etc/environment中定义变量

此文件定义变量的格式为:NAME=VALUE,和crontab相关,也不能使用$引用其它变量。

操作系统在登录时使用的第一个文件是/etc/environment文件,/etc/environment文件包含指定所有进程的基本环境的变量。

注意,千万不要有“PATH=$PATH:/usr/local/jdk/bin”这样的用法,这将导致系统无法启动。

技巧:

想保持多台机器的crontab一致,但变量值不完全相同,

这个时候可以考虑将变量配置在/etc/environment中,这样crontab就可以相同了。

如,机器1:

A=123

机器2:

A=456

两者的crontab配置:

* * * * * echo "$A" > /x.txt

一般不建议直接修改/etc/environment,而可采取在目录/etc/profile.d下新增一个.sh文件方式替代。

但如果想crontab中生效,则只能修改/etc/environment,经测试/etc/profile.d方式不起作用。

注意:在/etc/environment设置的变量,在shell中并不生效,但crontab中有效。