与bash脚本的日常真空行李工作

我希望能够创造日常的吸尘,以便能够在不太繁忙的时间安排真空。

我一直在寻找一种方法,例行地抽真空x天没有被吸走的桌子。 PostgreSQL允许你抽满。 哪个开始,并不能控制所花费的时间。

因此,我想有一种方法来searchx时间内未被忽视的表格。 然后,如果当前时间在一个时间窗口中,则将其抽真空。

这是代码:

#!/bin/bash beginTime="0000" endTime="0700" time=$(date +"%H%M") timeToRun=true while $timeToRun;do if [ $time -lt $beginTime ] then echo "Begin Time not yet reached" timeToRun=false else if [ $time -lt $endTime ] then echo "you may start" echo "Vacuum table" resultToBeVacuumed=$(sudo -u postgres psql -c "select '!'|| schemaname ||'.' || relname||'!' from pg_stat_user_tables where (last_autovacuum IS NULL or (now() - last_autovacuum > interval '5' day) ) and (last_vacuum IS NULL or (now() -last_vacuum > interval '5' day)) order by last_vacuum asc limit 1;") echo "$resultToBeVacuumed" toBeVacuumed=$(echo $resultToBeVacuumed| cut -d '!' -f 2) echo "$toBeVacuumed" echo "Vacuum started" if [[ $toBeVacuumed != *"----"* ]]; then echo "$toBeVacuumed" sudo -u postgres psql -c "vacuum analyse verbose $toBeVacuumed" else timeToRun=false fi else echo "End Time passed" timeToRun=false fi fi done 

为什么我最终在一个bash脚本的原因是,postgresql的SQL脚本不能使用一个Execute 'vacuum analyse $table' 。 这会导致错误VACUUM不能从函数或多命令string执行 。 我尝试了很多东西。 不允许使用begin...end的基本规则,这是错误的原因,我无法删除。 每个function都需要一个范围,从而导致错误。 因此解决这个问题的唯一办法就是用孤立的命令来执行真空。 因此bash。

我希望这会为人们节省大量的时间寻找解决scheme。