如何在 postgres 中使用 shell 脚本触发 VACUUM 命令

How to fire VACUUM command using shell script in postgres

这是我的 shell 脚本

    #!/bin/bash
    psql --host=127.0.0.1 --port=5432 --dbname=SIEM --username=dbauser
    vacuumdb --analyze --verbose --table 'vuln' SIEM

但它不能正常工作并给出错误:

   linux-lxh4:/home/gaurav # ./script.sh 
   psql (9.2.5)
   Type "help" for help.

   SIEM=# \q
   vacuumdb: could not connect to database root: FATAL:  Peer authentication failed for user "root"

Edit1:我使用了这段代码:

   psql --host=127.0.0.1 --port=5432 --dbname=SIEM --username=dbauser
   VACUUM FULL VERBOSE vuln 

这是错误:

   ./script.sh: line 4: VACUUM: command not found

来自Postgres VACUUM documentation

管理命令被称为 vacuum 而不是 vacuumdb

我这里没有 psql 但应该是

#!/bin/bash
psql --host=127.0.0.1 --port=5432 --dbname=SIEM --username=dbauser
-c 'VACUUM VERBOSE ANALYZE vuln'

如果您以后 运行 vacuumdb,则无需使用 psql 连接到 Postgres。而是使用如下内容:

  vacuumdb --host=127.0.0.1 --port=5432 --dbname=SIEM --username=dbauser --analyze --verbose --table 'vuln' 

(或者如另一个答案中所述,您可以在使用 psql 连接后使用 VACUUM SQL 命令。语法不同并且不使用“--xxxx”选项)

我们在 OLA 中使用的 bash 脚本来清除 reportsdb。

                     #!/bin/sh
                     dbname="reportsdb_new"
                     username="postgres"
                     psql $dbname $username << EOF
                     vacuum FULL VERBOSE ANALYZE ;
                     reindex database reportsdb_new ;
                     EOF