#!/bin/sh
filesize=`ls -l nohup.out | awk '{ print $5 }'`
echo "`date +%Y-%m-%d_%H:%M:%S` fileSize: $filesize bit" >> clearNohup.log
if [ $filesize -gt 1073741824 ]
then
echo "`date +%Y-%m-%d_%H:%M:%S` $filesize bigger than 1G, we will back up and clear..." >> clearNohup.log
cp -f nohup.out nohup.out.bak
> nohup.out
echo "`date +%Y-%m-%d_%H:%M:%S` file back up and claer over!" >> clearNohup.log
else
echo "`date +%Y-%m-%d_%H:%M:%S` $filesize less than 1G,do nothing!" >> clearNohup.log
fi
手动执行时候没有报错,正常执行;在crontab执行时候一直在报错.
系统是centOS6
报错:
clearNohup.sh: line 4: [: -gt: unary operator expected
求大神指点!
把这句:
改为这样:
要注意的是 crontab 的环境变量和我们的账号都不一样, 和 root 的环境变量也不一样.
类似普通用户会先加载
~/.bashrc
或者/etc/profile
, crontab 则会在运行时加载/etc/crontab
导入其环境变量.而你的问题还不是环境变量的问题. 但类似. 用 crontab 执行, 最好脚本内都用绝对路径.
另外, 即使你第4行过了, 下面几个使用相对路径的地方仍然会出错的.
另外, 统计文件大小为何不用
du
命令, 用ls
连管道再解析多费事啊.