Ovde ću navesti nekoliko maleckih Linuks forica koje mogu biti od koristi ljudima za ko zna šta, a vremenom ću i ovu stranicu ovde dopunjavati novijim stvarima, kako mi šta padne na pamet ili kako gde šta vidim.

U principu sve će biti vezano za terminal, ništa grafika i ništa nešto da je prekomplikovano, pa to mu je što mu je. Takođe, bacite pogled i na neke moje malecke funkcije koje sam turio na Githab, možda i tamo ima nečeg zanimljivog za vas ako ulazite u Linuks vode, tj nemate devojku ili dečka.

Portovi i mreža

# Da li je otvoren TCP port
telnet remote.host 22
nc remote.host 22 -z -v
nmap -p 22 192.168.1.1

# Da li je otvoren UDP port
nc -u remote.host 53 -z -v
nmap -sU -p 53 192.168.1.1
# Pregled otvorenih portova na lokalnoj mašini
lsof -i -P -n  | grep LISTEN
netstat -tulpn | grep LISTEN
ss -tulpn      | grep LISTEN

Pingovanje više IP adresa odjednom pomoću komande ping: link ovde

Vim (najkorišćenije forice)

# Pozicioniraj se na prvu liniju
gg
# Obriši sve od kursora na dole
dG
# Obriši liniju na kojoj si sad
dd
# Obriši sve od kursora pa do kraja linije
d$
# Obriši karakter na kojem ti je pozicioniran kursor
x
# Obriši sve od kursora do početka linije
d0
# Obriši sve od kursora do početka fajla
dgg
# Obriši 4 linije ispod kursora
4dd
# Undo
u
# Redo
CTRL+r
# Stavi liniju u kojoj si sad u klipbord (copy)
yy
# Prekopiraj to ispod linije na kojoj si sad (paste)
p

Fajl sistem, diskovi

# Interaktivna komanda: Izlistaj najveće fajlove i foldere na nekoj putanji
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
# Interaktivna komanda: Prvih 30 foldera sa najviše inode-ova
echo -n "Enter filesystem path: " ; read FS ; find ${FS} -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n | tail -30
# Izlistaj mi 50 najvećih fajlova na nekoj putanji
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
# Da li se neki disk koristi na sistemu ili ne (dobra provera kod dodavanja novih diskova u LVM). Writes i IO treba da su nula
# Komanda je interaktivna
echo -n "Disk name (example sdx): " ; read DN ; vmstat -d | head -1 ; vmstat -d 1 | grep ${DN}
# Koliko megabajta zauzimaju svi logovi iz nekog foldera i njegovih podfoldera
find /path/to/folder -type f -iname '*.log' -exec du -shm {} \; | cut -f1 | awk '{s+=$1} END {printf "%.0f MB", s}' && echo
# Izlistaj mi sve fajlove veće od 300MB i islistaj po vremenu izmene
find /folder/ -type f -size +300M -exec stat -c 'Modified: %y | Size: %s | %n' {} \; | sort -h
# Izlistaj mi sve fajlove starije od 90 dana (interkativno)
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
# Izlistaj fajlove koji su obrisani ali ih neki proces još drži neobrisanima
lsof | grep deleted | grep 'REG\|DIR' | awk '{ print $1" pid:"$2" user:"$3" "$9" "int($7/1024/1024)"MB" }' | column -t

Memorija, procesor, SWAP

# Memorija: Prvih 10 najtežih procesa
ps aux --sort -rss | head -11
# Memorija SWAP: Prvih 30 najtežih procesa
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | head -30

Grepovanje, komparacije

# Izgrepuj neiskomentarisane linije iz nekog fajla (korisno kod čitanja konfiguracionih fajlova)
grep -v '^#\|^$' /path/to/file
# Nađi iste linije koje se nalaze u neka dva fajla
awk 'FNR==NR{a[$1];next}($1 in a){print}' fajl1.txt fajl2.txt

Ostalo

# Četovanje između servera serverska strana
nc -l 55555

# Četovanje između servera klijentska strana
nc remote.host 5555 # Pa piši poruke
# Da li je mašina virtualna ili ne
dmidecode | grep 'Product Name'
# Skidanje cele stranice sa sve fajlovima iza linkova na istoj (korisno kod sinhronizacije repozitorijuma ako nema rsync-a omogućenog
wget --no-clobber --convert-links --random-wait -r -p -E -e robots=off -U mozilla 'link-ka-stranici.nekoj.bla/blabla'