处理bash cron中的不同目录

时间:2014-12-01 23:33:50

标签: linux bash shell cron

问题......

我使用trick77的IP黑名单脚本来配置我的apache服务器的防火墙,并且能够在终端中运行他的脚本。

但是,在将 bash script in ipset-blacklist 分配给crontab时,无论我做什么,它都无法运行。

用root编写的crontab文件中的代码:

@daily /var/bash/update-blacklist.sh

我认为罪魁祸首......

由于我之前没有做过这类事情,我相信bash脚本的PATH没有正确设置......但是,我还不确定

我见过其他人使用PATH=/usr/bin:/bin:/usr/sbin:/sbin之类的行来解决涉及脚本位置的问题,但是,我并不完全知道这是什么。

我将bash文件的位置设置为/var/bash而不是/usr/bin,我相信这会让事情失效。

请原谅我缺乏理解。在谈到bash时,我真的是初学者。

非常感谢任何帮助。


我做了什么......

Per @EtanReisner:

  1. echo here >> /tmp/update-blacklist.out添加到update-blacklist.sh的顶部,并将cron设置为每分钟运行一次(* * * * *)。

    文件已成功创建。

  2. type -p curl grep egrep ipset >> /tmp/update-blacklist.out添加到update-blacklist.sh的顶部并返回:

  3. -p: not found curl is /usr/bin/curl grep is /bin/grep egrep is /bin/egrep ipset: not found

1 个答案:

答案 0 :(得分:1)

type ipset的输出表明ipset不在cron脚本PATH中,这并不奇怪。

cron作业的默认PATH相当有限。

ipset位于/usr/sbin,这是必须添加到cron脚本的PATH变量的路径。

你在问题​​中谈过这个问题

  

我见过其他人使用PATH = / usr / bin:/ bin:/ usr / sbin:/ sbin这样的行来解决涉及脚本位置的问题,但是,我不知道这是怎么做的。< / p>

这样做是将PATH变量设置为那些路径(来自默认值)。

PATH变量包含shell查找二进制文件/脚本/等的路径。在尝试将它们作为命令运行时运行。