swap状態を放置した振り返り
きっかけ
業務でサーバー操作をした際にvi
,view
コマンドやCtrl + Z
, Ctrl + C
の理解不足が原因で他のメンバーに迷惑をかけてしまったため今回メモにして残そうと思いました。
起きたこと
テストを実施するためにサーバー内でファイルの書き換え作業をしたとき、Ctrl + Z
でswap状態のままファイルを放置してしまいました。
swapとは
ファイルを操作していて、なんらかの理由でその状態を保存していないでそのファイル操作から離脱するとswapファイルという編集記録を残したものを作成してくれます。
一見ありがたい機能ですが、仕掛け中のファイルなので通常のような操作ができなくなります。
swapが発生する場合
vi
,view
コマンドでファイルを開き、編集モード状態でCtrl + Z
またはCtrl + C
の操作をした後に再度同じファイルを編集しようとするとswapが出ます。
E325: ATTENTION
Found a swap file by the name ".filename.txt.swp"
コマンド操作におけるCtrl + C, Ctrl + Zについて
Ctrl + C
,Ctrl + Z
それぞれのコマンド操作による動きを調べました。
Ctrl + C
強制的にプロセスを終了するという動きをします。
Ctrl + Z
プロセスは止まったままで、途中から操作を再開できます。止まっているプロセスはjobs
コマンドで確認できます。
$ jobs
[1]+ Stopped vi filename.txt
解決方法
Ctrl + C
の場合
編集内容を保存する必要がない場合、ファイルを消せば解決します。
$ rm filename.txt.swap
Ctrl + Z
の場合
Ctrl + C
と同じくファイルを消せば解決しますが、状態としては「一時停止」のため、「再開」の動きをしてやればいいわけです。
そのためにfg
,jobs
を使用します。
- まず
jobs
コマンドで現在稼働中のプロセスを調べます。
$ jobs
[1]+ Stopped vi filename.txt
- 次にジョブ番号がわかったので
fg
コマンドを使用して一時停止していた状態をフォアグラウンドに戻します。
$ fg %1
-
このとき一時停止から再開したので保存するか否かの作業をします。
保存するときは:w
,:wq
,:wq!
、保存せずに終了する場合は:q
,:q!
などを使用します。 -
改めて
jobs
コマンドでプロセスを調べると該当がないため返り値はなしになります。
$ jobs
所感
swap状態のままだと他の人が編集するときの妨げになる可能性があります。
今回の件でより一層サーバー内でのファイルの適切な扱いを今後も意識していこうと思います。
引用
Discussion