La scorsa settimana e la settimana prima, ho pubblicato la parte 1 e la parte 2 di questa serie in cinque parti intitolata:Comandi Linux usati frequentemente dagli amministratori di sistema Linux . Questi due articoli ci hanno portato un po' più a fondo in quelli che credo siano circa 50-100 comandi spesso usati dagli amministratori di sistema Linux e dagli utenti esperti. Inoltre, consulta la Parte 4 e la Parte 5.
Passiamo alla parte 3 con un'altra serie di comandi e strumenti da riga di comando spesso utilizzati per il trasferimento di file, la manipolazione di file, la risoluzione dei problemi di rete e altre attività amministrative eseguite dai sistemi Linux. In questa serie e in quelle future, raggrupperò il più possibile i comandi correlati e aggiungerò anche un sommario per collegare tutte e cinque le parti di questa serie.
1. rsync
– trasferimenti e sincronizzazione di file remoti.
Rsync (sincronizzazione remota) è uno strumento open source per la sincronizzazione di file tra sistemi locali e remoti. Nel 2016, mi è stato assegnato il compito di creare un mirror globale supportato da CDN per distribuzioni Linux e altri repository: Evowise CDN (https://mirros.evowise.com). Questo progetto si basa molto su rsync
per garantire che centinaia di terabyte di file siano sempre sincronizzati. Nel tempo, più distribuzioni hanno offerto i propri mirror globali supportati da CDN; tuttavia, c'è ancora solo una manciata di mirror multi-distro e multi-software. Ecco un esempio di utilizzo di rsync
comando per eseguire il backup dei file in remoto:
rsync -avze ssh /path/to/directory1/ user@IP_or_hostname:/remote/backup/directory1/
Per scaricare dalla directory remota, invertire l'ordine del comando:
rsync -avze ssh user@IP_or_hostname:/remote/backup/directory1/ /path/to/directory1/
Rsync è un intero argomento in sé. Pertanto, rivisitiamo questo comando in modo più completo in un secondo momento. Nel frattempo, il miglior punto di partenza sarebbe leggere la documentazione e i cheat sheet.
2. tar
, gzip
, b2zip
e zip
manipolazione dei file.
tar
(archivio nastro) è un'utilità di archiviazione.
Per estrarre da un archivio utilizzare:(con opzioni x
=estrarre, v
=dettagliato, f
=file):
tar - xvf archive.tar
Per creare un archivio da file o da una directory, utilizzare:(con l'opzione c
=crea)
tar -cvf archive.tar file1 file2 file3
Per creare archivi compressi, utilizzare:(con l'opzione z
comprimere con gzip)
tar -cvzf archive.tar file1 file2 file3
Per mostrare tutti i file contenuti in un archivio, utilizza (con l'opzione t
=elenco):
tar -tvf archive.tar
gzip
sta per GNU zip. Viene utilizzato per la compressione e la decompressione dei file.
Per creare un file compresso, usa:
gzip file1
Per decomprimere un file, usa:
gunzip file1.gz
Come archivio creato utilizzando tar
non verrà compresso senza opzioni aggiuntive; questo può essere fatto utilizzando gzip
.
Per combinare i file in un archivio compresso utilizzare (con l'opzione z
=gzip):
tar -cvzf archive.tar.gz file1 file2
Il che risulterà in archive.tar.gz
Per decomprimere ed estrarre file da un archivio gzip, usa:
tar -xvzf archive.tar.gz
bzip2
è simile a gzip. Utilizza solo un algoritmo di compressione diverso.
Per creare un file compresso, usa:
bzip2 file1
Per decomprimere un file, usa:
bunzip2 file1.bz2
Per combinare i file in un archivio compresso utilizzare (con l'opzione j
=bzip2):
tar -cvjf archive.tar.bz2 file1 file2
Il che risulterà in archive.tar.bz2
Top decomprimi ed estrai file da un archivio bzip2 usa:
tar -xvjf archive.tar.bz2
zip
viene utilizzato per impacchettare e comprimere (per archiviare) i file.
Per combinare singoli file in un archivio compresso, utilizza:
zip archive.zip file1 file2
Per combinare intere directory in un archivio compresso:
zip -r archive.zip directory1 directory2 directory3
Per decomprimere ed estrarre file o directory da un archivio zip, utilizzare:
unzip archive.zip
Per mostrare tutti i file archiviati in un archivio, usa:
unzip -l archive.zip
3. locate
– cercare file in Linux.
Nella parte 1, abbiamo toccato l'utilizzo di find
e grep
. Locate utilizza un processo in background che viene eseguito periodicamente per cercare e archiviare i file del sistema nel proprio database. Qui sta il suo unico vantaggio... la velocità!
Su alcune distribuzioni, Ubuntu, ad esempio, devi installare manualmente:
sudo apt-get install locate
Per cercare un file utilizzare (con l'opzione i
=ignora maiuscole):
locate -i filename
Ad esempio:
hydn@ubuntu:~$ sudo locate -i firewall /etc/fail2ban/action.d/firewallcmd-allports.conf /etc/fail2ban/action.d/firewallcmd-common.conf /etc/fail2ban/action.d/firewallcmd-ipset.conf /etc/fail2ban/action.d/firewallcmd-multiport.conf ...
Il database verrà aggiornato quotidianamente tramite cron. Tuttavia, se devi aggiornarlo manualmente, puoi utilizzare:
sudo updatedb
4. ps
– informazioni sui processi attualmente in esecuzione.
Nella parte 1, abbiamo esaminato pstree
, un'alternativa più visiva al comando ps. Un modo per usare ps
per ottenere ulteriori informazioni sui processi in esecuzione è necessario utilizzare quanto segue:
ps aux | less
Il a
l'opzione elencherà tutti i processi degli utenti ad eccezione dei capigruppo e dei processi che non sono associati a un terminale.
Il u
l'opzione fornisce informazioni dettagliate su ciascun processo.
La x
l'opzione elencherà tutti i processi se usati insieme a a
opzione.
Per mostrare un albero dei processi:
ps axjf | less
Per mostrare informazioni sui thread, usa:
ps -eLf | less
ps axms | less
Per visualizzare ogni processo in esecuzione come root in formato utente, usa:
ps -U root -u root u
Per mostrare solo gli ID di processo di syslogd, usa:
ps -C syslogd -o pid=
Per mostrare solo il nome del PID 411, utilizzare:
ps -q 411 -o comm=
Gli esempi precedenti provengono da man ps
.
5. Utilizzo degli script Bash.
Uno script Bash è un file di testo semplice contenente una serie di comandi. Questi sono comandi che normalmente digitiamo nella riga di comando (ad esempio, rsync ...
o cp ...
), ma vorremmo risparmiare tempo non dovendo digitare i comandi manualmente ogni volta, oppure, vorremmo programmare l'esecuzione di quei comandi in un secondo momento, usando cron.
Per creare uno script bash, inserisci #!/bin/bash
nella parte superiore del file. Ecco un semplice script bash per eseguire i backup:
#!/bin/bash rsync -avze ssh /path/to/directory1/ user@IP_or_hostname:/remote/backup/directory1/ echo "Remote backup for $(date) " | mail -s "backup complete" user@youremail
Dopo averlo digitato o incollato in un nuovo file, puoi salvarlo come scriptname.sh. In questo caso, remotebackup.sh. Quindi, modifica i permessi del file per renderlo eseguibile:
chmod +x remotebackup.sh
Per eseguire/eseguire lo script dalla directory corrente, digitare:
./remotebackup.sh
Oppure puoi programmare l'esecuzione dello script Bash utilizzando il mais, come discusso nella sezione successiva.
Inoltre, consulta Ubuntu's Beginners BashScripting.
6. cron
– Imposta le attività pianificate da eseguire.
Il cron
daemon è uno strumento Linux integrato che esegue attività pianificate (comandi o script di shell) periodicamente a orari, date o intervalli fissi. Gli amministratori di sistema in genere utilizzano cron per automatizzare la manutenzione del sistema e le attività di amministrazione. Ad esempio, utilizzando cron
per eseguire rsync
ogni notte.
Ecco un esempio di cron
voce a riga singola utilizzata per eseguire uno script di backup ogni notte alle 2 del mattino:
0 2 * * * ~/myscripts/remotebackup.sh
Per iniziare, leggi il cron
guide all'installazione create da Ubuntu e Red Hat e fanno riferimento alla pagina man di cron. Esistono anche generatori di espressioni cron online.
7. nmcli
– gestione della rete.
NetworkManager è un insieme di strumenti per gestire la connettività di rete sul tuo sistema Linux. Funziona con connessioni cablate, wireless e persino Bluetooth.
Per mostrare tutti i dispositivi di rete disponibili, usa:
nmcli d
Ad esempio:
Red Hat ha pubblicato un'ottima guida in rete per nmcli
.
8. ping
– invia ICMP ECHO_REQUEST agli host di rete.
Il ping
Il comando (Packet Internet Groper) viene utilizzato per verificare la connettività di rete tra server e altri host. È possibile inserire l'indirizzo IP o l'URL e il comando ping invia quindi un pacchetto di dati all'indirizzo specificato con il messaggio "PING" e attende una risposta dal server/host di destinazione. Viene riportato il tempo necessario per ricevere questo pacchetto di risposta. Questa volta si chiama latenza. Bassa latenza =risposta di connessione più veloce.
ping [hostname/ip]
Ad esempio:
Usa il -c
flag per specificare il numero di pacchetti ping da inviare. Ad esempio:
ping -c 5 IP_ADDRESS
9. traceroute
– controlla il percorso dei pacchetti verso un host specifico.
traceroute
controlla il percorso seguito dai pacchetti per raggiungere un host specificato. Utilizza il campo TTL (time-to-live) del protocollo IP e tenta di ottenere una risposta ICMP TIME_EXCEEDED da ciascun gateway lungo il percorso verso l'host. (Fonte:man traceroute) Traceroute può aiutare a trovare l'origine di ritardi di latenza di rete, interruzioni e altri problemi di routing di rete.
Inoltre, dai un'occhiata a mtr
(Il mio traceroute).
10. nslookup
– interroga i server dei nomi Internet (NS) in modo interattivo.
nslookup
(Name Server Lookup) è un comando utilizzato per raccogliere informazioni da Domain Name Systems (DNS). Con nslookup
, gli amministratori di sistema possono richiedere informazioni sul nome di dominio o sull'indirizzo IP.
Per cercare il record A di un dominio, utilizza:
nslookup haydenjames.io
Per cercare i record NS di un dominio per scoprire i suoi server autorevoli, utilizza:
nslookup -type=ns ubuntu.com
Per cercare i record MX di un dominio, utilizza:
nslookup -query=mx redhat.com
Per cercare la SOA (inizio dell'autorità) di un dominio, utilizzare:
nslookup -query=soa debian.com
Per mostrare l'elenco dei record DNS di un dominio, utilizza:
nslookup -type=any mysql.com
Per cercare l'rDNS (DNS inverso) di un dominio, utilizza:
nslookup [domain_IP]
Vedi anche l'host
e dig
comandi.
Suggerimento extra: Dai un'occhiata a explainshell.com per abbinare gli argomenti della riga di comando al testo della guida.
Per ora è tutto. Spero che la parte 3 ti sia piaciuta. Condividi, iscriviti, aggiungi un segnalibro e lascia qualsiasi commento o suggerimento tu possa avere.