Linux commands - andretti1977/linux-commands GitHub Wiki

Linux commands

  • Empty files: sudo truncate -s0 /var/log/btmp
  • Total disk space: df -h
  • Space recursively (one level, more readable): sudo du -h --max-depth=1
  • Space recursively, more readable, excluding subfolders' sizes: sudo du -sh
  • List files ordered by size desc: ls -al -S -1
  • Compression: tar -czvf name-of-archive.tar.gz /path/to/directory-or-file
  • Expansion: tar -xzvf archive.tar.gz
  • **ONLY .GZ files expansion: gunzip file.gz
  • scp recursively: $ scp -r foo [email protected]:/some/remote/directory/bar (sorg -> dest)
  • add user: sudo adduser username
  • add username to sudo group: sudo usermod -aG sudo username
  • login as username: su username
  • sudo come root: sudo -i
  • whoami: whoami
  • swap files: in generale fare riferimento a questa guida

SSH

Per mantenere un keep alive, in ~/.ssh/config aggiungerele righe
ServerAliveInterval 20
ServerAliveCountMax 900

Per autenticazione senza password:

  • pbcopy < ~/.ssh/id_rsa.pub sulla macchina locale
  • aggiungere a ~/.ssh/authorized_keys la chiave appena copiata. Se il file non esiste, creare la directory .ssh e il file authorized_keys

OSX find process using port

lsof -n -i4TCP:8100 | grep LISTEN

TimeMachine logs

log show --predicate 'subsystem == "com.apple.TimeMachine"' --info --last 10m

GREP su listing di file

vedi https://stackoverflow.com/a/5914676/1723445

show files whose names contain LMN2011
find /somedir -type f -print | grep 'nomefileLMN2011'

Then you can search their content (case insensitive):

find /somedir -type f -print | grep -i 'nomefileLMN2011' | xargs grep -i 'contenutoLMN20113456'

If the paths can contain spaces, you should use the "zero end" feature:

find /somedir -type f -print0 | grep -iz 'nomefileLMN2011' | xargs -0 grep -i 'contenutoLMN20113456'

Per MotorK:

cd /home/drivek/logs/motork-reporting/
find . -type f -print | grep -i 'motork-reporting.log.2022-' | xargs grep -i 'cosacercare'

GREP su multipli filename Se ad esempio devo vedere se un contenuto era presente sia sui file di novembre che di dicembre, posso fare una cosa del genere (uso | nel grep col backslash):

find . -type f -print | grep -i 'motork-reporting.log.2023-11-\|motork-reporting.log.2023-12-' | xargs grep -i '00k7S00000gBgFwQAK'

HTOP

Less cheatsheet

  • G: va alla fine del file
  • g: va all'inizio del file
  • /qualcosa: ricerca qualcosa
  • n: fatta una ricerca, va alla successiva occorrenza
  • N: fatta una ricerca, va alla precedente occorrenza
  • F: si mette in tail
  • d: scorre verso il basso il log di un tot di righe
  • u: scorre verso l'alto di un tot di righe

wget di sito completo

wget --mirror --convert-links --page-requisites --no-parent --adjust-extension http://www.museosini.org

Vedi qui per la spiegazione

Permessi e varie

  • sudo -s diventi root
  • edita il file /etc/passwd per assegnare una shell agli utenti (/bin/bash) o rimuoverla (/bin/false che non permette di loggarsi con quell'utente)
  • per loggarsi con un utente che non ha password prima gli assegni una bash e poi ci entri da root
  • su - username permette di loggarsi con quell'utente
  • /etc/group per vedere i gruppi vedi qui per spiegazione

Tunnel ssh

ssh -L 3307:whatismyipaddress.com:443 utente@ipmacchinaponte

Redirige il traffico della porta locale 3307 verso la 443 del server whatsmyipaddress.com passando dalla macchinaponte.
ATTENZIONE: la macchina di destinazione è l'indirizzo della macchina di destinazione, visto dalla macchina ponte. Ad esempio se ho mysql sulla macchina 172.1.2.3 alla porta 3306 e voglio accedere da locale a quel db simulando la porta 3310, posso scrivere ssh -L 3310:localhost:3306 [email protected] perchè localhost in questo caso è l'host locale, visto dalla macchina ponte e quindi è proprio la macchina ponte.

Per invocarlo andare di curl -k https://127.0.0.1 -H 'Host:whatsmyipaddress.com"

In pratica si passa lo header di Host per far capire che indirizzo cerchiamo. Attenzione non serve aprire la porta 3307 della macchina ponte perchè la 3307 è quella locale della macchina dove si lancia il comando ssh. Sulla macchina ponte ci si passa tramite ssh

Diff osx

  • diff -rq folderpath1 folderpath2 diff su cartelle, ricorsivo, ma senza la differenza (riassunto)
  • diff -rqb folderpath1 folderpath2 diff su cartelle, ricorsivo, senza tenere conto degli spazi, ma senza la differenza (riassunto)
  • diff -b filepath1 filepath2 diff su file, senza tenere conto degli spazi

Switch versione java

  • installata da IntelliJ
  • /usr/libexec/java_home -Vper vedere le versioni disponibili
  • export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_172` per settare una versione (metti versione completa)
  • java -version per check versione attiva
  • rif 1
  • rif 2
  • file di fattura sotto lavoro/fatture/prova java -jar fatture.jar port=9000

Analisi del traffico su un'interfaccia udp

  • recupero dell'interfaccia di rete: ifconfig
  • sudo tcpdump -i en0 udp