Nützliche * NIX-Shellbefehle für Webentwickler

Also, warum * NIX und warum müssen Sie zur Konsole gehen?

Nach den Statistiken von W3Techs wird Unix von 68% aller Websites verwendet, deren Betriebssystem sie kennen. Das heißt, wenn Sie Webentwickler sind, wird Ihr Code höchstwahrscheinlich auf einem Linux-Server ausgeführt. Und Sie müssen zumindest wissen, wie Sie Ihren Code auf Unix- und Linux-Systemen konfigurieren und debuggen. Finden wir heraus, was Sie wissen müssen, um sich in der Befehlszeile wohl zu fühlen.

Die Grundlagen

Der grundlegende Befehl * NIX besteht aus drei Komponenten:

  • Befehl oder ein Programm zum Ausführen
  • Optionen um das Verhalten des Befehls zu ändern oder festzulegen
  • Argumente oder Eingabedaten, die zum Ausführen des Befehls erforderlich sind   

Zum Beispiel, wenn Sie eine Liste der Dateien im Verzeichnis abrufen müssen / var / www, Sie müssen den Befehl ausführen ls mit dem Argument / var / www. Um die Dateigröße der Ausgabe hinzuzufügen, müssen Sie die -s Option und der letzte Befehl sieht so aus:

ls -s / var / www

E / A-Weiterleitungen und Pipelines

Viele * NIX-Befehle verwenden Texteingabe und -ausgabe, mit der Sie arbeiten können, und das großartige Feature ist, dass Sie die Ausgabeergebnisse des Befehls mithilfe einer Umleitung an eine Datei senden oder sogar die Ausgabe eines Befehls an die Eingabe von übergeben können ein anderer Befehl mit den Pipelines. Zum Beispiel können wir den Befehl aus dem vorherigen Beispiel in eine Datei ausgeben:

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

Dieser Befehl erstellt oder löscht eine Datei /var/www/files.txt und eine Liste der Dateien in der ausgeben / var / www Verzeichnis. Hier finden Sie eine Liste mit Standard-E / A-Weiterleitungen und Pipelines:

  • > Leiten Sie die Ausgabe von einem Befehl in eine Datei auf der Festplatte um. Die Datei wird gelöscht und überschrieben.
  • >> Dieselbe Umleitung, aber die Ausgabedatei wird angehängt.
  • < Liefert die Eingabe aus einer Datei in den Befehl.
  • | Übergeben Sie die Ausgabe eines Befehls an die Eingabe eines anderen Befehls.
  • Abschlag Beide leiten die Ausgabe in eine Datei um und übergeben sie an den nächsten Befehl in der Pipeline.

Die Hauptbefehle

Um manuelle Seiten für einen Befehl zu erhalten, führen Sie den Befehl aus Mann. Handbuchseiten haben ein gemeinsames Layout und können Namen, Übersicht, Beschreibung und Verwendungsbeispiele enthalten. Dadurch wird die Dokumentation für die angezeigt chmod Befehl:

man chmod

Um einige Befehle wie das Speichern von Konfigurationen oder das Neustarten von Prozessen auszuführen, müssen Sie diese als Superuser ausführen. Dazu müssen Sie vorausgehen Sudo zu deinem Befehl:

user @ server: / var / www $ chmod 777 log chmod: Ändern der Berechtigungen für 'log': Vorgang nicht zulässig user @ server: / var / www $ sudo chmod 777 protokoll sudo chmod 777 protokoll

Wenn Sie mehrere Befehle als Superuser ausführen müssen, können Sie verwenden su, oder Benutzerbefehl wechseln.

Benutzer @ Server: / var / www $ su Kennwort: root @ server: / var / www #

Hinweis: Verwenden Sie nicht, um die Sicherheitsschicht zu speichern und die versehentliche Ausführung unerwünschter Befehle zu vermeiden Sudo und su ohne jeden Zweck.

In die wirkliche Welt

Grundlegende Navigation

Es gibt drei Hauptbefehle zum Navigieren im Dateibaum:

  • pwd um den Namen des aktuellen Arbeitsverzeichnisses auszudrucken
  • CD Verzeichnis wechseln
  • ls Verzeichnisinhalt auflisten

Hier ist ein Beispiel für die Verwendung dieser Befehle mit der Ausgabe des Terminals:

Benutzer @ Server: ~ $ pwd / home / Benutzer Benutzer @ Server: ~ $ cd / var / www Benutzer @ Server: / var / www $ ls -alF insgesamt 16 drwxr-xr-x 5-Stammverzeichnis 4096 Jan 22 09:45 ./drwxr-xr-x 14 Wurzelwurzel 4096 Jan 22 09: 38… / drwxr-xr-x 2 Wurzelwurzel 4096 Jan 22 09:45 html / drwxr-xr-x 3 Wurzelwurzel 4096 Jan 22 09:45 log / drwxrwxrwx 1 user user 442 Mar 24 12:22 testing /

Dateien suchen

Dort ist der finden Befehl zum Suchen nach Dateien in einer Verzeichnishierarchie. Dieser Befehl ist sehr leistungsfähig und kann nach Namen und Zugriffsberechtigungen, Datum und Größe nach Dateien und Verzeichnissen suchen.

Finden Sie alle Verzeichnisse mit dem Namen "logs" in / var / www Verzeichnis mit der -Art Möglichkeit:

find / var / www -type d -name Protokolle

Um nach PHP-Dateien im aktuellen Verzeichnis zu suchen, fügen Sie das -Name Möglichkeit:

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

Finden Sie Dateien mit definierten Berechtigungen mit der -Dauerwelle Möglichkeit:

finden . -type f -perm 0777 -print

Finden Sie alle Dateien, die größer als 500 MB sind:

find / -size + 500M

Natürlich können Sie alle diese Optionen in einem Befehl kombinieren, und dies sind nur die Grundlagen von finden Befehl, ein sehr leistungsfähiges Werkzeug zum Suchen von Dateien. Verwenden Sie die Handbuchseiten, um weitere Informationen zu erhalten.

Dateien und Ordner bearbeiten

Es gibt fünf Hauptbefehle zum Bearbeiten von Dateien und Ordnern im * NIX-System:

  • berühren wird verwendet, um Zeitstempel für vorhandene Dateien und Verzeichnisse zu ändern. Dies ist jedoch der einfachste Weg, neue Dateien zu erstellen
  • mkdir Verzeichnisse erstellen
  • cp um Dateien und Verzeichnisse zu kopieren
  • mv um Dateien und Verzeichnisse zu verschieben oder umzubenennen
  • rm um Dateien und Ordner zu löschen

Im nächsten Beispiel wird eine Datei erstellt index.html, Kopieren Sie diese Datei in das neue Verzeichnis in / var / www, und entfernen Sie die Quelldatei.

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

Ein weiterer großer Befehl ist l, die dazu dient, Verknüpfungen zwischen Dateien herzustellen. Der Befehl l wird häufig verwendet, um einen symbolischen Link zum Aktivieren eines virtuellen Hosts zu erstellen:

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

Zugriffsberechtigungen ändern

Um den Dateieigentümer und die Gruppe zu ändern, verwenden Sie chown. Vergessen Sie nicht, dem Apache-Benutzer den Besitz zu gewähren, wenn Sie einen neuen virtuellen Host Ihrer Webanwendung erstellen:

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

Manchmal müssen Cache- oder Protokollverzeichnisse Ihrer Anwendung für alle Benutzer beschreibbar sein, sodass Sie den Zugriffsmodus mit 777 auf 777 ändern müssen chmod Befehl. Ergänzen Sie die -R Option zum Hinzufügen von Berechtigungen für alle verschachtelten Dateien und Ordner.

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

Wenn Sie nur eine Datei ausführbar machen möchten, verwenden Sie chmod mit dem +x Möglichkeit.

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

Lesen von Dateien

Um Dateien in der Konsole anzuzeigen, können Sie die Katze Befehl. Mit Katze, Sie können den Inhalt der Dateien mithilfe zusätzlicher Parameter verketten. Sie können auch die Maske in Dateinamen verwenden.

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

Aber die Katze Mit dem Befehl werden Sie sehr schnell verwirrt, da er die Ausgabe im unformatierten Format ohne Paging anzeigt. Daher ist die Verwendung mit der Protokollausgabe unbequem. Um einen Filter für das Durchblättern von Text für einen Bildschirm zu erhalten, verwenden Sie die Mehr oder Weniger Befehle, die sehr viel sind.

weniger /etc/apache2/apache2.conf cat / etc / apache2 / mods-enabled / * | Weniger

Ein weiterer nützlicher Befehl ist Schwanz, die erstellt wird, um den letzten Teil der Dateien auszugeben. Dieser Befehl eignet sich hervorragend zum Durchsehen von Protokollhistorien. Standardmäßig druckt dieser Befehl die letzten 10 Zeilen, und Sie können diese Zahl mit ändern -n Parameter.

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

Wenn Sie jedoch beispielsweise eine Reihe von Protokolldateien haben, benötigen Sie etwas Stärkeres, um eine korrekte Suche durchzuführen. So etwas wie grep-ein Programm, das aus der Standardeingabe liest, jede Zeile anhand eines Musters prüft und die Zeilen, die diesem Muster entsprechen, in die Standardausgabe schreibt. Durch die Verwendung in Kombination mit Katze und Pipelines erhalten Sie, was Sie wollen.

Wenn Sie Textzeilen der Ausgabe filtern möchten, können Sie das verwenden grep Befehl:

Grep-Mitteilung /var/log/apache2/error.log cat /var/log/apache2/*.log | Grep "Herunterfahren"

Wie du siehst, grep ist gut für den Einsatz in Rohrleitungen. In diesem Beispiel gibt der letzte Befehl alle Zeilen aus, die die Zeichenfolge "Herunterfahren" aus Protokolldateien enthalten.

Dateibearbeitung

Wenn Sie Textdateien im Konsolenmodus bearbeiten möchten, können Sie einen der drei beliebtesten Texteditoren verwenden:

  • GNU Nano, Ein kleiner und benutzerfreundlicher Standard-Texteditor, der sich hervorragend für grundlegende Aufgaben eignet
  • Vim, ein verbesserter Texteditor für Programmierer, der am stärksten ist, aber für Anfänger komplex ist
  • Mcedit, Ein voll ausgestatteter Fenstereditor von Midnight Commander, der einfach zu verwenden ist, aber auf * NIX-Systemen standardmäßig nicht installiert ist

Vergleichen Sie sie und treffen Sie Ihre Wahl:

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

Archivierung

Manchmal müssen Sie einige Daten auf Ihrem Server sichern oder komprimieren.

Die gebräuchlichsten Archivierungsprogramme sind Teer und Postleitzahl. Beachten Sie, dass die Postleitzahl Der Befehl ist möglicherweise nicht standardmäßig auf Ihrem Server installiert.

Sie können ein Archiv mit den folgenden Befehlen erstellen:

tar -zcvf Archivname.tar.gz Verzeichnis-oder-Dateiname tar -jcvf Archivname.tbz2 Verzeichnis-oder-Dateiname zip Archivname.zip Verzeichnis-oder-Dateiname

Wenn Sie nur eine Liste der Dateien im Archiv anzeigen möchten, können Sie das verwenden -l Option für beide Teer und entpacken:

tar -ztvf Archivname.tar.gz tar -jtvf Archivname.tbz2 unzip -l Archivname.zip

Oder extrahieren Sie einige Quelldateien:

tar -zxvf Archivname.tar.gz tar -jxvf Archivname.tbz2 zip Archivname.zip

Aufgaben planen

Wenn Sie möchten, dass Ihre Skripts regelmäßig ausgeführt werden, müssen Sie das Cron-Dienstprogramm verwenden, das von einer cron-Tabelle gesteuert wird. Diese Konfigurationsdatei gibt an, dass die Shell-Befehle nach einem bestimmten Zeitplan periodisch ausgeführt werden. Und der Befehl zur Pflege von Cron-Tabellen lautet Crontab.

Crontab mit Option aufrufen -l zeigt Ihren cron-Tisch.

Auch die -u Mit dieser Option können Sie den Namen des Benutzers angeben, dessen Crontab verwendet wird. Wenn Sie Aufgaben Ihrer Webanwendung ausführen, ist es besser, Crontab für Benutzer www-data zu bearbeiten.

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

In dieser Ausgabe können Sie ein Beispiel einer cron-Tabelle betrachten. Wie Sie sehen, ist jede Zeile nach Minute, Stunde, Tag des Monats, Monats und Wochentags geplant. Jedes Feld kann ein Stern sein, dh jeder Wert des Feldes. Sie können Sets und Bereiche auch mit Kommas und Bindestrichen verwenden. Wenn Sie einem Bereich mit einem Schrägstrich folgen, werden Sprünge des Zahlenwerts durch den Bereich angegeben. In diesem Beispiel wird der erste Befehl alle fünf Minuten ausgeführt, und der zweite Befehl wird von Montag bis Freitag um 15:00 Uhr ausgeführt.

Um diese Liste zu bearbeiten, führen Sie crontab mit der -e Schlüssel statt -l. Die Cron-Liste wird in Ihrem Standardeditor geöffnet. Verwenden Sie die -r Option zum Löschen der Cron-Liste.

Leistungsüberwachung

Befehl oben Zeigt Systemzusammenfassungsinformationen an und bietet eine dynamische Echtzeitansicht der laufenden Systemprozesse. Drücken Sie Umschalttaste-M Prozesse nach Speicherbelegung sortieren oder Umschalttaste-P nach CPU-Auslastung sortieren.

top - 21:33:02 308 Tage, 21:24, 1 Benutzer, durchschnittlich: 0,00, 0,01, 0,05 Aufgaben: 87 insgesamt, 1 Laufen, 86 Schlafen, 0 gestoppt, 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 insgesamt, 471348 verwendet, 30452 frei, 49672 Puffer KiB Swap: 4194300 insgesamt, 56192 verwendet, 4138108 frei. 149488 zwischengespeichert Mem PID USER PR NI VIRT RES SHR S% CPU% MEM TIME + BEFEHL 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 wshw-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-Memcache 

Um die Menge des freien und verwendeten Speichers im System anzuzeigen, verwenden Sie die kostenlos Befehl. Ergänzen Sie die -h Option zur Anzeige von Ausgabefeldern in einem für Menschen lesbaren Format.

user @ server: ~ $ free -h insgesamt verwendete freie gemeinsam genutzte Puffer zwischengespeichert Mem: 490M 453M 36M 23M 46M 140M - / + Puffer / Cache: 265M 224M Swap: 4.0G 54M 3.9G

Ein weiterer nützlicher Befehl ist df, Dies ist ein Befehl zum Melden des Festplattenspeicherplatzes im Dateisystem. Sie können es mit aufrufen -ein Option, um alle Dateisysteme Ihres Servers anzuzeigen. Vergessen Sie auch nicht das -h Option für ein vom Menschen lesbares Format.

user @ server: ~ $ df -ah Dateisystemgröße Verwendet Verwendet% Mounten auf / dev / vda1 20G 6.3G 13G 34% / udev 235M 4.0K 235M 1% / dev tmpfs 50M 344K 49M 1% / run

Befehlszeilenverlauf

Du kannst den ... benutzen !! Befehl, um den vorherigen Befehl zu wiederholen, oder verwenden Sie Sudo !! wenn Sie vergessen haben, einen Befehl mit auszuführen Sudo.

user @ server: / var / www $ chmod 777 log chmod: Ändern der Berechtigungen für 'log': Vorgang nicht zulässig user @ server: / var / www $ sudo !! sudo chmod 777 log

Wenn Sie die Syntax von Befehlen vergessen haben oder faul sind, wenn Sie eine große Befehlsabfrage eingeben, können Sie dies verwenden Geschichte um Ihren Befehlsverlauf anzuzeigen. Es ist gut, diesen Befehl mit Strings-Filterbefehlen wie zu kombinieren grep, Schwanz und andere, um genau das zu finden, was Sie möchten.

Geschichte | Schwanzgeschichte | grep crontab geschichte | egrep -i 'ssh | ftp'

Fazit

Die Verwendung der Konsole ist keine Hexerei. Unix- und Linux-Systeme sind aufgrund ihres einfachen Designs und ihrer guten Dokumentation leicht zu verstehen und zu verwenden. Ich hoffe, dieser Artikel macht Sie mit der Befehlszeile ziemlich vertraut und bringt Sie zur nächsten Stufe der Verwaltung Ihrer Webanwendungen über die Befehlszeile.

Wenn Sie Fragen haben oder Ihre bevorzugten Konsolenbefehle teilen möchten, zögern Sie nicht, einen Kommentar unter dem Artikel zu hinterlassen.

Lesen Sie weiter

  • Verzeichnis der Linux-Befehle
  • Bash Guide für Anfänger
  • Terminal verwenden
  • Wie kann ich Terminalbefehle schnell lernen??
  • Die Befehlszeile ist dein bester Freund