ls belli bir dizini kapatıyor


35

/var/wwwÇalıştırdığımda ls(bazı seçeneklerle veya bazı seçeneklerle) belirli bir klasör ( ) var, komut kilitleniyor ve hiç bitmiyor. İçinde sadece yaklaşık 10-15 dosya ve dizin var /var/www. Çoğunlukla sadece metin dosyaları. İşte bazı araştırmacı bilgi:

[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% /

findiyi çalışıyor. Ayrıca, cd /var/www/enter tuşuna basmadan önce TAB yazıp yazabilirim ve oradaki tüm dosya / dizinlerin başarıyla sekme listesini çıkarır:

[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/

lsAsılı yüzünden terminal oturumlarımı birkaç kez öldürmek zorunda kaldım :

[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 sudo olarak bile süreçler üzerinde herhangi bir etkiye sahip görünmüyor.

Bu sorunu araştırmak için başka ne yapmalıyım? Bugün rastgele olmaya başladı.

GÜNCELLEŞTİRME

dmesgÇoğunlukla çok fazla taktığım ve maksimum takma sayısına ulaşıldığına dair harici bir USB HDD ile ilgili olan şeylerin büyük bir listesi. dmesgBunu görüyorum dibe yakın :

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

Ve ayrıca, strace ls /var/www/bir BUNCH bilgisini tükürür. Burada neyin işe yarayacağını bilmiyorum ... Son satır avuç:

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)                           = ?

Bu soruyu aynı semptomlarla buldum. Anlaşıldığı üzere sshfs aracılığıyla asılmış bir bağlantıya monte edilmiş uzak bir dosya sistemim vardı.
bohdan_trotsenko

2
Peki sshfs ile ne yaparsınız? Bende de aynı problem var.
Menelaos Bakopoulos

2
Belli bir dizin için getdents () 'a takılıyorum. Sorun çözüldükten, xfs_check'i koştum, xfs_repair'i koştum ve hiçbir sorun bulunmamasına rağmen yeniden yerleştirildikten sonra sorun çözüldü.
Leons

Sıkışmış koşuları temizlemek için 'kill -9'u kullanmak zorunda kaldım.
flickerfly

Yanıtlar:


25

Koş strace ls /var/www/ve ne asıldığını görün. Kesinlikle G / Ç'ye bağlı - çıktınızdaki Ddurum budur ps(ve killyardımcı olmadığından, kesintisiz G / Ç sistemlerinden biridir). Çoğu kilitlenme, tanrıya giden bir NFS sunucusuyla ilgilidir, ancak sizin dfdurumunuza göre buradaki durum böyle değil. dmesgDosya sistemleri veya disklerle ilgili herhangi bir şeyin hızlı bir şekilde kontrol edilmesi , tam anlamıyla faydalı olabilir.


2
NFS hala durum böyle olabilir. Eğer lsişaret ettiklerini bulmak için sembolik bağları kaldırmaya çalışan bir şeye aliasse, sembolik bağlantı ölü bir NFS bağlantısına işaret ediyorsa asılı olabilir.
Patrick

Gah, bir fark olmadığını df .ve dolu olmadığını farketmedi df. O zaman kesinlikle bir NFS problemi olabilirdi.
Womble

Burada NFS bağlantısı yok. Hepsi yerel tekli disk. Çok basit bir linux sunucusu. Bir fiziksel sürücü.
Jake Wilson

strace ls /var/www/bir sürü şey basar. Neyi arayacağım? Geçen çizgidir exit_group(0) = ?.
Jake Wilson

2
@ Jakobud strace -vf ls -l /var/wwwBelirli bir dosyada veya dizinde durup durmadığını görmeye çalışın .
ott

3

Aynı semptomlarla ilgili bir sorunum vardı. Bu dizinde, GVFS üzerinden bir SMB bağlantısına bir bağlantı kaldığı ortaya çıktı.

lrwxrwxrwx  1 alex alex        45 Sep 16  2011 foo -> /home/alex/.gvfs/bar on foo/data/

Normalde ls, payın kurulup kurulmadığı anında anında tamamlanır. Ancak bu durumda makineyi askıya aldım ve devam ettirdim ve montaj genel olarak kötü performans gösteriyordu. Hisseyi yeniden ayarlamak sorunu çözdü.


2

Ben de aynı problemi yaşıyordum.

Bir dizin girme o işleri, sekme komple kilitleniyor ve bazı klasörleri altında bulmak, asılı listeleme, gayet do işi. Çok tırmalamak garip.

Server Fault'da bu konuyu okumak beni çözüme giden mantıksal bir yola soktu.

NAS'la ilgili olmak ve NAS genellikle 'automount' olarak koymak, son zamanlarda fstab'ımı bazı usb sürücülerini "otomunt" olarak değiştirdiğimi fark etmemi sağladı, ancak mevcut olmadıklarında normaldi.

Sonra şöyle devam ettim:

  1. Suçlu dizini içeren bölümü çıkarın.
  2. Fstab dosyasını düzenleyin ve tüm automount'ları yorumlanmış veya otomatik olmadan dönüştürün.
  3. Eğer varsa, SystemD'yi yeniden yükleyin: systemctl --system daemon-reload
  4. mount -a

Dizine tekrar girmeyi deneyin ve sorunu çözdüğünüzde bu kadar sıcak bir his edinin.


1

Womble'ın önerileri mükemmel ve ilk önce bunları denemelisiniz, ancak düzeltmezlerse, bir dosya sistemi kendi kendine tutarsız hale geldiğinde (lapa lapa donanım, karanlık çekirdek hataları ve hatta kozmik ışınlar) bu sorunu yaşadım.

Bunun olabileceğini düşünüyorsanız, fsck’i yeniden başlatmaya zorlayabilirsiniz touch /forcefsck; reboot. Fsck in tutarsızlıkları alıp almadığını görmek için önyükleme sırasında ne yazdığını izleyin.

Uyarı : Bu, makineye bağlı tüm dosya sistemlerini keser; ekli bir çok-petabayt disk dizisi de varsa bunu yapmayın, günler sürebilir . fsckdosya sistemlerinin kurulması da veri kaybına neden olabilir; dosya sisteminizde gerçekten tutarsızlıklar varsa, e2fsck dosyayı doğru görünen, ancak düzgün çalışmayan, doğru çalışan ancak beklediğiniz her şeyi içermeyecek şekilde değiştirecektir.


1

Senin de tarif ettiğin aynı semptomları gördüm. Sorunu çözmek için tek yapmam gereken, DNS sunucu adreslerini düzeltmekti. NAS'ı DNS sunucu adreslerinin güncellenmesi gereken yeni bir ağa taşıdık. Adresler statik olarak atandı, ancak QNAP web arayüzünde otomatik olarak ataması için güncelledim.


Yanlış bir DNS girişinin soruna neden neden olacağı konusunda herhangi bir açıklamanız var mı?
RalfFriedl

0

Bunun faydalı olacağını umuyorum , Ubuntu 14.04'te AUFS sürücüsünü kullanarak dockerve docker composebununla birlikte ortaya çıkan yukarıdaki semptomları gördüm. ls <dir>asılıydı ve çağrıya strace ls <dir>asıldığını gösterdi getdents. Çalışan tüm kapları durdurmak, sürücüyü beklendiği gibi kullanmama izin verdi.


-2

Strace ls / var / www / çalıştırmak yanlış olanı size geri verecektir. / Dir için benzer bir sorun vardı ve strace kullanarak, buna neden olan bir NAS dağı olduğunu bulabildim. NAS'ın bağlantısını kaldırmak sorunu çözdü.


3
-1: Bu zaten kabul edilmiş bir cevabın tekrarı.
HBruijn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.