PostgreSQL禁用更多的输出
我正在PostgreSQL服务器上运行脚本:
psql db -f sql.sql  从bash或cron脚本。 
 它不断试图less地分页输出。 
 如何禁用psql结果分页? 
我想要做的只是改变数据,我不关心任何输出。
要禁用分页但保留输出,请使用:
 \pset pager off 
要记住这个设置,把它添加到你的〜/ .psqlrc中 。
请参阅psql手册 。
 在老版本的Pg上,它只是一个切换,所以\pset pager 
 要完全禁止查询输出,请在您的psql脚本中使用\o /dev/null 。 
 要禁止psql的信息输出,请在环境中使用-q或设置QUIET=1运行。 
 为了产生结果并将其扔掉,可以使用以下命令将stdoutredirect到/dev/null : 
 psql db -f sql.sql >/dev/null 
您可以使用以下命令redirectstdout和stderr:
 psql db -f sql.sql >&/dev/null 
但我不build议这样做,因为它会丢掉错误信息,可能会警告您某些事情不正确。 你也在产生结果并把它扔掉,效率不高。 你最好不要通过调整你的查询来制作它们。
我也在寻找这个,我在ServerFault上find了类似的问题 :
 psql -P pager=off <other params> 
closures分页的事情,不压制输出。
bash,作为一个shell ,有2个stream可以redirect输出数据:stdout和stderr,因为这个输出需要redirect到某处,linux有一个特定的“丢弃所有”节点,通过/ dev / null可到达。 你发送的所有东西都将消失在虚空中。
(shell也有一个inputstream,但我会忽略这里,因为你要求抑制输出)
这些stream由数字表示:1表示标准输出,2表示标准错误。
 所以如果你想redirect标准输出,你可以使用<和>操作符(基本上指向的是数据stream向的地方) 
假设我们想要抑制stdout(redirect到/ dev / null):
 psql db -f sql.sql > /dev/null 
正如你可以看到这是标准输出是默认的,如果你想使用你写的stream号码没有使用stream号码
 psql db -f sql.sql 1> /dev/null 
现在,如果你想抑制stderror(stream号码2),你会使用
 psql db -f sql.sql 2> /dev/null 
你也可以redirect一个stream到另一个,例如stderror到stdout,如果你想保存所有的输出到某个地方,常规和错误,这很有用。
 psql db -f sql.sql 2>&1 > log.txt 
 请注意, 2>&1之间不能有空格 
 最后,有时候最有趣的事实是,你可以用&>来抑制所有的输出,因为当你想让它“完全安静” 
 psql db -f sql.sql &> /dev/null 
 psql db -f sql.sql > /dev/null 
这是另一种select。 它的优点是你不必记住psql的选项名称等
 psql ... | cat