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.
mktemp
utworzy katalog, w/tmp
którym może być inny system plików niż pierwszy przypadek.ssh
się 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/tmp
zazwyczaj jest lokalny system plików, bezpośrednio połączone.Odpowiedzi:
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" $file
wypisze 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.
źródło