Że strings
zachowuje się dziwnie dowodzenia, najwyraźniej nie przestać pisać do pliku, nawet jeśli napęd zabraknie miejsca. A może coś mi brakuje?
Uruchamiam następujące:
# strings /dev/urandom > random.txt
działało to dalej i nie przestało działać nawet po zapełnieniu dysku (zwykła pamięć flash USB).
potem, aby być szybszym, stworzyłem ramdysk i spróbowałem ponownie to samo polecenie. też się nie zatrzymało.
Rozumiem, że urandom
nie jest to zwykły plik, a także strings
wyniki są przekierowywane, jednak w obu przypadkach powyżej cat
polecenie zgłosiło błąd, gdy nie było już miejsca.
# cat /dev/urandom > random.txt
cat: write error: No space left on device
- Czy to normalne zachowanie ciągów? Jeśli tak, dlaczego?
- Gdzie są zapisywane dane, gdy nie ma już miejsca?
strace strings /dev/urandom > /dev/full
strings
implementacji z binutils GNU. Miałem na myślistrace
polecenie.Odpowiedzi:
Jeśli GNU
cat
nie może zapisać tego, co przeczytał, zakończy działanie z błędem :strings
Z drugiej strony GNU nie dba o to, czy udało mu się pomyślnie napisać:Więc wszystkie te zapisy kończą się niepowodzeniem, ale
strings
trwają wesoło, aż osiągną koniec danych wejściowych, co nigdy nie nastąpi.źródło
strings
.