我正在尝试从bash(RHEL 7.4)运行以下cron作业,这是我可以编写的入门级Postgres DB备份脚本:
#!/bin/bash
# find latest file
echo $PATH
cd /home/postgres/log/
echo "------------ backup starts-----------"
latest_file=$( ls -t | head -n 1 | grep '\.log$' )
echo "latest file"
echo $latest_file
# find older files than above
echo "old file"
old_file=$( find . -maxdepth 1 -name "postgresql*" ! -newer $latest_file -mmin +1 )
if [ -f "$old_file" ]
then
echo $old_file
file_name=${old_file##*/}
echo "file name"
echo $file_name
# zip older file
tar czvf /home/postgres/log/archived_logs/$old_file.gz /home/postgres/log/$file_name
rm -rf /home/postgres/log/$file_name
else
echo "no old file found"
fi
上面的命令从shell正确运行并正在执行预期的任务。它还回显了所需的信息。 我已经使用crontab -e
和postgres用户(不是root)安装了它*/2 * * * * /home/postgres/log/rollup.sh >> /home/postgres/log/logfile.csv 2>&1
它是正确的回显(我已经嵌入了要测试的文本),但是没有输出到.csv的命令。虽然这不是我的关注。我担心的是,它根本没有运行这几个命令。
我通过将日志文件(.csv)路径更改为/ dev / null进行了另一次尝试,并且正在执行Shell脚本中的命令。我没有得到我在这里想念的东西。
.csv文件具有777的权限,仅供测试