조회수 : 7791
작성일 : 2018-09-06 00:01
""" 맨 밑에 요약이 있습니다. """
1. 개요
vi
를 통해 파일을 수정하는 작업을 하다 보면, 가끔씩 마주치는 문제가 있다.
E325: ATTENTION
Found a swap file by the name ".test.py.swp"
owned by: ubuntu dated: Sat Jul 14 08:51:57 2018
file name: ~ubuntu/test.py
modified: YES
user name: ubuntu host name: -
process ID: 7827
While opening file "test.py"
dated: Thu Jul 26 04:26:51 2018
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 test.py"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file ".test.py.swp"
to avoid this message.
Swap file ".test.py.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
파일을 편집하려고 명령어를 입력하니 이런 화면이 나와 당황했을지도 모르겠지만, 의외로 간단한 문제이다.
이 문제는 왜 발생하고 어떻게 해결하는지 알아보자.
2. 원인
이 경고 메세지를 읽어보면 Found a swap file by the name ".test.py.swp" 라는 문구가 있다.
그렇다. .swp
확장자를 가진 스왑 파일이 발견되었기에 이 문제가 발생하는 것이다.
그럼 이제 이 스왑파일이 왜 발견되었는지 알아보자.
3. 스왑 파일
vi 편집기는 작업을 하는 동안 비정상적인 종료 등을 대비하기 위해 파일을 임시 저장한다.
현재 작업중인 파일에 .swp
을 붙이고 숨김 파일로 만들어 임시 저장하는데, 이것이 스왑 파일이다.
한마디로 스왑 파일은 vi 편집기의 작업 내용을 임시 저장하는 파일이다.
정상적인 방법으로 vi 편집기로 하는 작업을 완료하면 스왑 파일은 자동으로 삭제된다.
네트워크 끊김이나 강제 종료등의 이유로 작업이 끊기면 스왑 파일은 삭제되지 않고 남아있는다.
그리고 그 파일을 수정하려고 할 때 스왑 파일의 존재를 사용자에게 알리는 것이다.
3. 해결 방법
어렵지 않다.
스왑 파일의 존재를 확인한다.
$ ll drwxrwxrwx 3 root root 4096 Sep 5 14:16 ./ drwxrwxrwx 8 root root 4096 Jul 25 13:29 ../ -rw-r--r-- 1 root root 3561 Jul 26 04:26 test.py -rw------- 1 ubuntu ubuntu 16384 Jul 14 08:51 .test.py.swp
스왑 파일은 숨김 파일이기 때문에 ls -all
으로 그 존재를 파악한다.
혹시라도 비정상적인 종료가 아닌 다른 프로세스가 작업중이어서 스왑 파일이 존재할 가능성도 있다.
그런 경우를 대비하기 위해 현재 다른 프로세스가 작업중인지 확인한다.
$ ps -ef | grep test.py
ubuntu 31572 31464 0 14:17 pts/0 00:00:00 grep --color=auto test.py
다른 프로세스가 작업중인 경우엔 아래와 같이 결과가 나온다.
$ ps -ef | grep test.py ubuntu 31659 31464 0 14:19 pts/0 00:00:00 vi test.py ubuntu 31665 31624 0 14:19 pts/3 00:00:00 grep --color=auto test.py
다른 프로세스가 사용 중이 아님도 확인했으면 끝.
vi -r <파일이름>
으로 스왑 파일로 복구한다.
Using swap file ".test.py.swp" Original file "~/test.py" Recovery completed. You should check if everything is OK. (You might want to write out this file under another name and run diff with the original file to check for changes) You may want to delete the .swp file now. Press ENTER or type command to continue
작업을 완료하고 스왑 파일을 삭제한다.
4. 요약
- 원인
- 스왑 파일은 vi 편집기의 임시 파일로써 작업이 끝나면 자동으로 삭제된다.
- 그러나 비정상적으로 작업이 끝나면 스왑 파일은 복구를 위해 남아있다.
- 혹은 다른 프로세스가 현재 작업중이라 스왑 파일이 아직 삭제가 되지 않았을 경우도 있다.
- 해결
- 다른 프로세스가 작업중인지 확인한다.
ps -ef | grep <파일이름>
- 다른 프로세스가 작업중이 아니라면
vi -r <파일이름>
으로 복구한다. - 작업을 완료하고 스왑 파일을 삭제한다.
1등으로 댓글 입력하기