为什么我的shell脚本不能与cron一起使用?

时间:2015-03-02 08:51:23

标签: bash shell cron

我有两个shell脚本。

工作

$ cat script_nas.sh

#!/bin/bash
for i in `cat nas_filers`
do echo $i
  touch /mnt/config-backup/nas_backup/$i.auditlog.0.$(date '+%Y%m%d')
  ssh -o ConnectTimeout=5 root@$i rdfile /etc/configs/config_saved > /mnt/config-backup/nas_backup/$i.auditlog.0.$(date '+%Y%m%d')
done

其他

不合作

$ cat script_san.sh

#!/bin/bash
for i in `cat san_filers`
do echo $i
  touch /mnt/config-backup/san_backup/$i.auditlog.0.$(date '+%Y%m%d')
  ssh -o ConnectTimeout=5 root@$i rdfile /etc/configs/config_saved > /mnt/config-backup/san_backup/$i.auditlog.0.$(date '+%Y%m%d')
done

Cron条目是:

$ crontab -l
Filers config save script
0 0 * * * /mnt/config-backup/script_san.sh
0 0 * * * /mnt/config-backup/script_nas.sh
0 0 * * * /mnt/config-backup/delete_file

脚本script_san.sh不起作用。 输出就像 SAN备份目录

san_backup]# ls -lart alln01-na-exch01a.cisco.com.auditlog*
-rw-r--r-- 1 root root 210083 Mar  1 22:24 alln01-na-exch01a.auditlog.0.20150301
[root@XXXXX san_backup]# pwd
/mnt/config-backup/san_backup

NAS备份目录

nas_backup]# ls -lart rcdn9-25f-filer43b.cisco.com.auditlog*
-rw-r--r-- 1 root root 278730 Feb 26 00:06 rcdn9-25f-filer43b.cisco.com.auditlog.0.20150226
-rw-r--r-- 1 root root 281612 Feb 27 00:17 rcdn9-25f-filer43b.cisco.com.auditlog.0.20150227
-rw-r--r-- 1 root root 284105 Feb 28 00:02 rcdn9-25f-filer43b.cisco.com.auditlog.0.20150228
-rw-r--r-- 1 root root 284101 Mar  1 00:02 rcdn9-25f-filer43b.cisco.com.auditlog.0.20150301
[root@XXXXXXX nas_backup]#

从cron日志中我可以看到cron正在执行两个脚本,但script_san.sh的输出没有到来。

1 个答案:

答案 0 :(得分:0)

根据我的经验,大多数时候脚本是手动工作但不是来自crontab,因为登录脚本没有运行。尝试在脚本的乞讨或cron文件的第一行添加source ~/.bash_profile之类的内容。您是否尝试(用于调试)使用at命令运行脚本?