如何在 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
这是我的 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