Znaczniki czasu wyjściowego „ls” są różne dla plików w katalogu / tmp w porównaniu z katalogiem domowym

1

Jestem ssh'd na moje uniwersyteckie serwery Linux (RHEL 7). Oto oferta. Ma to związek z „ls” i „starymi” plikami.

Katalog domowy:

$ touch -d '1918-11-11 11:00 GMT' wwi-armistice
$ touch now
$ sleep 1
$ touch now1
$ TZ=UTC0 ls -lt --full-time wwi-armistice now now1
-rw-r--r-- 1 tsai csugrad 0 2054-12-17 17:28:16.000000000 +0000 wwi-armistice
-rw-r--r-- 1 tsai csugrad 0 2018-05-04 22:07:10.743637000 +0000 now1
-rw-r--r-- 1 tsai csugrad 0 2018-05-04 22:06:59.992632000 +0000 now

Katalog tmp:

$ tmp=$(mktemp -d)
$ cd $tmp
$ touch -d '1918-11-11 11:00 GMT' wwi-armistice
$ touch now
$ sleep 1
$ touch now1
$ TZ=UTC0 ls -lt --full-time wwi-armistice now now1
-rw-r--r-- 1 tsai csugrad 0 2018-05-04 23:04:27.031485854 +0000 now1
-rw-r--r-- 1 tsai csugrad 0 2018-05-04 23:04:22.907373125 +0000 now
-rw-r--r-- 1 tsai csugrad 0 1918-11-11 11:00:00.000000000 +0000 wwi-armistice

Znam powód, dla którego pierwsze wyjście pokazuje, że wwi-armistice w 2054 roku ma coś wspólnego z podpisaną 32-bitową do niepodpisanej 32-bitowej konwersji czasu uniksowego. Gdyby ktoś mógł to potwierdzić i wyjaśnić, dlaczego (coś, co nie?), Byłoby świetnie.

Moje drugie, większe pytanie brzmi: dlaczego kiedy robię ten przykład w katalogu tmp, wwi-armistice jest na liście poprawnie?

Pamiętaj, że tak naprawdę nie wiem nic o sieci, więc podstawowe wyjaśnienie byłoby pomocne.

human235
źródło
Domyślnie mktemputworzy katalog, w /tmpktórym może być inny system plików niż pierwszy przypadek.
Patrick Mevzek
czy fakt, że jestem podłączony do sieci, nie ma z tym nic wspólnego?
human235
1
Kiedy używa sshsię dostępu do powłoki logowania w systemie, tak jak robisz, jest to zasadniczo równoważne z zalogowaniem się do systemu lokalnego z jego fizycznej klawiatury, ale bez GUI. W związku z tym, ogólnie rzecz biorąc, nie ma w grze żadnej dodatkowej „sieci”, oprócz sesji TCP, która przekazuje dane wejściowe i wyjściowe terminala między systemem lokalnym a serwerem zdalnym. Czasami, w zależności od zasad administracyjnych, katalog domowy może zostać podłączony z sieciowego serwera plików podczas logowania. Jednak /tmpzazwyczaj jest lokalny system plików, bezpośrednio połączone.
Nevin Williams

Odpowiedzi:

1

Pomocne może być określenie tutaj systemów plików i ich zamontowanych opcji.

mount wyświetli hierarchię systemu plików i opcje czasu montowania.

stat -f --format="%T" $filewypisze typ systemu plików nazwanego pliku. Podejrzewam, że wyniki będą inne dla wersji / tmp niż w (przypuszczalnie) twoim katalogu domowym.

Po poznaniu konkretnego systemu plików i zamontowanych opcji możesz zbadać jego ograniczenia znaczników czasu, ale myślę, że masz na myśli sedno: pierwszy system plików nie ma wystarczającego zakresu liczbowego w alokacji bajtów znaczników czasu, aby reprezentować datę 1918 roku, podczas gdy drugi robi.

Nevin Williams
źródło