Неколико небитних Линукс хинтова

Овде ћу навести неколико малецких Линукс форица које могу бити од користи људима за ко зна шта, а временом ћу и ову страницу овде допуњавати новијим стварима, како ми шта падне на памет или како где шта видим.

У принципу све ће бити везано за терминал, ништа графика и ништа нешто да је прекомпликовано, па то му је што му је. Такође, баците поглед и на неке моје малецке функције које сам турио на Гитхаб, можда и тамо има нечег занимљивог за вас ако улазите у Линукс воде, тј немате девојку или дечка.

Портови и мрежа

# Да ли је отворен TCP порт
telnet remote.host 22
nc remote.host 22 -z -v
nmap -p 22 remote.host

# Да ли је отворен UDP порт
nc -u remote.host 53 -z -v
nmap -sU -p 53 remote.host
# Преглед отворених портова на локалној машини
lsof -i -P -n  | grep LISTEN
netstat -tulpn | grep LISTEN
ss -tulpn      | grep LISTEN

Пинговање више IP адреса одједном помоћу команде пинг: линк овде

Vim (најкоришћеније форице)

# Позиционирај се на прву линију
gg
# Обриши све од курсора на доле
dG
# Обриши линију на којој си сад
dd
# Обриши све од курсора па до краја линије
d$
# Обриши карактер на којем ти је позициониран курсор
x
# Обриши све од курсора до почетка линије
d0
# Обриши све од курсора до почетка фајла
dgg
# Обриши 4 линије испод курсора
4dd
# Undo
u
# Redo
CTRL+r
# Стави линију у којој си сад у клипборд (copy)
yy
# Прекопирај то испод линије на којој си сад (paste)
p

Фајл систем, дискови

# Интерактивна команда: Излистај највеће фајлове и фолдере на некој путањи
echo -n "Enter filesystem path: " ; read FS ; NUMRESULTS=30 ; clear ; date ; df -hPT $FS ; echo "--------------------------------------" ; echo "Largest Directories:" ; du -x $FS 2>/dev/null | sort  -rnk1 | head -n $NUMRESULTS | awk '{printf "%d MB %s\n", $1/1024,$2}' | column -t ; echo "--------------------------------------" ; echo  "Largest Files:" ; nice -n 20 find $FS -mount -type f -ls  2>/dev/null | sort -rnk7 | head -n $NUMRESULTS |awk '{printf "%d  MB\t%s\n", ($7/1024)/1024,$NF}' | column -t
# Интерактивна команда: Првих 30 фолдера са највише inode-ова
echo -n "Enter filesystem path: " ; read FS ; find ${FS} -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n | tail -30
# Излистај ми 50 највећих фајлова на некој путањи
find /path/to/file -type f -ls | awk '{print int($7/1024/1024)"MB "$5":"$6" ("$9"."$8"/"$9":"$10") "$11}' | sort -h | tail -50 | column -t
# Да ли се неки диск користи на систему или не (добра провера код додавања нових дискова у LVM). Writes и IO треба да су нула
# Команда је интерактивна
echo -n "Disk name (example sdx): " ; read DN ; vmstat -d | head -1 ; vmstat -d 1 | grep ${DN}
# Колико мегабајта заузимају сви логови из неког фолдера и његових подфолдера
find /path/to/folder -type f -iname '*.log' -exec du -shm {} \; | cut -f1 | awk '{s+=$1} END {printf "%.0f MB", s}' && echo
# Излистај ми све фајлове веће од 300MB и ислистај по времену измене
find /folder/ -type f -size +300M -exec stat -c 'Modified: %y | Size: %s | %n' {} \; | sort -h
# Излистај ми све фајлове старије од 90 дана (интеркативно)
echo -n "Path: " ; read PATH_TO_SEARCH ; echo "--------------------------------------" ; find "$PATH_TO_SEARCH" -type f -mtime +90 2>/dev/null | xargs ls -ltr 2>/dev/null | awk '{print $9" "$7"."$6"@"$8 " "$3":"$4" "int($5/1024/1024)"MB"}' | column -t
# Излистај фајлове који су обрисани али их неки процес још држи необрисанима
lsof | grep deleted | grep 'REG\|DIR' | awk '{ print $1" pid:"$2" user:"$3" "$9" "int($7/1024/1024)"MB" }' | column -t

Меморија, процесор, SWAP

# Меморија: Првих 10 најтежих процеса
ps aux --sort -rss | head -11
# Меморија SWAP: Првих 30 најтежих процеса
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | head -30

Греповање, компарације

# Изгрепуј неискоментарисане линије из неког фајла (корисно код читања конфигурационих фајлова)
grep -v '^#\|^$' /path/to/file
# Нађи исте линије које се налазе у нека два фајла
awk 'FNR==NR{a[$1];next}($1 in a){print}' fajl1.txt fajl2.txt

Остало

# Четовање између сервера серверска страна
nc -l 55555

# Четовање између сервера клијентска страна
nc remote.host 5555 # Па пиши поруке
# Да ли је машина виртуална или не
dmidecode | grep 'Product Name'
# Скидање целе странице са све фајловима иза линкова на истој (корисно код синхронизације репозиторијума ако нема rsync-a омогућеног
wget --no-clobber --convert-links --random-wait -r -p -E -e robots=off -U mozilla 'link-ka-stranici.nekoj.bla/blabla'