linux – `outputscript | gzip> $file`没有覆盖$file

前端之家收集整理的这篇文章主要介绍了linux – `outputscript | gzip> $file`没有覆盖$file前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个每小时的cron脚本,它接受一些输出(一个 mysql转储),通过gzip管道,并旨在覆盖一个同名的文件.当我以root身份手动运行时,文件被覆盖.当它由cron守护程序运行时,文件名附加了“.1”.这种情况一直在发生,所以过了一段时间我有很多这样的文件
myfile.gz
myfile.gz.1
myfile.gz.1.1
myfile.gz.1.1.1
myfile.gz.1.1.1.1

等等.

ps aux | grep crond显示守护程序以root身份运行.

我试过了:

>重命名原始文件,推送输出,然后在完成时删除文件,和
>在输出管道之前删除原始文件

但是没有按预期工作,我只得到.1.1.1.1文件.

脚本看起来像这样(没什么特别的),位于/etc/cron.hourly的CentOS盒子上:

#!/bin/bash
DATE=`date +%H`
DIR="/abs/path/to/dir"
FILE="hourly-${DATE}.gz"
OPTS="..."
MysqLdump $OPTS | gzip -9 > $DIR/$FILE

任何人都可以建议为什么这个简单的操作没有按预期运行?

解决方法

最有可能的是,您的脚本编写为使用Bash功能,但它由Bourne shell运行.你有#!/ bin / bash作为脚本的第一行吗?请发布,以便我们更好地帮助您.

编辑:

在作为cron作业运行的脚本中,我总是指定程序的完整路径(例如MysqLdump和gzip),因为$PATH变量和别名之类的东西将与交互式shell中的变量不同.这样,结果是可预测的.

猜你在找的Linux相关文章