Zaktualizowałeś bibliotekę libc (najbardziej podstawową bibliotekę systemową) i teraz nie działa żaden program. Mówiąc ściślej, żaden dynamicznie powiązany program nie działa.
W twoim konkretnym scenariuszu ponowne uruchomienie powinno działać. Teraz zainstalowane libc wymaga nowszego jądra, a jeśli uruchomisz ponownie, powinieneś dostać to nowsze jądro.
Tak długo, jak nadal masz działającą powłokę, często istnieje sposób na odzyskanie, ale może to być trudne, jeśli nie planujesz tego. Jeśli nie masz powłoki, zwykle nie ma innego rozwiązania niż ponowne uruchomienie.
Tutaj możesz nie być w stanie odzyskać bez restartu, ale możesz przynajmniej łatwo dowiedzieć się, jakie jądro działa. Wystarczy użyć sposobu czytania /proc/version
, który nie wymaga zewnętrznego polecenia.
read v </proc/version; echo $v
echo $(</proc/version) # in zsh/bash/ksh
Jeśli nadal masz kopię starej biblioteki libc, możesz z nią uruchamiać programy. Na przykład, jeśli stary libc jest włączony /old/lib
i masz pliki wykonywalne, które działają z tym starym libc w /old/bin
, możesz uruchomić
LD_LIBRARY_PATH=/old/lib /old/lib/ld-linux.so.2 /old/bin/uname
Jeśli masz jakieś statycznie połączone pliki binarne, nadal będą działać. Polecam instalowanie statystycznie połączonych narzędzi systemowych dla tego rodzaju problemów (ale musisz to zrobić, zanim problem zacznie się). Na przykład, Debian / Ubuntu / Mint / ..., zainstalować jedną lub więcej z BusyBox-Static (zbieranie podstawowych narzędzi wiersza poleceń systemu Linux, w tym skorupy), skrzydło (powłoki z kilku dodatkowych poleceń wbudowanych), zsh-Static (tylko powłoka ale z kilkoma wbudowanymi przydatnymi narzędziami).
busybox-static uname
sash -c '-cat /proc/version'
zsh-static -c '</proc/version'