我编辑了一个 PostgreSQL 配置文件:
vi /var/lib/pgsql/10/data/postgresql.conf
我没有成功保存它然后它创建了一个 .swp 文件。
每次我尝试再次编辑此文件时,终端都会停止而没有任何动作。我必须关闭终端。
我试图通过 root 用户停止 PostgreSQL 进程:
sudo systemctl stop postgresql-10
终端再次陷入沉默。不能再接受任何输入。
当我运行时:
sudo ls -la /var/lib/pgsql/10/data/
同一个航站楼停了下来。
当我运行时:
sudo ls -la /var/lib/pgsql/10/
有用。
我不知道data
文件夹里发生了什么。我知道swp文件存在那里。但是现在不能从那条路径上移开。
当我再次尝试编辑 postgresql.conf 文件时,它显示:
E325: ATTENTION
Found a swap file by the name "~/10/data/.postgresql.conf.swp"
owned by: postgres dated: Thu Feb 27 17:57:51 2020
file name: ~postgres/10/data/postgresql.conf
modified: YES
user name: postgres host name: server
process ID: 25896 (still running)
While opening file "/var/lib/pgsql/10/data/postgresql.conf"
dated: Thu Feb 27 17:57:57 2020
NEWER than swap file!
(1) Another program may be editing the same file. If this is the case,
be careful not to end up with two different instances of the same
file when making changes. Quit, or continue with caution.
(2) An edit session for this file crashed.
If this is the case, use ":recover" or "vim -r /var/lib/pgsql/10/data/postgresql.conf"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file "/var/lib/pgsql/10/data/.postgresql.conf.swp"
to avoid this message.
我用这种方式杀死了那个进程号:
sudo kill -9 25896
然后可以列出/var/lib/pgsql/10/data/
路径下的文件。
但是当试图postgresql.conf
再次编辑时,它又停止了!
我关闭终端并登录到服务器,做了这些事情。它们不能被删除。
[user@server ~]$ ps aux | grep postgresql
postgres 12569 0.0 0.0 126476 1920 ? D 09:20 0:00 vi /var/lib/pgsql/10/data/postgresql.conf
postgres 25896 0.0 0.0 126416 2156 ? D Feb27 0:00 vi /var/lib/pgsql/10/data/postgresql.conf
postgres 26080 0.0 0.0 126320 1856 ? D Feb27 0:00 vi /var/lib/pgsql/10/data/postgresql.conf
postgres 26542 0.0 0.0 126476 1916 ? D 13:35 0:00 vi /var/lib/pgsql/10/data/postgresql.conf
postgres 26741 0.0 0.0 126472 1832 ? D 13:37 0:00 vi /var/lib/pgsql/10/data/postgresql.conf
root 26924 0.0 0.0 241036 4552 ? S 13:39 0:00 sudo rm /var/lib/pgsql/10/data/postgresql.conf
root 26926 0.4 0.0 107984 640 ? D 13:39 0:00 rm /var/lib/pgsql/10/data/postgresql.conf
postgres 27027 0.0 0.0 126332 1828 ? D 13:40 0:00 vi /var/lib/pgsql/10/data/postgresql.conf
user 27085 0.0 0.0 112684 1000 pts/14 S+ 13:40 0:00 grep --color=auto postgresql
[user@server ~]$ sudo kill -9 12569
[user@server ~]$ sudo kill -9 25896
[user@server ~]$ sudo kill -9 26080
[user@server ~]$ sudo kill -9 26542
[user@server ~]$ sudo kill -9 26741
[user@server ~]$ sudo kill -9 26924
[user@server ~]$ sudo kill -9 26926
[user@server ~]$ sudo kill -9 27027
[user@server ~]$ ps aux | grep postgresql
postgres 12569 0.0 0.0 126476 1920 ? D 09:20 0:00 vi /var/lib/pgsql/10/data/postgresql.conf
postgres 25896 0.0 0.0 126416 2156 ? D Feb27 0:00 vi /var/lib/pgsql/10/data/postgresql.conf
postgres 26080 0.0 0.0 126320 1856 ? D Feb27 0:00 vi /var/lib/pgsql/10/data/postgresql.conf
postgres 26542 0.0 0.0 126476 1916 ? D 13:35 0:00 vi /var/lib/pgsql/10/data/postgresql.conf
postgres 26741 0.0 0.0 126472 1832 ? D 13:37 0:00 vi /var/lib/pgsql/10/data/postgresql.conf
root 26926 0.4 0.0 107984 640 ? D 13:39 0:00 rm /var/lib/pgsql/10/data/postgresql.conf
postgres 27027 0.0 0.0 126332 1828 ? D 13:40 0:00 vi /var/lib/pgsql/10/data/postgresql.conf
user 27155 0.0 0.0 112684 996 pts/14 S+ 13:41 0:00 grep --color=auto postgresql
什么原因?如何解决?
您的
vi
进程处于“不间断睡眠”(状态D
),这就是您无法杀死它的原因。这通常表示 I/O 系统有问题,例如有网络问题的硬 NFS 挂载。
除了解决根本问题,您无能为力。您可以重新启动机器,但如果它是硬的前台 NFS 挂载,则在挂载文件系统时引导将卡住。
由于 Linux NFS 实现的弱点,许多人认为将 NFS 与 PostgreSQL 一起使用是危险的。