web-dev-qa-db-ja.com

inotifywaitが名前に「swp」またはgoutputstreamを含むファイルを作成するのはなぜですか?

inotifywaitについて学習しようとしています。インストールしましたinotify-tools

Start-Date: 2019-08-31  18:11:48
Commandline: apt install inotify-tools
Requested-By: dkb (1000)
Install: inotify-tools:AMD64 (3.14-7), libinotifytools0:AMD64 (3.14-7, automatic)
End-Date: 2019-08-31  18:11:58

このスクリプトjl.shを作成して、変更されたファイルを〜/ Desktop/vvtempから〜/ Publicにコピーし、タイムスタンプを付けますコピーされたファイル:

#!/bin/bash
dir_to_watch="/home/dkb/Desktop/vvtemp/"

inotifywait -m -e modify --format '%w%f' "${dir_to_watch}" | while read line
do
s=$line
     newname=/home/dkb/Public/$(date +%Y%m%d%H%M%S)"-${s##*/}"
     cp $line $newname
done

  • test.txtというファイルを作成し、1つのターミナルでスクリプトを開始しました。エラーや警告はありませんでした。

  • 別の端末でtest.txtnanoで開いて編集し、保存して、一度だけ閉じました。

  • 次に、同じファイルをgeditおよびgeanyを使用して編集しました

ターゲットフォルダー内のファイルのリスト〜/ Publicを確認しました。

dkb@Udin:~/Public$ ll
total 36
drwxr-xr-x  2 dkb dkb 4096 Aug 31 18:27 ./
drwxr-xr-x 17 dkb dkb 4096 Aug 31 18:08 ../
-rw-r--r--  1 dkb dkb 1024 Aug 31 18:24 20190831182416-.test.txt.swp
-rw-r--r--  1 dkb dkb 1024 Aug 31 18:24 20190831182419-.test.txt.swp
-rw-r--r--  1 dkb dkb  159 Aug 31 18:24 20190831182441-test.txt
-rw-r--r--  1 dkb dkb  179 Aug 31 18:26 20190831182619-.goutputstream-QN1A7Z
-rw-r--r--  1 dkb dkb  198 Aug 31 18:26 20190831182638-.goutputstream-UDEB7Z
-rw-r--r--  1 dkb dkb  210 Aug 31 18:27 20190831182722-.goutputstream-0X2K7Z
-rw-r--r--  1 dkb dkb  221 Aug 31 18:27 20190831182733-.goutputstream-01D86Z
dkb@Udin:~/Public$ 
  • 最初の3つのファイルはtest.txtnanoの編集と保存に関連しています。最初の2つのファイルには。swpサフィックスが付いています。 3番目のファイルは、目的のタイムスタンプ付きのファイル名を持つ目的のファイルです。

  • 次に、同じファイルをgeditまたはgeanyで編集してみました。これらのエディターは、ファイルを変更して保存するたびに1つずつバックアップファイルを作成しましたが、作成されたバックアップには、意図したコンテンツが含まれていましたが、ファイル名は20190831182733-.goutputstream-01D86Zでした。タイムスタンプは守られているようですが、「ベース名」は守られていません。

私の質問は:

  • nanoを使用すると、なぜ。swpinotifywaitによって2つのファイルが作成されるのですか?

  • geditまたはgeanyを使用すると、意図した名前が生成されないのはなぜですか?

2
DK Bose

/ etc/nanorcまたは〜/ .nanorcまたは$ XDG_CONFIG_HOME/nano/nanorcまたは〜/ .config/nano/nanorcで「ロックの設定」をコメント

## Enable vim-style lock-files.  This is just to let a vim user know you
## are editing a file [s]he is trying to edit and vice versa.  There are
## no plans to implement vim-style undo state in these files.
#set locking

Inotifyをデバッグすると、geditがテストを変更しないことがわかります。

OPEN test
CREATE .goutputstream-F4776Z
OPEN .goutputstream-F4776Z
ATTRIB .goutputstream-F4776Z
CLOSE_WRITE:CLOSE test
MODIFY .goutputstream-F4776Z
MOVED_FROM .goutputstream-F4776Z
MOVED_TO test
CLOSE_WRITE:CLOSE test
OPEN test
ACCESS test
CLOSE_NOWRITE:CLOSE test

ただし、どちらもイベント「close_write」を使用するか、inotifyイベントに従って、バックアップの場所で手順を再作成できます。

2
bac0n