在.profile
用户文件中root
我定义了一个函数,例如
function printDate() {
date
}
我想每分钟运行一次此功能并将输出附加到 cron.log。我尝试添加以下 crontab 条目:
* * * * * printDate > $HOME/cron.log 2>&1
但它不起作用。文件cron.log
已创建,但它是空的。我猜这是因为.profile
cron 未读取它,因此它无法使用其中定义的任何函数/别名。因此,我尝试将 crontab 条目更改为:
* * * * * source $HOME/.profile;printDate >> $HOME/cron.log 2>&1
但这也不起作用。似乎 cron 仍然无法访问该printDate
功能,因为我看到以下内容cron.log
/bin/sh: printDate: not found
答案1
只需将其包装在另一个 bash 脚本中即可。您的文件名会有所不同,但我有:test(.profile)
#!/bin/bash
function printDate() {
date
}
包装(你可以把新脚本放在任何地方,只需更改 url)
#!/bin/bash
cd ~/
source ./test
printDate > ./date.log
从 /bin/sh 运行时
$ ls
test wrap
$ ./wrap
$ cat date.log
Wed Apr 11 11:49:39 EDT 2012
$
现在只需确保您的路径/环境正确
我刚刚测试的 crontab 行是:
SHELL=/bin/sh
HOME=/root
* * * * * $HOME/wrap >/dev/null 2>&1