在 psql 工具中,如果使用 \o
命令指定了输出到指定文件,则此后查询的结果就会被追加重定向到对应的文件中
postgres=# CREATE TABLE table_test(num int);
postgres=# INSERT INTO table_test VALUES(1);
[root@desktop-8vsufka ~]# cat /var/lib/pgsql/test.txt
CREATE TABLE
INSERT 0 1
但是如果使用了 vim 对文件进行编辑
[root@desktop-8vsufka ~]# cat /var/lib/pgsql/test.txt
CREATE TABLE
INSERT 0 1
edited by vim
此后,psql 便无法追加重定向结果
postgres=# select * from table_test;
postgres=#
[root@desktop-8vsufka ~]# cat /var/lib/pgsql/test.txt
CREATE TABLE
INSERT 0 1
edited by vim
检查文件,并无 vim 占用文件时产生的临时文件
[root@desktop-8vsufka ~]# ll -la
total 36
dr-xr-x---. 3 root root 163 Jan 17 10:08 .
dr-xr-xr-x. 17 root root 224 Jan 16 15:45 ..
-rw-------. 1 root root 1535 Jan 16 15:46 anaconda-ks.cfg
-rw-------. 1 root root 1400 Jan 17 10:02 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
drwxr-----. 3 root root 19 Jan 16 16:10 .pki
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
-rw-------. 1 root root 4202 Jan 17 10:08 .viminfo
暂时想到的解决办法是用 \o
命令重新指定个新文件,但是不知道为什么会发生上述的情况。挖个坑,以后知道深层原理后再跳进来。