Поиск самых больших файлов в каталоге - занимает много времени

Вы можете попробовать довольно низкоуровневую утилиту xkill , которая, если задана без аргументов, позволяет вам щелкнуть окно клиента X11, с которым вы хотите закрыть соединение. Возможно, ваш оконный менеджер также предоставляет пункт «убить» в своих меню .


Вы можете настроить ssh для более быстрого обнаружения потерянного соединения, отредактировав ~ / .ssh / config на машине, на которой вы даете команду ssh, чтобы закончить его строками:

# --- all following applies to myserver only
Host myserver
ServerAliveCountMax 3
ServerAliveInterval 5

Use команда Host , чтобы ограничить следующие за ней параметры только хостом myserver . Клиент будет посылать сообщение на сервер каждые 5 секунд, и если 3 ответа не будут отвечать , он закроет соединение.

4
16.05.2018, 07:17
4 ответа

El siguiente código le dará a los principales archivos grandes.

ls -l -R <folder path> | grep -v "^d" | awk '{print $5" "$9}' | sort -nrk1,1 | head -n10 | column -t

si también desea la ruta completa del archivo, pruebe lo siguiente:

find <folder path> -type f -exec du -a {} + | sort -nr | head -10
1
27.01.2020, 20:48

sortno proporciona salida hasta que se hayan ordenado todos los elementos. No puede retroceder en la salida y los elementos nuevos, así es como es. En mis pruebas, GNU sortse activa tan pronto como obtiene suficiente salida para comenzar con sus algoritmos de clasificación, pero detiene la salida hasta que todo se haya ordenado, por lo que tanto sortcomo findestuvieron activos durante el mismo período de tiempo (aunque findestuvo activo antes, y sortpermaneció activo más tarde, hubo superposición ).

La forma más rápida que se me ocurre de usar findes evitar otros comandos y procesamiento de texto tanto como sea posible. Por lo tanto, imprima el tamaño y el nombre usando finden lugar de ejecutar lsvarias veces.Usando GNU find (y asumiendo nombres de archivo sin saltos de línea):

find /opt/app -xdev -type f -printf "%s %p\n" | sort -k1,1n | head

O puede ejecutar múltiples finds en paralelo:

(for d in /opt/app/*/; do find "$d" -xdev -type f -printf "%s %p\n" & done; wait) | sort -k1,1n | head

(esto podría resultar perjudicial debido al intercalado de salida)

Pero no obtendrá ningún resultado hasta que sorthaya hecho su trabajo.

2
27.01.2020, 20:48

no estoy seguro de si eso es lo que necesitas, pero:

ls -lR $(pwd) | awk '
/:$/&&f{s=$0;f=0}
/:$/&&!f{sub(/:$/,"");s=$0;f=9;next}
NF&&f{ print s"/ "$0 }' | egrep -v '^.|^$|^total\ ' | awk '{print $6,$1$NF}' | sort -nk1 | tail -n 10
Salida:
13307 /home/pierdolia/repo/Dell-EMC-Ansible-Modules-for-iDRAC/library/dellemc_configure_raid.py
14029 /home/pierdolia/repo/Dell-EMC-Ansible-Modules-for-iDRAC/library/dellemc_configure_idrac_eventing.py
15199 /home/pierdolia/repo/Dell-EMC-Ansible-Modules-for-iDRAC/library/dellemc_configure_idrac_users.py
20294 /home/pierdolia/repo/Dell-EMC-Ansible-Modules-for-iDRAC/library/dellemc_configure_idrac_network.py
20851 /home/pierdolia/repo/Dell-EMC-Ansible-Modules-for-iDRAC/samples/dellemc_get_firmware_inventory.md
35149 /home/pierdolia/repo/Dell-EMC-Ansible-Modules-for-iDRAC/COPYING.md
49569 /home/pierdolia/repo/Dell-EMC-Ansible-Modules-for-iDRAC/docs/OMAM_1.0.1_Readme.pdf
65486 /home/pierdolia/repo/Dell-EMC-Ansible-Modules-for-iDRAC/samples/dellemc_get_system_inventory.md
89526 /home/pierdolia/repo/Dell-EMC-Ansible-Modules-for-iDRAC/docs/OMAM_1.0.1_Installation_Guide.pdf
438419 /home/pierdolia/repo/Dell-EMC-Ansible-Modules-for-iDRAC/docs/OMAM_1.0.1_Users_Guide.pdf
solo una contra :si el directorio contiene demasiados archivos, que ls no podría manejar, por lo que esto no funcionará.

en mi experiencia personal, he notado que find funciona más que estos pequeños comandos, sí, no es la versión "final", se puede reducir, pero es bastante bueno.

PD. Si elimina el primer AWK, solo mostrará los nombres de archivo:

ls -lR $(pwd) | egrep -v '^.|^$|^total\ ' | sort -nk5 | tail -n 10
-rw-rw-r-- 1 pierdolia pierdolia 13307 May 14 13:22 dellemc_configure_raid.py
-rw-rw-r-- 1 pierdolia pierdolia 14029 May 14 13:22 dellemc_configure_idrac_eventing.py
-rw-rw-r-- 1 pierdolia pierdolia 15199 May 14 13:22 dellemc_configure_idrac_users.py
-rw-rw-r-- 1 pierdolia pierdolia 20294 May 14 13:22 dellemc_configure_idrac_network.py
-rw-rw-r-- 1 pierdolia pierdolia 20851 May 14 13:22 dellemc_get_firmware_inventory.md
-rw-rw-r-- 1 pierdolia pierdolia 35149 May 14 13:22 COPYING.md
-rw-rw-r-- 1 pierdolia pierdolia  49569 May 14 13:22 OMAM_1.0.1_Readme.pdf
-rw-rw-r-- 1 pierdolia pierdolia 65486 May 14 13:22 dellemc_get_system_inventory.md
-rw-rw-r-- 1 pierdolia pierdolia  89526 May 14 13:22 OMAM_1.0.1_Installation_Guide.pdf
-rw-rw-r-- 1 pierdolia pierdolia 438419 May 14 13:22 OMAM_1.0.1_Users_Guide.pdf
o agregará awk adicional:
ls -lR $(pwd) | egrep -v '^.|^$|^total\ ' | sort -nk5 | tail -n 10 | awk '{print $5,$NF}'
13307 dellemc_configure_raid.py
14029 dellemc_configure_idrac_eventing.py
15199 dellemc_configure_idrac_users.py
20294 dellemc_configure_idrac_network.py
20851 dellemc_get_firmware_inventory.md
35149 COPYING.md
49569 OMAM_1.0.1_Readme.pdf
65486 dellemc_get_system_inventory.md
89526 OMAM_1.0.1_Installation_Guide.pdf
438419 OMAM_1.0.1_Users_Guide.pdf 
1
27.01.2020, 20:48

En cualquier caso, deberá leer el contenido de todos los directorios allí y hacer lstat(), lo que implica leer datos de inodo para obtener el tamaño de archivo de todos los archivos antes de poder determinar qué archivo es el más grande.

Y ese disco (o red para sistemas de archivos en red )acceso de E/S, a menos que toda la información ya esté almacenada en caché en la memoria, es la parte que llevará más tiempo.

Hay bastantes cosas innecesarias que su enfoque hace, como convertir ID de usuario/grupo en nombres de usuario/grupo, calcular la representación del calendario de marcas de tiempo, decodificar bytes en caracteres que mantendrán ocupadas sus CPU además de los discos, pero es probable que la E/S de disco siga siendo el cuello de botella.

Puede omitir la mayor parte de ese procesamiento innecesario si usa, por ejemplo, zsh's globs y glob calificadores:

ls -ldS /opt/apps/**/*(.DOL[1,10])

O con (herramientas GNU recientes ):

(export LC_ALL=C # avoid decoding bytes into characters and
                 # complex sorting orders. Note that it may affect
                 # the ls -l output format though.
 find /opt/apps -type f -printf '%s/%p\0' |
   sort -srnz |
   head -z |
   cut -zd/ -f2- |
   xargs -r0 ls -ldS)

Y vea si eso lo hace más rápido.

5
27.01.2020, 20:48

Теги

Похожие вопросы