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中的变量不同.这样,结果是可预测的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |