1
Bardon 2016-02-29 20:30:39 +08:00
试试在 cron 中打印 PATH 看看路径变量
|
2
Lucups 2016-02-29 20:50:56 +08:00
|
3
Devin OP @Lucups 不是这个的问题,因为我没安装邮件服务端, cron 执行失败就会出现第二条 log ,成功执行则不会
|
5
LoliconInside 2016-02-29 21:14:40 +08:00
1.cron 中的命令最好用全路径,例如 /usr/bin/GET ;
2.最好装个 sendmail 之类的 MTA 服务,看 cron 所在用户的邮件里写的无法执行的原因。 |
6
ooxxcc 2016-02-29 21:17:14 +08:00
装个邮件服务端看错误提示
一般不是环境变量就是权限…… |
7
Devin OP @Bardon
@Lucups @LoliconInside @ooxxcc 装了 exim4 ,查看日志 cat /var/mail/mail 如下 /etc/firewall-locked.sh: line 1: iptables: command not found /etc/firewall-locked.sh: line 2: iptables: command not found /etc/firewall-locked.sh: line 3: iptables: command not found /etc/firewall-locked.sh: line 4: iptables: command not found /etc/firewall-locked.sh: line 5: iptables: command not found /etc/firewall-locked.sh: line 6: iptables: command not found /etc/firewall-locked.sh: line 7: iptables: command not found 命令改成如下,顺利执行 /sbin/iptables -F /sbin/iptables -X /sbin/iptables -Z /sbin/iptables -P INPUT DROP /sbin/iptables -P FORWARD DROP /sbin/iptables -P OUTPUT DROP /sbin/iptables -A OUTPUT -j LOG --log-prefix "[IPTABLES OUTPUT] " --log-level 7 |
8
sunsol 2016-03-01 07:40:39 +08:00
环境变量问题,最好单独做成配置文件放在 /etc/cron.d 目录里
配置文件里环境变量想怎么设就怎么设,完全不会影响其他任务 还有告警日志最好把系统默认用邮件配成本地 log |
9
Devin OP @sunsol 我是把命令放到 /etc/firewall-test.sh 里面,可以直接顺利执行这个脚本,但是放在 cron 里则不行,要把 iptables 改成 /sbin/iptables 才行,是否.sh 脚本里的命令也要带全路径,才可以在 cron 里执行?
|
10
suueyoung 2016-03-01 08:48:17 +08:00
80%觉得是环境变量的锅.
|
11
janxin 2016-03-01 09:00:54 +08:00 via iPhone
一般环境变量没有,程序指定全路径
|
12
LoliconInside 2016-03-01 12:06:36 +08:00
@Devin 这就对了嘛,懒得指定环境变量的话,直接写全路径就啥事没有了。
|
13
qiaoxin 2016-03-02 05:18:48 +08:00 via Android 1
1. crontab -e ,然后在最上面加入 PATH=/bin:/usr/bin 等等。
2. 或者在脚本里面指定 PATH 。 3. 还可以这样* * * * * . /etc/profile && /your/shell.sh 。 4. 修改 /etc/crontab 中的 PATH 。 |
14
qiaoxin 2016-03-02 05:28:41 +08:00 via Android 1
以上方法选择一种就可以了,推荐选择 1>2>3>4
|
16
yuedingwangji 2016-03-05 01:00:22 +08:00
写了个脚本,手动执行没有任何问题,放到 crontab 下执行就不行,百度了一堆,还是懵懂,初步得出结论和解决方法。
导致 crontab 不执行的原因主要是 脚本里面设置了自定义变量。 解决方法: 脚本开头添加 source /etc/profile export 添加的自定义变量 当手动执行脚本 OK ,但是 crontab 死活不执行时,很可能是环境变量惹的祸,可尝试在 crontab 中直接引入环境变量解决问题。如: 0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh 网上找的,实测可用, lZ 可以试下 |
17
gbcbooks 2016-03-21 10:35:45 +08:00
crontab 好用,但也很坑,但坑也就是基环境变量的问题
|