Istnieje szczególny katalog ( /var/www
), który kiedy uruchamiam ls
(z pewnymi opcjami lub bez), polecenie zawiesza się i nigdy się nie kończy. Jest tam tylko około 10-15 plików i katalogów /var/www
. Głównie tylko pliki tekstowe. Oto kilka informacji dochodzeniowych:
[me@server www]$ df .
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_dev-lv_root
50G 19G 29G 40% /
[me@server www]$ df -i .
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg_dev-lv_root
3.2M 435K 2.8M 14% /
find
działa w porządku. Mogę również wpisać cd /var/www/
i nacisnąć TAB przed naciśnięciem Enter, a to z powodzeniem zakończy tabulację listę wszystkich plików / katalogów:
[me@server www]$ cd /var/www/
cgi-bin/ create_vhost.sh html/ manual/ phpMyAdmin/ scripts/ usage/
conf/ error/ icons/ mediawiki/ rackspace sqlbuddy/ vhosts/
[me@server www]$ cd /var/www/
Kilka razy musiałem zabijać sesje terminalowe z powodu ls
zawieszenia:
[me@server ~]$ ps | grep ls
gdm 6215 0.0 0.0 488152 2488 ? S<sl Jan18 0:00 /usr/bin/pulseaudio --start --log-target=syslog
root 23269 0.0 0.0 117724 1088 ? D 18:24 0:00 ls -Fh --color=always -l
root 23477 0.0 0.0 117724 1088 ? D 18:34 0:00 ls -Fh --color=always -l
root 23579 0.0 0.0 115592 820 ? D 18:36 0:00 ls -Fh --color=always
root 23634 0.0 0.0 115592 816 ? D 18:38 0:00 ls -Fh --color=always
root 23740 0.0 0.0 117724 1088 ? D 18:40 0:00 ls -Fh --color=always -l
me 23770 0.0 0.0 103156 816 pts/6 S+ 18:41 0:00 grep ls
kill
nie wydaje się mieć żadnego wpływu na procesy, nawet jak sudo.
Co jeszcze powinienem zrobić, aby zbadać ten problem? Po prostu zaczęło się dzisiaj dziać losowo.
AKTUALIZACJA
dmesg
to duża lista rzeczy, związanych głównie z zewnętrznym dyskiem twardym USB, który montowałem zbyt wiele razy i osiągnięto maksymalną liczbę montowań, ale myślę, że jest to niezwiązany problem. U dołu dmesg
widzę to:
INFO: task ls:23579 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
ls D ffff88041fc230c0 0 23579 23505 0x00000080
ffff8801688a1bb8 0000000000000086 0000000000000000 ffffffff8119d279
ffff880406d0ea20 ffff88007e2c2268 ffff880071fe80c8 00000003ae82967a
ffff880407169ad8 ffff8801688a1fd8 0000000000010518 ffff880407169ad8
Call Trace:
[<ffffffff8119d279>] ? __find_get_block+0xa9/0x200
[<ffffffff814c97ae>] __mutex_lock_slowpath+0x13e/0x180
[<ffffffff814c964b>] mutex_lock+0x2b/0x50
[<ffffffff8117a4d3>] do_lookup+0xd3/0x220
[<ffffffff8117b145>] __link_path_walk+0x6f5/0x1040
[<ffffffff8117a47d>] ? do_lookup+0x7d/0x220
[<ffffffff8117bd1a>] path_walk+0x6a/0xe0
[<ffffffff8117beeb>] do_path_lookup+0x5b/0xa0
[<ffffffff8117cb57>] user_path_at+0x57/0xa0
[<ffffffff81178986>] ? generic_readlink+0x76/0xc0
[<ffffffff8117cb62>] ? user_path_at+0x62/0xa0
[<ffffffff81171d3c>] vfs_fstatat+0x3c/0x80
[<ffffffff81258ae5>] ? _atomic_dec_and_lock+0x55/0x80
[<ffffffff81171eab>] vfs_stat+0x1b/0x20
[<ffffffff81171ed4>] sys_newstat+0x24/0x50
[<ffffffff810d40a2>] ? audit_syscall_entry+0x272/0x2a0
[<ffffffff81013172>] system_call_fastpath+0x16/0x1b
A także strace ls /var/www/
wyrzuca całą WIELKĄ informację. Nie wiem, co tu jest przydatne ... Ostatnia garść wierszy:
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCGWINSZ, {ws_row=68, ws_col=145, ws_xpixel=0, ws_ypixel=0}) = 0
stat("/var/www/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/var/www/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
fcntl(3, F_GETFD) = 0x1 (flags FD_CLOEXEC)
getdents(3, /* 16 entries */, 32768) = 488
getdents(3, /* 0 entries */, 32768) = 0
close(3) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 9), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3093b18000
write(1, "cgi-bin conf create_vhost.sh\te"..., 125cgi-bin conf create_vhost.sh error html icons manual mediawiki phpMyAdmin rackspace scripts sqlbuddy usage vhosts
) = 125
close(1) = 0
munmap(0x7f3093b18000, 4096) = 0
close(2) = 0
exit_group(0) = ?
Odpowiedzi:
Uruchom
strace ls /var/www/
i zobacz, na czym polega. Z pewnością jest zawieszony na I / O - to właśnie oznaczaD
stan na twoimps
wyjściu (a ponieważkill
to nie pomaga, jest to jeden z nieprzerwanych wywołań systemowych I / O). Większość zawieszeń dotyczy serwera NFS, który poszedł do boga, ale w oparciu o twojedf
nie ma to miejsca w tym przypadku. Nadmesg
wszelki wypadek warto sprawdzić wszystko, co dotyczy systemów plików lub dysków.źródło
ls
jest aliasowany do czegoś, co próbuje odsunąć dowiązania symboliczne, aby znaleźć to, na co wskazują, może się zawiesić, jeśli dowiązanie symboliczne wskazuje na martwe mocowanie NFS.df .
i nie było pełnedf
. Może to być z pewnością problem NFS.strace ls /var/www/
drukuje mnóstwo rzeczy. Czego szukam Ostatnia linia toexit_group(0) = ?
.strace -vf ls -l /var/www
sprawdzić, czy zatrzymuje się na określonym pliku lub reż.Miałem problem z tymi samymi objawami. Okazało się, że miałem w tym katalogu dowiązanie symboliczne do montowania SMB przez GVFS.
Normalnie
ls
kończy się natychmiast, niezależnie od tego, czy udział został zamontowany, czy nie. Ale w tym przypadku zawiesiłem i wznowiłem maszynę, a mocowanie ogólnie słabo działało. Ponowne zamontowanie udziału rozwiązało problem.źródło
Miałem ten sam problem.
Wprowadzanie katalog jest w porządku, wymieniając to wisi, znaleźć prace, zakładka kompletne zawiesza się, a niektóre foldery pod zrobienia pracę. Bardzo drapieżnie dziwnie.
Czytanie tego wątku na temat błędu serwera poprowadziło mnie na ścieżce logicznej w kierunku rozwiązania.
Ma to związek z NAS, a NAS powszechnie określany jako „automount” uświadomił mi, że ostatnio zmieniłem mój fstab na „automount” niektóre dyski USB, jeśli były obecne, ale działały normalnie, gdy nie były.
Następnie postępowałem następująco:
Spróbuj ponownie wejść do katalogu i poczuj ciepłe wrażenie, że problem został rozwiązany.
źródło
Sugestie Womble są doskonałe i powinieneś je najpierw wypróbować, ale jeśli nie naprawią tego, miałem ten problem, gdy system plików stał się niespójny (przez niestabilny sprzęt, niejasne błędy jądra, a nawet promienie kosmiczne).
Jeśli uważasz, że tak może być, możesz wymusić uruchomienie fsck przy ponownym uruchomieniu komputera
touch /forcefsck; reboot
. Zobacz, co mówi podczas uruchamiania, aby sprawdzić, czy fsck wykryje niespójności.Ostrzeżenie : spowoduje to sprawdzenie wszystkich systemów plików podłączonych do komputera; nie rób tego, jeśli masz również dołączoną macierz dyskową zawierającą wiele petabajtów, może to potrwać kilka dni .
fsck
ing systemy plików mogą również prowadzić do utraty danych; jeśli naprawdę masz niespójności w swoim systemie plików, e2fsck zmieni go z takiego, który wygląda dobrze, ale nie całkiem działa, na taki, który działa poprawnie, ale może nie zawierać wszystkiego, czego oczekujesz.źródło
Miałem te same dokładne objawy, które opisałeś. Aby rozwiązać problem, wystarczyło naprawić adresy serwerów DNS. Przenieśliśmy NAS do nowej sieci, która wymagała aktualizacji adresów serwerów DNS. Adresy zostały przypisane statycznie, ale w interfejsie internetowym QNAP zaktualizowałem go, aby automatycznie przydzielał.
źródło
W nadziei, że będzie to pomocne, miałem powyższe objawy spowodowane używaniem
docker
idocker compose
ze sterownikiem AUFS w Ubuntu 14.04.ls <dir>
wisiał istrace ls <dir>
pokazał, że wisi nagetdents
wezwaniu. Zatrzymanie wszystkich działających kontenerów pozwoliło mi zacząć korzystać z napędu zgodnie z oczekiwaniami.źródło
Uruchamianie strace ls / var / www / da ci znać, co jest nie tak. Miałem podobny problem z / dir i używając strace mogłem go zlokalizować, to spowodowało to zamontowanie NAS. Odmontowanie tego serwera NAS rozwiązało problem.
źródło