加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 02:52:47 所属栏目:Linux 来源:网络整理
导读:我有一个每小时的cron脚本,它接受一些输出(一个 mysql转储),通过gzip管道,并旨在覆盖一个同名的文件.当我以root身份手动运行时,文件被覆盖.当它由cron守护程序运行时,文件名附加了“.1”.这种情况一直在发生,所以过了一段时间我有很多这样的文件: myfile.gz
我有一个每小时的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中的变量不同.这样,结果是可预测的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读