syslog显示cronjob正在运行

时间:2014-01-30 12:29:13

标签: linux bash crontab

我创建了一个脚本来删除旧文件并将其放在crontab中,每2分钟运行一次。我可以看到syslog显示运行的cronjob,但文件未被删除。我可以手动运行脚本,它运行没有任何错误。我还使用了“sudo crontab -e”,以便为cronjob提供root权限。有没有删除文件的想法?

Crontab如下:

*/2 * * * * /bin/bash /mnt/md0/capture/delete_old_pcap.sh
02 00,12 * * * sh /usr/bin/nfexpire.sh

脚本如下:

   #!/bin/bash

  ulimit -S -s 50000
  LIMIT=10
  NO=0
 #Get the number of files, that has `*.pcap` in its name, with last modified 

 NUMBER=$(find /mnt/md0/capture/DCN/ -maxdepth 1 -name "*.pcap" |wc -l)

 if [[ $NUMBER -gt $LIMIT ]]  #if number greater than limit
 then

 del=$(($NUMBER-$LIMIT))

 if [ "$del" -lt "$NO" ]
  then
  del=$(($del*-1))
 fi
FILES=$(find /mnt/md0/capture/DCN/ -maxdepth 1 -type f -name "*.pcap" -print0 |$
rm -f ${FILES[@]}
#delete the originals

fi

1 个答案:

答案 0 :(得分:1)

不确定它会解决您的问题,但请尝试:

*/2 * * * *  /bin/sh /mnt/md0/capture/delete*.sh
02 00,12 * * * /bin/sh /usr/bin/nfexpire.sh

即。执行命令时,将完整的路径提供给shell。

我的通配符不起作用,因为其他脚本将被视为第一个脚本的参数(好点@broslow)。而是创建一个调用所有其他脚本的脚本。

如下所示:

脚本/mnt/md0/capture/delete.sh

for f in delete.d/*.sh; do
    /bin/sh $f
done

所有脚本都在/mnt/md0/capture/delete.d/

然后在你的crontab中:

*/2 * * * *  /bin/sh /mnt/md0/capture/delete.sh

最后在本地计算机上检查您的邮件,crontab通过邮件发送错误输出/报告(例如,在命令行上运行crontab的用户键入mail,即在您的情况下以root用户身份)。

相关问题