这是我的脚本
mboxutil -l > n.txt
sed 's/^.*user//' n.txt > n1.txt
cat n1.txt | sed 's/^.//' > n2.txt
sed 's/\/.*//' n2.txt > dss_list.txt
rm -f n.txt
rm -f n1.txt
rm -f n2.txt
sed -e '/^$/d' -e '1d' dss_list.txt > all-dss-accounts.txt
rm -f dss_list.txt
CNT=`wc -l < all-dss-accounts.txt`
mailx -s "DSS count on `date` is $CNT" [email protected] < all-dss-accounts.txt
当我直接运行脚本时,它会执行。但在 crontab 上,它不能正确执行。
这是 cron 条目。
10 14,16,18,20,22 29 6 * /root/scripts/extract.sh
每月6月29日下午2点、4点、6点、8点、10点第10分钟。
我不确定,但我有一种感觉,我使用脚本临时创建的 .txt 文件需要包含需要在其下创建的目录。
我对吗?帮我!
答案1
您需要使用输出文件的完整路径,可能还需要使用可执行文件的完整路径。当在 cron 中运行时,没有预先存在的环境可以让它知道工作目录或路径等信息。
答案2
使用完整路径来确保功能。
在这种mboxutil
情况下,您必须知道命令所在的位置。
执行:
$ type -a mboxutil
mboxutil is hashed /opt/sun/comms/messaging64/bin/mboxutil
更新你的脚本:
/opt/sun/comms/messaging64/bin/mboxutil -l > /path/to/n.txt
sed 's/^.*user//' /path/to/n.txt > /path/to/n1.txt
cat /path/to/n1.txt | sed 's/^.//' > /path/to/n2.txt
sed 's/\/.*//' /path/to/n2.txt > /path/to/dss_list.txt
rm -f /path/to/n.txt
rm -f /path/to/n1.txt
rm -f /path/to/n2.txt
sed -e '/^$/d' -e '1d' /path/to/dss_list.txt > /path/to/all-dss-accounts.txt
rm -f /path/to/dss_list.txt
CNT=`wc -l < /path/to/all-dss-accounts.txt`
cat /path/to/all-dss-accounts.txt | mail -s "DSS count on `date` is $CNT" [email protected]
chmod
要跳过文件权限问题,请在脚本的最后添加以下行
chmod 777 /path/to/all-dss-accounts.txt
试一下!