Utile * Comandi NIX per sviluppatori Web

Quindi, perché * NIX e perché è necessario andare alla console?

Secondo le statistiche di W3Techs, Unix è utilizzato dal 68% di tutti i siti web di cui conoscono il sistema operativo. Ciò significa che se sei uno sviluppatore web, il tuo codice è probabilmente eseguito su un server Linux. E almeno devi sapere come configurare ed effettuare il debug del tuo codice su sistemi Unix e Linux. Scopriamo cosa è necessario sapere per sentirsi a proprio agio nella linea di comando.

Le basi

Il comando base * NIX è composto da tre componenti:

  • comando o programma da eseguire
  • opzioni per modificare o specificare il comportamento del comando
  • argomenti o immettere i dati necessari per eseguire il comando   

Ad esempio, se è necessario ottenere un elenco di file nella directory / Var / www, è necessario eseguire il comando ls con l'argomento / Var / www. Per aggiungere la dimensione dei file all'output, è necessario aggiungere il -S opzione, e il comando finale sarà simile a questo:

ls -s / var / www

Reindirizzamenti I / O e condotte

Molti comandi * NIX usano l'input e l'output di testo con cui puoi operare, e la grande caratteristica di questo è che puoi inviare i risultati di output del comando a un file usando il redirect, o anche passare l'output di un comando all'input di un altro comando che utilizza le pipeline. Ad esempio, possiamo inviare il comando dell'esempio precedente a un file:

ls -s / var / www> /var/www/files.txt

Questo comando creerà o cancellerà il file /var/www/files.txt e generare un elenco di file nel file / Var / www directory. Ecco un elenco di reindirizzamenti I / O standard e pipeline:

  • > Reindirizzare l'output da un comando a un file su disco. Il file verrà cancellato e sovrascritto.
  • >> Lo stesso reindirizzamento, ma aggiungendo il file di output.
  • < Ottieni input per il comando da un file.
  • | Passa l'output di un comando all'input di un altro comando.
  • tee Entrambi reindirizzano l'output a un file e lo passano al comando successivo nella pipeline.

I comandi principali

Per ottenere pagine di manuale per un comando, esegui uomo. Le pagine del manuale seguono un layout comune e possono includere nome, sinossi, descrizione ed esempi di utilizzo. Questo mostrerà la documentazione per chmod comando:

uomo chmod

Per eseguire alcuni comandi come il salvataggio delle configurazioni o il riavvio dei processi, è necessario eseguirli come superutente. Per fare questo, è necessario anteporre sudo al tuo comando:

utente @ server: / var / www $ chmod 777 log chmod: modifica delle autorizzazioni di 'log': operazione non consentita utente @ server: / var / www $ sudo chmod 777 log sudo chmod 777 log

Se hai bisogno di eseguire una serie di comandi come superutente, puoi usare su, o cambia comando utente.

utente @ server: / var / www $ su Password: root @ server: / var / www #

Nota: Per salvare il livello di sicurezza ed evitare l'esecuzione accidentale di comandi discutibili, non utilizzare sudo e su senza scopo.

Nel mondo reale

Navigazione di base

Ci sono tre comandi principali per navigare nell'albero dei file:

  • pwd per stampare il nome della directory di lavoro corrente
  • CD per cambiare directory
  • ls per elencare i contenuti della directory

Ecco un esempio di utilizzo di questi comandi con l'output del terminale:

utente @ server: ~ $ pwd / home / utente utente @ server: ~ $ cd / var / www utente @ server: / var / www $ ls -alF totale 16 drwxr-xr-x 5 root root 4096 gen 22 09:45 ./ drwxr-xr-x 14 root root 4096 gen 22 09: 38 ... / drwxr-xr-x 2 root root 4096 gen 22 09:45 html / drwxr-xr-x 3 root root 4096 gen 22 09:45 log / drwxrwxrwx 1 user user 442 mar 24 12:22 testing /

Ricerca di file

C'è la trova comando per cercare i file in una gerarchia di directory. Questo comando è molto potente e può cercare file e directory per nome, autorizzazioni di accesso, data e dimensione.

Trova tutte le directory con il nome "logs" nel / Var / www directory usando il -genere opzione:

trova / var / www -type d -name logs

Per cercare i file PHP nella directory corrente, aggiungere il -nome opzione:

trova . -type f -name "* .php"

Trova i file con autorizzazioni definite usando il -permanente opzione:

trova . -tipo f -perm 0777 -print

Trova tutti i file superiori a 500 MB:

trova / -size + 500M

Naturalmente, puoi combinare tutte queste opzioni in un unico comando, e questo è solo il fondamento del trova comando, che è uno strumento molto potente per la ricerca di file. Utilizzare le pagine di manuale per ottenere ulteriori informazioni.

Manipolazione di file e cartelle

Ci sono cinque comandi principali per manipolare file e cartelle nel sistema * NIX:

  • toccare è usato per cambiare data e ora su file e directory esistenti, ma anche questo è il modo più semplice per creare un nuovo file
  • mkdir per creare directory
  • cp copiare file e directory
  • mv per spostare o rinominare file e directory
  • rm per eliminare file e cartelle

Il prossimo esempio creerà un file index.html, copia questo file nella nuova directory in / Var / www, e rimuovere il file sorgente.

root @ localserver: ~ # touch index.html root @ localserver: ~ # mkdir / var / www / newdir root @ localserver: ~ # cp index.html / var / www / newdir / root @ localserver: ~ # rm index.html

Un altro grande comando è ln, che è progettato per creare collegamenti tra file. Il comando ln viene spesso utilizzato per creare un collegamento simbolico per abilitare un host virtuale:

sudo ln -s /etc/apache2/sites-available/newvirtualhost.com.conf / etc / apache / sites-enabled / newvirtualhost.com.conf

Modifica autorizzazioni di accesso

Per modificare il proprietario e il gruppo del file, utilizzare chown. Non dimenticare di concedere la proprietà all'utente apache quando stai creando un nuovo host virtuale della tua applicazione web:

sudo chown -R www-data: www-data /var/www/newvirtualhost.com

A volte le directory cache o log della tua applicazione devono essere scrivibili per tutti gli utenti, quindi devi cambiare le modalità di accesso a 777 con chmod comando. Aggiungi il -R opzione per aggiungere permessi a tutti i file e cartelle nidificati.

sudo chmod -R 777 / var / www / private / cache

Se vuoi solo rendere un file eseguibile, usa chmod con il +X opzione.

sudo chmod + x /var/www/private/backup.sh

Lettura di file

Per visualizzare i file nella console, è possibile utilizzare il gatto comando. Con gatto, puoi concatenare i contenuti dei file usando parametri aggiuntivi, e puoi anche usare la maschera nei nomi dei file.

cat /etc/apache2/apache2.conf cat /etc/apache2/apache2.conf /etc/apache2/ports.conf cat / etc / apache2 / mods-enabled / *

Ma il gatto il comando ti farà confondere molto velocemente, perché mostra l'output in formato raw senza alcun paging, quindi è scomodo da usare con l'output del registro. Per ottenere un filtro per sfogliare il testo uno schermo alla volta, è necessario utilizzare Di Più o Di meno comandi, che sono un granché.

meno /etc/apache2/apache2.conf cat / etc / apache2 / mods-enabled / * | Di meno

Un altro comando utile è coda, che viene creato per produrre l'ultima parte di file. Questo comando è perfetto per esaminare le cronologie dei registri. Per impostazione predefinita, questo comando tail stampa le ultime 10 righe e puoi modificare questo numero usando il comando -n parametro.

tail /var/log/apache2/error.log tail -n 25 /var/log/apache2/error.log

Ma se si dispone, ad esempio, di una serie di file di registro, è necessario qualcosa di più potente per effettuare una ricerca corretta. Qualcosa di simile a grep-un programma che legge dallo standard input, testa ogni linea su un pattern e scrive sullo standard output le linee che corrispondono a questo pattern. Usandolo in combinazione con gatto e condutture, otterrai ciò che desideri.

Se si desidera filtrare le righe di testo dell'output, è possibile utilizzare grep comando:

grep notice /var/log/apache2/error.log cat /var/log/apache2/*.log | grep "shut down"

Come potete vedere, grep è buono per l'utilizzo in pipeline. In questo esempio, l'ultimo comando genererà tutte le righe contenenti la stringa "shut down" dai file di log.

Modifica di file

Se si desidera modificare i file di testo in modalità console, è possibile utilizzare uno dei tre editor di testo più popolari:

  • GNU nano, un editor di testo predefinito piccolo e intuitivo, che è una scelta perfetta per le attività di base
  • Vim, un editor di testo dei programmatori migliorato, che è il più potente, ma complesso per i principianti
  • mcedit, un editor di Midnight Commander con funzionalità complete, facile da usare ma non installato di default sui sistemi * NIX

Confrontali e fai la tua scelta:

nano /var/log/apache2/error.log vim /var/log/apache2/error.log mcedit /var/log/apache2/error.log

Archiviazione

A volte è necessario eseguire il backup o comprimere alcuni dati sul server.

Le utilità di archiviazione più comuni sono catrame e cerniera lampo. Si noti che il cerniera lampo il comando potrebbe non essere installato sul tuo server per impostazione predefinita.

È possibile creare un archivio con i seguenti comandi:

tar -zcvf nome-archivio.tar.gz directory-o-nome-file tar -jcvf nome-archivio.tbz2 directory-o-nome-file zip nome- archivio.zip directory-o-nome-file

Se vuoi solo vedere un elenco di file nell'archivio, puoi usare il -l opzione per entrambi catrame e Unzip:

tar -ztvf archive-name.tar.gz tar -jtvf archive-name.tbz2 unzip -l archive-name.zip

Oppure estrai alcuni file sorgente:

tar -zxvf archive-name.tar.gz tar -jxvf archive-name.tbz2 zip archive-name.zip

Pianifica attività

Se si desidera pianificare gli script per l'esecuzione periodica, è necessario utilizzare l'utilità Cron, che è guidata da una tabella cron, un file di configurazione che specifica i comandi della shell da eseguire periodicamente su una determinata pianificazione. E il comando per mantenere tabelle cron è crontab.

Chiamando crontab con opzione -l mostrerà la tua tabella cron.

Anche il -u l'opzione viene fornita per specificare il nome dell'utente di cui viene utilizzato crontab. Se hai intenzione di eseguire attività della tua applicazione web, è meglio modificare crontab per gli utenti www-data.

utente @ server: ~ $ sudo crontab -lu www-data # mh comando dom mon dow * / 5 * * * * php5 / var / www / yii do / tasks >> /var/www/tasks.log 00 15 * * 1-5 /var/www/backuper.sh

In questo output, puoi dare un'occhiata a un esempio di una tabella cron. Come puoi vedere, ogni riga è programmata per minuto, ora, giorno del mese, mese e giorno della settimana. Ogni campo può essere un asterisco, che significa ogni valore del campo. Inoltre puoi usare set e intervalli usando virgole e trattini. Seguendo un intervallo con una barra specifica, salta il valore del numero nell'intervallo. In questo esempio, il primo comando verrà eseguito ogni cinque minuti e il secondo comando verrà eseguito dal lunedì al venerdì alle 15:00.

Per modificare questo elenco, esegui crontab con -e chiave invece di -l. L'elenco cron verrà aperto nell'editor predefinito. Utilizzare il -r opzione per cancellare la cron list.

Monitoraggio delle prestazioni

Comando superiore mostra le informazioni di riepilogo del sistema e fornisce una vista dinamica in tempo reale dei processi di sistema in esecuzione. stampa Shift-M per ordinare i processi tramite l'utilizzo della memoria, o Shift-P ordinare in base all'utilizzo della CPU.

top - 21:33:02 su 308 giorni, 21:24, 1 utente, media di caricamento: 0.00, 0.01, 0.05 Attività: 87 totali, 1 in esecuzione, 86 in sospensione, 0 interrotti, 0 zombie% Cpu (s): 0.3 us , 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 501800 totali, 471348 utilizzati, 30452 liberi, 49672 buffer KiB Swap: 4194300 totali, 56192 utilizzati, 4138108 gratuiti. 149488 memorizzato Mem PID USER PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND 16269 www-data 20 0 348592 38884 12044 S 0.0 7.7 0: 02.42 php5 26533 www-data 20 0 409516 38488 24312 S 0.0 7.7 1: 00.04 php5- fpm 1076 mysql 20 0 887824 32748 1616 S 0.0 6.5 276: 46.59 mysqld 862 syslog 20 0 256612 31428 368 S 0.0 6.3 32: 45.88 rsyslogd 18901 root 20 0 105632 4316 3248 S 0.0 0.9 0: 00.04 sshd 25393 www-data 20 0 87356 4312 1564 S 0.0 0.9 4: 46.92 nginx 27846 memcache 20 0 328464 3828 252 S 0.0 0.8 1: 04.30 memcached 

Per visualizzare la quantità di memoria libera e utilizzata nel sistema, utilizzare gratuito comando. Aggiungi il -h opzione per visualizzare i campi di output in formato leggibile.

utente @ server: ~ $ libero -h totale usato buffer condivisi gratuiti memorizzati Mem: 490M 453M 36M 23M 46M 140M - / + buffer / cache: 265M 224M Swap: 4.0G 54M 3.9G

Un altro comando utile è df, che è un comando per segnalare l'utilizzo dello spazio su disco del file system. Puoi chiamarlo con il -un opzione per mostrare tutti i file system del tuo server. Inoltre, non dimenticare di aggiungere il -h opzione per il formato leggibile.

utente @ server: ~ $ df -ah Dimensione del filesystem utilizzato Uso disponibile% montato su / dev / vda1 20G 6.3G 13G 34% / udev 235M 4.0K 235M 1% / dev tmpfs 50M 344K 49M 1% / run

Cronologia della riga di comando

Puoi usare il !! comando per ripetere il comando precedente, o usare sudo !! se hai dimenticato di eseguire un comando con sudo.

utente @ server: / var / www $ chmod 777 log chmod: modifica delle autorizzazioni di 'log': Operazione non consentita utente @ server: / var / www $ sudo !! sudo chmod 777 log

Se hai dimenticato la sintassi dei comandi o ti senti pigro a digitare una grande query di comando, puoi usare storia per visualizzare la cronologia dei comandi. È bene combinare questo comando con comandi di filtro delle stringhe come grep, coda e altri per trovare esattamente quello che vuoi.

storia | storia della coda | storia di grep crontab | egrep -i 'ssh | ftp'

Conclusione

L'uso della console non è scienza missilistica. I sistemi Unix e Linux sono di facile comprensione e utilizzo grazie al design semplice e alla buona documentazione. Spero che questo articolo ti renda abbastanza comodo con la riga di comando e ti porti al prossimo livello di gestione delle tue applicazioni web con la riga di comando.

Se hai domande o vuoi condividere i tuoi comandi della console preferiti, non esitare a lasciare un commento sotto l'articolo.

Ulteriori letture

  • Elenco di comandi di Linux
  • Guida di Bash per principianti
  • Utilizzando il terminale
  • Come posso imparare rapidamente i comandi del terminale?
  • La riga di comando è il tuo migliore amico