助け合いフォーラム

LPIC

LPIC Lv1-101(Ver5.0)
問題ID : 3330
問題を開く
「original」というファイルに対して、コマンド発行後、ファイルのアクセス時刻のみが更新されるものはどれか。

正解

file original

解説

「file」コマンドではファイルの種類が表示されます。fileコマンドを使用すると、ファイルの最終変更時刻(mtime、ctime)は更新されませんが、最終アクセス時刻(atime)は更新されます。

したがって正解は
・file original
です。

以下は実行例です。
※ファイルの詳細情報を表示するstatコマンドでファイルのタイムスタンプを確認できます。


その他の選択肢については以下のとおりです。

・echo "original" > original
「original」という文字列が「original」ファイルにリダイレクトされ、ファイルの最終変更時刻(mtime、ctime)が更新されるので、誤りです。

・ls -l original > original
「ls -l」コマンドの結果が「original」ファイルにリダイレクトされ、ファイルの最終変更時刻(mtime、ctime)が更新されるので、誤りです。

・touch original
「touch」コマンドはファイルの最終アクセス時刻(atime)のみでなくファイルの最終変更時刻(mtime、ctime)も更新するので、誤りです。

上に戻る

fileコマンドでatimeが更新されない

公開日 2023/07/27

この問題で、fileコマンドで対象のファイルを処理すると
atimeが更新されるとされていますが、私の環境
(RHELクローンのRocky Linux8.8)では、実行例と
同じ操作をしても、atimeが更新されませんでした。
操作は、rootユーザが実行しました。

この原因/理由について、推測は可能でしょうか。
もし、なにか思いつく方がおられましたら、可能性のある
原因/理由を教えて下さい。

(私の環境での実行例と同じ操作のログ)
[root@rocky01 study]# stat 3705.txt
File: 3705.txt
Size: 53 Blocks: 8 IO Block: 4096 通常ファイル
Device: fd00h/64768d Inode: 34304122 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2023-07-26 22:35:17.077198384 +0900
Modify: 2023-07-24 22:39:14.256882058 +0900
Change: 2023-07-24 22:39:14.256882058 +0900
Birth: 2023-07-24 22:39:14.256882058 +0900
[root@rocky01 study]#
[root@rocky01 study]# date
2023年 7月 27日 木曜日 15:15:05 JST
[root@rocky01 study]#
[root@rocky01 study]# file 3705.txt
3705.txt: ASCII text
[root@rocky01 study]#
[root@rocky01 study]# stat 3705.txt
File: 3705.txt
Size: 53 Blocks: 8 IO Block: 4096 通常ファイル
Device: fd00h/64768d Inode: 34304122 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2023-07-26 22:35:17.077198384 +0900 <-更新されない!
Modify: 2023-07-24 22:39:14.256882058 +0900
Change: 2023-07-24 22:39:14.256882058 +0900
Birth: 2023-07-24 22:39:14.256882058 +0900
[root@rocky01 study]#

2023/07/27 19:24

mount 時にrelatime オプションやnoatime オプションが指定されているためではないでしょうか。
mount | grep relatime コマンドなどで確認してみてください。

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/power_management_guide/relatime


コメント

k kz5835

2023/07/27 22:36

tnishita2様 情報のご提供、誠に有難うございます。 質問対象のatimeが更新されないファイルのディレクトリは /root/study です。 mount | grep relatimeでは、以下の様に、多数の行が出力されましたが /root/studyについての行はありませんでした。 [root@rocky01 study]# mount | grep relatime sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) ---- 省略 ---- mount | grep noatime、mount | grep norelatimeは、なにも出力 されませんでした。 [root@rocky01 study]# mount | grep norelatime [root@rocky01 study]# [root@rocky01 study]# mount | grep noatime [root@rocky01 study]# ご紹介頂いたurlに以下の記述がありました。 「デフォルトでは、relatime が有効な状態ですべてのファイルシステムがマウントされるようになります。」 上記から、/root(およびその配下のディレクトリ) に対しては、デフォルト でrelatimeが有効化されているんおで、mount で、/root/xxxについての情報 が出力されないのかと推測しましたが、その様な理解で正しいでしょうか。 ご存じであれば、教えて下さい。 宜しくお願いします。

t tnishita2

2023/07/28 18:13

> 質問対象のatimeが更新されないファイルのディレクトリは /root/study です。 > mount | grep relatimeでは、以下の様に、多数の行が出力されましたが > /root/studyについての行はありませんでした。 言葉足らずでしたが、/root/study の行がなかったら/root の行を見ます。/root の行がなかったら/ (ルートパーティション)の行を見ます。 私もRocky Linux 8.8 相当の環境で試してみました。通常/root を別パーティションにはしないので、/ の行を `mount | grep 'on / '` で探すと、relatime オプションが指定されていることが確認できました。kz5835さんの環境でも同様だと思います。 relatime オプションの動作についてはarashi1977 さんとのやりとりのほうですでほぼ解決済みのようですが、初回のfile コマンドではatime が更新されましたが、その後stat コマンドとfile コマンドを繰り返しても(relatime オプションの効果で)atime は更新されませんでした。arashi1977 さんの環境でも、2回目以降のfile コマンドではatime が更新されないと思います。

k kz5835

2023/07/28 23:03

tnishita2様 貴重な情報のご提供、誠に有難うございます。 mount | grep 'on /' としてみると、多数の行がでてきたのですが /rootに関係しそうな行に /dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota) がありました。上記でrelatimeが見えていますが、上記が / で、relatimeが効いていることを示すでしょうか。 >arashi1977 さんの環境でも、2回目以降のfile コマンドではatime が更新されないと思います。 についてですが、arashi1977様のログでは [root@localhost study]# stat 3705.txt -- 省略 -- Access: 2023-07-27 10:31:17.694303902 -0400 -- 省略 -- [root@localhost study]# file 3705.txt 3705.txt: ASCII text, with no line terminators [root@localhost study]# stat 3705.txt -- 省略 -- Access: 2023-07-27 10:31:53.690778999 -0400 ←変わっている となっており、atimeが36秒後に更新できているので relatimeが効いておらず、次のfileの実行でも、atimeは 更新される様に見えます。 宜しくお願いします。

t tnishita2

2023/07/28 23:57

> mount | grep 'on /' としてみると、多数の行がでてきたのですが 私の提示したコマンドをよく見ていただくと、最後のスラッシュとシングルクォートの間に半角スペースを入れています。 # mount | grep 'on / ' こうすることで「on /boot」等の行を除外して、「on / 」の行だけを表示できます。 ※あるいはarashi1977さんのように、findmnt コマンドで確認してもいいです。 arashi1977さんのログについては、 > cat /dev/urandom | base64 | head -c 53 > 3705.txt のようなコマンドで3705.txt ファイルを作ることころから始めていますが、私も実際やってみて経験したのですが、こういうふうに作成したファイルに対しfile コマンドを実行すると、最初の1回目だけはatime が更新されました。よければ、ここまで複雑なコマンドではなく`echo 1 > 3705.txt` くらいでいいのでkz5835さんもファイルを作るところからやってみてください。最初の1回目のfile コマンドだけはatime が更新されると思います。

k kz5835

2023/07/29 00:34

tnishita2様 >私の提示したコマンドをよく見ていただくと、最後のスラッシュとシングルクォートの間に半角スペースを入れています。 失礼いたしました。実行してみると、以下で、relatimeが見えました。 [root@rocky01 study]# mount | grep 'on / ' /dev/mapper/rl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota) > 最初の1回目のfile コマンドだけはatime が更新されると思います。 まさにご指摘の通りでした。以下の様になりました。 root@rocky01 study]# echo 1 > file-test.txt [root@rocky01 study]# stat file-test.txt File: file-test.txt Size: 2 Blocks: 8 IO Block: 4096 通常ファイル Device: fd00h/64768d Inode: 35334998 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2023-07-29 00:30:05.338263018 +0900 Modify: 2023-07-29 00:30:05.338263018 +0900 Change: 2023-07-29 00:30:05.338263018 +0900 Birth: 2023-07-29 00:30:05.338263018 +0900 [root@rocky01 study]# [root@rocky01 study]# file file-test.txt file-test.txt: ASCII text [root@rocky01 study]# [root@rocky01 study]# stat file-test.txt File: file-test.txt Size: 2 Blocks: 8 IO Block: 4096 通常ファイル Device: fd00h/64768d Inode: 35334998 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2023-07-29 00:30:19.219273129 +0900 <-更新された Modify: 2023-07-29 00:30:05.338263018 +0900 Change: 2023-07-29 00:30:05.338263018 +0900 Birth: 2023-07-29 00:30:05.338263018 +0900 [root@rocky01 study]# [root@rocky01 study]# file file-test.txt file-test.txt: ASCII text [root@rocky01 study]# [root@rocky01 study]# stat file-test.txt File: file-test.txt Size: 2 Blocks: 8 IO Block: 4096 通常ファイル Device: fd00h/64768d Inode: 35334998 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2023-07-29 00:30:19.219273129 +0900 <-更新されない Modify: 2023-07-29 00:30:05.338263018 +0900 Change: 2023-07-29 00:30:05.338263018 +0900 Birth: 2023-07-29 00:30:05.338263018 +0900 [root@rocky01 study]# [root@rocky01 study]# file file-test.txt file-test.txt: ASCII text [root@rocky01 study]# [root@rocky01 study]# stat file-test.txt File: file-test.txt Size: 2 Blocks: 8 IO Block: 4096 通常ファイル Device: fd00h/64768d Inode: 35334998 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2023-07-29 00:30:19.219273129 +0900 <-更新されない Modify: 2023-07-29 00:30:05.338263018 +0900 Change: 2023-07-29 00:30:05.338263018 +0900 Birth: 2023-07-29 00:30:05.338263018 +0900 [root@rocky01 study]# このたびは、詳細に解説頂き、誠に有難うございました。 おかげさまで、疑問点が全て理解できました。 宜しくお願いいたします。

この返信に対して
コメントを記入できます

2023/07/27 23:35

うーん、私のところではちゃんと変わりましたが…

[root@localhost ~]# cat /etc/rocky-release
Rocky Linux release 8.8 (Green Obsidian)
[root@localhost ~]# mkdir study
[root@localhost ~]# cd study/
[root@localhost study]# cat /dev/urandom | base64 | head -c 53 > 3705.txt
[root@localhost study]# stat 3705.txt
  File: 3705.txt
  Size: 53        	Blocks: 8          IO Block: 4096   通常ファイル
Device: fd00h/64768d	Inode: 101011101   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2023-07-27 10:31:17.694303902 -0400
Modify: 2023-07-27 10:31:17.699303852 -0400
Change: 2023-07-27 10:31:17.699303852 -0400
 Birth: 2023-07-27 10:31:17.694303902 -0400
[root@localhost study]# file 3705.txt
3705.txt: ASCII text, with no line terminators
[root@localhost study]# stat 3705.txt
  File: 3705.txt
  Size: 53        	Blocks: 8          IO Block: 4096   通常ファイル
Device: fd00h/64768d	Inode: 101011101   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2023-07-27 10:31:53.690778999 -0400 ←変わっている
Modify: 2023-07-27 10:31:17.699303852 -0400
Change: 2023-07-27 10:31:17.699303852 -0400
 Birth: 2023-07-27 10:31:17.694303902 -0400

元々の3705.txtをどう作ったかとかも含めて、全体的な実施手順を開示していただくことは可能でしょうか?


コメント

k kz5835

2023/07/28 00:06

arashi1977様 ご指摘、有難うございます。 >元々の3705.txtをどう作ったかとかも含めて、全体的な実施手順を開示していただくことは可能でしょうか? Rocy Linuxはwindows11 pro上のVMware Workstation 17 Player (17.0.2 build-21581411)にインストールしています。 完全な初心者のため、とくにデフォルトから変えることなく Rocky Linuxをインストールし、rootのhome directoryだった /rootの下で、vi 3705.txtを開いて内容を記入し、:wq!で保存しました。 その後、study directoryを作り、mvで、3705.txtを移動しました。 全て、ユーザはrootで操作しました。 tnishita2様よりご紹介頂いたurlに 「このオプションを有効にすると、ファイルが変更された、つまり atime が更新された (mtime) 場合、またはファイルが最後にアクセスされてから一定以上の時間 (デフォルトでは 1 日) が経過している場合に限り、atime データがディスクに書き込まれます。」 の記載があることに気づき、ちょうど、こちらの3705.txtのatime から24時間余りを経過したことに気づきましたので、同じ操作を してみたところ、atimeが変更されました。 (modify,changeは、それ以前に、他の操作で更新しています。) [root@rocky01 study]# stat 3705.txt File: 3705.txt Size: 53 Blocks: 8 IO Block: 4096 通常ファイル Device: fd00h/64768d Inode: 34304122 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2023-07-26 22:35:17.077198384 +0900 Modify: 2023-07-27 22:15:28.328395363 +0900 Change: 2023-07-27 22:15:28.328395363 +0900 Birth: 2023-07-24 22:39:14.256882058 +0900 [root@rocky01 study]# [root@rocky01 study]# date 2023年 7月 27日 木曜日 22:47:09 JST [root@rocky01 study]# [root@rocky01 study]# file 3705.txt 3705.txt: ASCII text [root@rocky01 study]# [root@rocky01 study]# stat 3705.txt File: 3705.txt Size: 53 Blocks: 8 IO Block: 4096 通常ファイル Device: fd00h/64768d Inode: 34304122 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2023-07-27 22:47:26.485396585 +0900 Modify: 2023-07-27 22:15:28.328395363 +0900 Change: 2023-07-27 22:15:28.328395363 +0900 Birth: 2023-07-24 22:39:14.256882058 +0900 [root@rocky01 study]# このあとの file 3705.txt では、また、atimeが更新されない 状態に戻りましたので、私の環境では、tnishita2様にご指摘 頂いた relatime が効いているということの様に思われます。 とすると、私の環境とarashi1977様環境で 同じrocky linux8.8で relatime が効いている/効いていないの 違いが現れている様に思われたのですが、この点について なにかお気づきになることは、ございますでしょうか。 もしありましたら、教えて下さい。

a arashi1977

2023/07/28 18:12

はてさて、私と同じ環境ではあると思うのですが、同じ結果になるか確認いただいても良いですか? ``` [root@localhost ~]# cd study/ [root@localhost study]# pwd /root/study [root@localhost study]# findmnt -T $(pwd) TARGET SOURCE FSTYPE OPTIONS / /dev/mapper/rl-root xfs rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota ```

k kz5835

2023/07/28 22:54

arashi1977様 アドバイス有難うございます。 結果は以下で、同じ表示になっている様に見えます。 [root@rocky01 ~]# cd study/ [root@rocky01 study]# pwd /root/study [root@rocky01 study]# findmnt -T $(pwd) TARGET SOURCE FSTYPE OPTIONS / /dev/mapper/rl-root xfs rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota [root@rocky01 study]# 上記で、relatimeの文字が見えますが、これは /root/studyで、relatimeが効いているということになるので しょうか。 ご存じの点について、教えて下さい。 宜しくお願いします。

k kz5835

2023/07/29 00:39

arashi1977様 この質問の上記のtnishita2様のご指摘により、relatimeが 効いていても、ファイル作成後の最初のfileコマンド実行時のみ atimeが更新され、2回目以降が(24h以内には)更新されなくなる ことがわかりました。 上記を踏まえて、arashi1977様より頂きました情報を確認すると ファイル作成後の最初のfileコマンド実行時の情報の様でしたので 私の環境との違いがあったわけではなく、fileコマンドが 1回目の実行か、2回目以降の実行かで差がでていたということ だった様です。 宜しくお願いします。

a arashi1977

2023/07/29 08:27

解決されたようでよかったです。 ご認識の通り、1回目かどうかで変わってくるんですね。なので「全体的な実施手順を開示」していただきたいなというところでした。 そのほかの点についてはすでにtnishita2さんとのやり取りで理解、納得されてるみたいなので私からは特にコメントすることはありません。

k kz5835

2023/07/29 11:46

arashi1977様 ご指摘、有難うございます。 >ご認識の通り、1回目かどうかで変わってくるんですね。なので「全体的な実施手順を開示」していただきたいなというところでした。 承知いたしました。私の方から、ファイル作成直後に発見した問題では ないことをお伝えできておらず、大変失礼いたしました。 このたびは、貴重な情報をご提供頂き、有難うございました。 おかげ様で、本件の状況を理解することができました。 宜しくお願いします。

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?