Linux系统下Found a swap file by the name “xxx.swp“问题出现的原因及解决方法

在使用vim编辑文件时遇到ctrl+s导致的屏幕卡住问题,这实际上是Linux下的流控制。之后尝试编辑/etc/profile时,出现E325警告,提示存在swapfile。这表明之前的编辑会话异常关闭,vim检测到有未保存的更改。解决方法是使用`:recover`或`vim-r`恢复,或删除swapfile以继续编辑。如果不在乎旧内容,可以直接删除swapfile解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情景再现

我在一次使用vim编辑文件的时候,习惯性的按了ctrl+s想保存,然后屏幕就卡住了,最后我使直接暴力推出了终端,再次编辑想保存的时候就出了下面的警告提示:

E325: ATTENTION
Found a swap file by the name "/etc/.profile.swp"
          owned by: root   dated: Sat Feb  4 10:57:53 2023
         file name: /etc/profile
          modified: YES
         user name: root   host name: TTK-ALI-ESC-1
        process ID: 26006
While opening file "/etc/profile"
             dated: Sat Feb  4 10:59:20 2023
      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 /etc/profile"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file "/etc/.profile.swp"
    to avoid this message.

Swap file "/etc/.profile.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
问题分析
  1. enter可以进入编辑,编辑完wq保存的时候提示E45: 'readonly' option is set (add ! to override),加上!确实可以强制保存,但是这个问题会一直存在
  2. 然后如果我们认真的看了情景再现中的报错信息,那么会发现给你说的已经清清爽爽了,首先大概的意思是发现了一个和你想要编辑的文件同名的xxx.swp文件,拥有者是root,时间是Sat Feb 4 10:57:53 2023,当你想要编辑这个文件的时候,时间比这个swp文件新,大概有点感觉了,像是个版本控制的东西,冲突了。再翻译一下下面大段的(1)(2)
# 翻译
(1)另一个程序可能正在编辑同一个文件。 如果是这种情况,注意不要以相同的两个不同实例结束进行更改时的文件。 退出,或谨慎继续。
(2)此文件的编辑会话崩溃。
     如果是这种情况,请使用 ":recover""vim -r /etc/profile"
     恢复更改(参见“:help recovery”)。
     如果您已经这样做了,请删除交换文件“/etc/.profile.swp”
     以避免此消息。
  1. 很明显是因为你的编辑会话崩溃了(异常关闭),vim给你在临时文件xxx.swp中保存了上次编辑的内容,然后你再次编辑文件会和上次的编辑产生冲突
解决方法

解决办法在报错信息(2)中已经说的很清楚了使用vim -r /etc/profile打开并编辑,我尝试后发现其实是根据xxx.swp文件来继续完成上次异常退出时的编辑内容。如果你已经这样做了,或者不在乎上次编辑的内容,可以直接删掉xxx.swp文件。
注意

# 先到对应目录下看看是否真的有这个东西,注意这是个隐藏文件,需要加参数-a
ls -a
# 直接删除即可,后面是你自己的那个.xxx.swp文件
rm -rf .profile.swp

再次尝试编辑,问题解决

补充: ctrl+s在linux里是暂停的意思,因此让我产生了一种卡死的错觉,可以用ctrl+q退出这种状态

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值