😟

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を使用します。

  1. まずjobsコマンドで現在稼働中のプロセスを調べます。
$ jobs
[1]+  Stopped                 vi filename.txt
  1. 次にジョブ番号がわかったのでfgコマンドを使用して一時停止していた状態をフォアグラウンドに戻します。
$ fg %1
  1. このとき一時停止から再開したので保存するか否かの作業をします。
    保存するときは:w,:wq,:wq!、保存せずに終了する場合は:q, :q!などを使用します。

  2. 改めてjobsコマンドでプロセスを調べると該当がないため返り値はなしになります。

$ jobs

所感

swap状態のままだと他の人が編集するときの妨げになる可能性があります。
今回の件でより一層サーバー内でのファイルの適切な扱いを今後も意識していこうと思います。

引用

https://qiita.com/almajiro121212/items/ead10983c22167a47e46
https://qiita.com/tumu1632/items/7df3568fd63aec2b7731
https://eng-entrance.com/linux-command-fg
https://l-study.arcjp.com/lpic/linux-essentials/linux-essentials-online-text/le-8-1/

Discussion