質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

10864閲覧

statで確認出来るタイムスタンプの更新基準について疑問。

退会済みユーザー

退会済みユーザー

総合スコア0

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

1クリップ

投稿2016/08/22 05:27

statで確認出来るタイムスタンプの内、「Change」「Modify」について。
サイズと内容に変化の無い(と思われる)処理でも該当タイムスタンプの更新がされた(下記参照)。
そもそもechoからのリダイレクトでは根本的にどのような処理が行われているかと突っ込まれると分からない為、
その辺りの勘違いな気もするが、
下記の処理でどうしてその二種のタイムスタンプが更新されるのかが分からない。

Modifyが変更されてかつChangeが変更されない処理があるのか知りたい。
個人的にはファイルの内容が変わってもサイズが同じなのであれば変わらないと認識していた。
※直接タイムスタンプを更新する以外で


[teratail@rhelx xxx]$ vi test
[teratail@rhelx xxx]$ cat test
dummy
[teratail@rhelx dispo]$ stat test
File: 'test'
Size: 6 Blocks: 8 IO Block: 4096 regular file
Device: xxxxh/xxxxxd Inode: xxxxxx Links: 1
Access: (0664/-rw-rw-r--) Uid: ( xxx/ teratail) Gid: ( xxx/ teratail)
Access: 2016-08-22 11:41:24.220984444 +0900
Modify: 2016-08-22 11:41:18.201982739 +0900
Change: 2016-08-22 11:41:18.201982739 +0900
[teratail@rhelx xxx]$ echo dummy > test
[teratail@rhelx xxx]$ stat test
File: 'test'
Size: 6 Blocks: 8 IO Block: 4096 regular file
Device: xxxxh/xxxxxd Inode: xxxxx Links: 1
Access: (0664/-rw-rw-r--) Uid: ( xxx/ teratail) Gid: ( xxx/ teratail)
Access: 2016-08-22 11:41:24.220984444 +0900
Modify: 2016-08-22 11:41:57.689001273 +0900
Change: 2016-08-22 11:41:57.689001273 +0900


少し前に内容が煮詰まらない内に誤って投稿してしまった為、
そちらのページは削除申請を出してあります。
ご迷惑をおかけして申し訳ありませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

statで確認出来るタイムスタンプの内、「Change」「Modify」について。
サイズと内容に変化の無い(と思われる)処理でも該当タイムスタンプの更新がされた(下記参照)。
そもそもechoからのリダイレクトでは根本的にどのような処理が行われているかと突っ込まれると分からない為、
その辺りの勘違いな気もするが、

リダイレクトは下記のようにファイルが開かれたうえで内容が書き込まれるので、man 2 open によると st_ctimest_mtime (つまり Change と Modify)が更新されるとのことです。

open("test", O_WRONLY|O_CREAT|O_TRUNC, 0666)

Change(st_ctime) は inode の情報の変更日時なので、例えば次のように chmod とかで更新されます。

$ echo dummy > test $ stat test : Modify: 2016-08-22 14:49:36.263621741 +0900 Change: 2016-08-22 14:49:36.263621741 +0900 : $ chmod +x test $ stat test : Modify: 2016-08-22 14:49:36.263621741 +0900 Change: 2016-08-22 14:49:44.305630348 +0900 :

Modifyが変更されてかつChangeが変更されない処理があるのか知りたい。

Modify(st_mtime) はファイルの内容の変更日時ですけど、それ自体が inode の情報なので Modify が変更されれば Change も必ず変更される・・ような気がします。

投稿2016/08/22 06:05

編集2016/08/22 06:06
ngyuki

総合スコア4514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2016/08/22 06:24

> それ自体が inode の情報なので Accessが更新されてもChangeは更新されませんよ。
退会済みユーザー

退会済みユーザー

2016/08/22 06:26

Modify自体がinodeに格納されているのは知りませんでした。 通常行われるような操作では一緒に変わってしまうのは避けられないようですね。 ありがとうございました。
ngyuki

2016/08/22 06:28

> Accessが更新されてもChangeは更新されませんよ。 たしかにそうですね
guest

0

ベストアンサー

Modifyが変更されてかつChangeが変更されない処理があるのか知りたい。

無いです。書き込むと必ずModifyとChangeは変わります。
逆(Changeのみ変更)はあります。chmodとかchownとか。

投稿2016/08/22 06:03

otn

総合スコア84421

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/22 06:11

やはり無いのですかね、しかし飲み込めても納得がいかない程度にしかなりません、 Changeのみはパーミッション変えたり色々やりようがあるのは分かりますが、 何故Modifyを変えるとChangeも一緒に変わるのでしょうか。 理論上は内容(Modify)が変わってもメタ(Change)に影響しない処理はあると思いますし、 今回の私の質問で行った処理もその一部では無いのでしょうか。
otn

2016/08/22 06:37 編集

ファイルを更新すると、inodeの一番大事な情報であるデータブロック番号リストも更新され得るからでは無いかと思います。 echo >> file (1バイト追加書き込み)だと、たいていの場合データブロックは不変だと思いますが、「更新した時にChangeが変わるケースもあるし変わらないケースもある」というのを避けて、必ず変わることになっているんだと思います。
guest

0

Linuxのstatコマンドで表示されるModifyとChangeは
・ Modify 最終更新時刻(ファイルの中身の更新時刻)
・ Change 最終更新時刻(パーミッション、inodeなどの更新時刻)
だそうなのでファイルサイズが変わったか同じかは関係ないようです。

投稿2016/08/22 05:57

HiroshiWatanabe

総合スコア2160

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/22 06:11

Changeが関係するファイルの情報は ・ファイル名 ・ファイルサイズ ・パーミッション ・リンク数 ・オーナー・グループ の5つだと理解しています どちらにせよ、echoからのリダイレクトで変更の可能性があるのは ファイルサイズのみではないでしょうか。 そのファイルサイズに変更が無いようにした場合でもChangeのタイムスタンプが更新される と言う趣旨の質問です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問