Список из самых больших открытых файлов
Список из самых больших файлов (включая размер), открытых в данный момент
lsof -X | sort -k7 -n | awk '{print $9}' | uniq | tail | xargs -n1 ls -lh | grep -v "^d"
Список из самых больших файлов (включая размер), открытых в данный момент
lsof -X | sort -k7 -n | awk '{print $9}' | uniq | tail | xargs -n1 ls -lh | grep -v "^d"
#include <stdio.h> int main(){ char mdata[] = {0x48, 0x61, 0x70, 0x70, 0x79, 0x20, 0x6e, 0x65, 0x77, 0x20, 0, 0, 0, 0, 0x20, 0x79, 0x65, 0x61, 0x72, 0x21, 0xa}; int i, y, c; y = 2 * (10 * 10 * 10 + 3 * 3); for (i = 0; i < 4; i++){ c = y % 0xa; mdata[0xd - i] = 0x30 + c; y -= c; y /= 0xa; } for (i = 0; i < 21; i++) putchar(mdata[i]); return 0; }
איך אַרומנעמען און גראַטולירן איר אַלע. אַזוי פילע יאָרן צעלאָזן אונדזער נערוועס צו יעדער אנדערער, לאָזן אונדז פאָרזעצן דעם שפּאַס טעטיקייט. גוט גליק צו איר אַלע און געזונט.
新年快乐!万事如意!
Стандартные консольные утилиты Linux не показывают количество памяти процесса, выгруженной в файл подкачки (swapped out).
Но есть достаточно простой способ узнать это. Всё, что для этого нужно — взять идентификатор процесса (PID) и просмотреть файл smaps, относящийся к этому процессу:
sudo cat /proc/<pid процесса>/smaps | grep Swap
Эта команда выдаст кучу строк, относящихся к разным сегментам памяти. Чтобы просуммировать всё, можно воспользоваться командой awk:
sudo cat /proc/<pid процесса>/smaps | grep Swap | awk '{ SUM += $2 } END { print SUM }'
Выведенное число — размер использованного свопа в килобайтах.
du -sk ./* | sort -nr | awk 'BEGIN{ pref[1]="K"; pref[2]="M"; pref[3]="G";} { total = total + $1; x = $1; y = 1; while( x > 1024 ) { x = (x + 1023)/1024; y++; } printf("%g%s\t%s\n",int(x*10)/10,pref[y],$2); } END { y = 1; while( total > 1024 ) { total = (total + 1023)/1024; y++; } printf("Total: %g%s\n",int(total*10)/10,pref[y]); }'
Меряет только реальные файлы и директории, симлинки будут нулевого размера.
Так же могут быть полезны пакеты типа ncdu или pydf...
(* точнее — по SFTP, надстройкой над протоколом SSH)
Требуется установленный пакет sshfs. В общем виде команда выглядит так:
sshfs user@remotehost:/path/to/directory /local/path -p port
Показать
Реализация:
sudo modprobe fuse mkdir ~/music sshfs insect@192.168.1.234:/home/insect/music ~/music
Размонтировать так:
sudo umount ~/music
или (для ранних версий) так:
sudo fusermount -u ~/music
dd if=/dev/zero of=./big_file bs=1024k seek=400000 count=0
Данная команда создаёт файл размером 40 гигабайт.
Для работы скрипта требуются установленные в системе пакеты dialog и screen.
Показать
В конец ~/.bashrc дописать:
if [ "$SSH_TTY" ]; then if [ ! "$STY" ] ; then CHOICE=`~/SCREEN/choose` if [ "$CHOICE" ]; then exec screen -dr $CHOICE; fi fi fi
При логине по ssh-протоколу откроется меню с выбором работы в существующих сессиях screen’а или возможностью остаться в консоли ssh-клиента. Если запущенных сессий screen’а нет — меню не откроется.
Содержимое файла ~/SCREEN/choose:
#!/usr/bin/env bash i=0 declare -ax SCREENS SOCKETS=`find /var/run/screen/S-$(whoami) -type p 2>/dev/null` if [ -z "$SOCKETS" ]; then exit 0; fi for S in $SOCKETS; do ((i=$i+1)); S=`basename $S`; SCREENS[$i]=`screen -ls | grep $S | perl -e '$s=<>; $s =~ s/^\\t(.*)\s/$1/; $s =~ s/\s/_/g; print $s'`; done MENU="" for ((j=1; j<=$i; j=$j+1)); do MENU="$MENU $j ${SCREENS[$j]}"; done MENU="$MENU $j Отменить" WHICH=`dialog --stdout --menu Select: 0 0 0 $MENU` if [ "$WHICH" != "$j" ]; then echo ${SCREENS[$WHICH]} | sed -e 's/_(.*)$//'; fi
На всякий случай сделаю в блоге копию руководства со страницы
DIR-320 -> Firmwares -> DebWrt
Показать
Оглавление
Необходимые материалы
Подготовка накопителя
Прошивка устройства
Действия после перепрошивки
Использование NetConsole
Я использую прошивку DebWrt ревизии 116 от 22 июня 2011 года с ядром версии 2.6.34.5. Немного тухло, но в сборках с более свежими ядрами мне не удалось заставить работать интерфейс wlan0 (видимо — из-за этого), а пересобирать прошивку — лениво. Работает — и пусть работает :-) Прошивки беру с официального сайта DebWrt.
Команды выполняются от имени пользователя root или используется sudo. Допустим, что USB-флеш-накопитель объявлен в системе как /dev/sdb
Последовательность действий следующая:
/dev/sdb1 - метка тома DEBWRT_ROOT, тип - Linux (ext3), весь объём накопителя, кроме свопа /dev/sdb2 - метка тома DEBWRT_SWAP, тип - Linux Swap, объём - 128 Мб
mkfs.ext3 -L DEBWRT_ROOT /dev/sdb1 tune2fs -c 0 -i 0 /dev/sdb1 mkswap -L DEBWRT_SWAP /dev/sdb2
mkdir -p /mnt/debwrt mount /dev/sdb1 /mnt/debwrt cd /mnt/debwrt
tar xjvf ~/debwrt-rootfs-mipsel-2.0-1.tar.bz2
tar xzvf ~/debwrt-modules-brcm47xx-Broadcom-b43-2.6.34.5-angel-2.0-1.tar.gz --no-same-owner
cd sync umount /mnt/debwrt eject /dev/sdb
Устройство перепрошивается DebWrt-прошивкой по инструкции с сайта OpenWrt, затем необходимо перезагрузить маршрутизатор.
Вариант для
Шindoшs
tftp -i 192.168.0.1 put debwrt-firmware-brcm47xx-squashfs.trx
Вариант для
Linux
atftp --trace --option "timeout 1" --option "mode octet" --put --local-file debwrt-firmware-brcm47xx-squashfs.trx 192.168.0.1
После перепрошивки действуют следующие установки по умолчанию:
При первой загрузке (в случае самостоятельной сборки образа) выполняются сервисы SSHD и telnetd
При обычной загрузке
Необходимо:
nvram set et0macaddr=1c:af:f7:96:3b:0e nvram set il0macaddr=1c:af:f7:96:3b:10 nvram commit reboot
Для запуска сервиса robocfg установите ENABLED=1 в файле /etc/default/robocfg, добавьте символическую ссылку от файла /etc/init.d/robocfg в /etc/rcS.d (сервис должен стартовать до службы «networking»), удалите файл /etc/network/interfaces (если это символическая ссылка) и создайте его заново.
Перейти к оглавлению
nc -l -p 6666 -u
Должен быть доступен ifconfig (в Debian 9 по умолчанию не установлен пакет net-tools), конфиг-файл апача лежит по пути /etc/apache/httpd.conf.
Показать
#!/usr/bin/env bash APACHECONFFILE=/etc/apache/httpd.conf if test $(id -u) != 0 then echo "You must be root to run this script! Aborting." exit 1 fi if ! type /sbin/ifconfig>/dev/null 2>&1 then echo "ifconfig required but not installed! Aborting." exit 1 fi LC_ALL=C export LC_ALL ALL=$(ifconfig -a | sed -n 's/^\([^ ]\+\):.*/\1/p' | paste -sd ' ') IF="" for if in $ALL; do test "$if" == "ppp0" -a "$IF" == "" && IF=$if done for if in $ALL; do test "$if" == "ippp0" -a "$IF" == "" && IF=$if done for if in $ALL; do test "${if/#eth*/eth}" == "eth" -a "$IF" == "" && IF=$if done for if in $ALL; do test "${if/#enp*/enp}" == "enp" -a "$IF" == "" && IF=$if done for if in $ALL; do test "${if/#wlan*/wlan}" == "wlan" -a "$IF" == "" && IF=$if done test "$IF" == "" && IF=lo echo Using $IF IP=$(ifconfig $IF|awk '/inet/{print $2}'|cut -d: -f2) SERVERNAME=$(awk '/^ServerName/{print $2}' $APACHECONFFILE) echo ServerName changed from $SERVERNAME to $IP perl -pi -e "s/(^ServerName).*/\1 $IP/" $APACHECONFFILE /etc/init.d/apache reload
Простейший portknock’ер, работающий по icmp.
Показать
iptables -A INPUT -p icmp --icmp-type 8 -m length --length 153 -m recent --name portknock --rsource --set -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -m length --length 154 -m recent --name portknock --rsource --update --hitcount 1 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -m length --length 155 -m recent --name portknock --rsource --update --hitcount 2 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m recent --seconds 10 --name portknock --rsource --rcheck --hitcount 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
Для открытия порта SSH необходимо пустить три определённых пинга на адрес целевой системы:
ping -s 125 -c 1 [адрес]
ping -s 126 -c 1 [адрес]
ping -s 127 -c 1 [адрес]
Пользователям системы Microsoft ® Шindoшs ™ придётся использовать такой синтаксис:
ping -l 125 -n 1 [адрес]
ping -l 126 -n 1 [адрес]
ping -l 127 -n 1 [адрес]