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.
Il comando base * NIX è composto da tre componenti:
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
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.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.
Ci sono tre comandi principali per navigare nell'albero dei file:
pwd
per stampare il nome della directory di lavoro correnteCD
per cambiare directoryls
per elencare i contenuti della directoryEcco 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 /
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.
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 filemkdir
per creare directorycp
copiare file e directorymv
per spostare o rinominare file e directoryrm
per eliminare file e cartelleIl 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
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
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.
Se si desidera modificare i file di testo in modalità console, è possibile utilizzare uno dei tre editor di testo più popolari:
Confrontali e fai la tua scelta:
nano /var/log/apache2/error.log vim /var/log/apache2/error.log mcedit /var/log/apache2/error.log
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
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.
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
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'
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.