Handig * NIX Shell-opdrachten voor webontwikkelaars

Dus waarom * NIX en waarom moet je naar de console gaan??

Volgens de statistieken van W3Techs wordt Unix gebruikt door 68% van alle websites waarvan zij het besturingssysteem kennen. Dit betekent dat als u een webontwikkelaar bent, uw code waarschijnlijk op een Linux-server wordt uitgevoerd. En je moet tenminste weten hoe je je code moet configureren en debuggen op Unix- en Linux-systemen. Laten we uitvinden wat u moet weten om u op uw gemak te voelen in de opdrachtregel.

De basis

Het basis * NIX-commando bestaat uit drie componenten:

  • commando of programma om uit te voeren
  • opties om het gedrag van de opdracht te wijzigen of aan te geven
  • argumenten of voer gegevens in die nodig zijn om de opdracht uit te voeren   

Als u bijvoorbeeld een lijst met bestanden in de map wilt ophalen / Var / www, je moet de opdracht uitvoeren ls met het argument / Var / www. Om de grootte van bestanden aan de uitvoer toe te voegen, moet u de -s optie, en de laatste opdracht ziet er als volgt uit:

ls-s / var / www

I / O-omleidingen en pijpleidingen

Veel * NIX-opdrachten gebruiken tekstinvoer en -uitvoer waarmee u kunt werken, en de geweldige eigenschap hiervan is dat u de uitvoerresultaten van de opdracht naar een bestand kunt verzenden met behulp van omleidingen, of zelfs de uitvoer van één opdracht doorgeeft aan de invoer van een ander commando dat de pijpleidingen gebruikt. We kunnen bijvoorbeeld de opdracht uit het vorige voorbeeld uitvoeren naar een bestand:

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

Met deze opdracht wordt een bestand gemaakt of verwijderd /var/www/files.txt en output een lijst met bestanden in de / Var / www directory. Hier is een lijst met standaard I / O omleidingen en pijplijnen:

  • > Redirecte uitvoer van een opdracht naar een bestand op schijf. Het bestand wordt gewist en overschreven.
  • >> Dezelfde omleiding, maar toevoeging van het uitvoerbestand.
  • < Krijg input voor commando van een bestand.
  • | Geef de uitvoer van één opdracht door aan de invoer van een andere opdracht.
  • tee Beide leiden uitvoer om naar een bestand en geven het door aan het volgende commando in de pijplijn.

De hoofdcommando's

Als u handmatige pagina's voor een opdracht wilt ophalen, voert u uit man. Handmatige pagina's volgen een gemeenschappelijke lay-out en kunnen naam, synopsis, beschrijving en gebruiksvoorbeelden bevatten. Hierdoor wordt de documentatie voor de chmod commando:

man chmod

Voor het uitvoeren van sommige opdrachten, zoals het opslaan van configuraties of het opnieuw opstarten van processen, moet u ze uitvoeren als de supergebruiker. Om dit te doen, moet u voorafgaan sudo op uw bevel:

gebruiker @ server: / var / www $ chmod 777 log chmod: permissies van 'log' wijzigen: bewerking niet toegestaan ​​gebruiker @ server: / var / www $ sudo chmod 777 log sudo chmod 777 log

Als u een heleboel opdrachten als supergebruiker moet uitvoeren, kunt u dit gebruiken su, of schakel gebruiker commando.

gebruiker @ server: / var / www $ su Wachtwoord: root @ server: / var / www #

Notitie: Als u de beveiligingslaag wilt opslaan en onbedoelde uitvoering van aanstootgevende opdrachten wilt voorkomen, mag u deze niet gebruiken sudo en su zonder enig doel.

In de echte wereld

Basisnavigatie

Er zijn drie hoofdopdrachten om door de bestandsstructuur te navigeren:

  • pwd om de naam van de huidige werkdirectory af te drukken
  • CD om van map te veranderen
  • ls om de inhoud van de map te vermelden

Hier is een voorbeeld van het gebruik van deze commando's met de output van terminal:

gebruiker @ server: ~ $ pwd / home / gebruiker gebruiker @ server: ~ $ cd / var / www gebruiker @ server: / var / www $ ls -alF totaal 16 drwxr-xr-x 5 root root 4096 jan 22 09:45 ./ drwxr-xr-x 14 root root 4096 22 jan: 09: 38 ... / drwxr-xr-x 2 root root 4096 jan 22 09:45 html / drwxr-xr-x 3 root root 4096 22 jan 09 09:45 log / drwxrwxrwx 1 user user 442 24 maart 12:22 testen /

Bestanden zoeken

Daar is de vind opdracht om te zoeken naar bestanden in een directoryhiërarchie. Deze opdracht is erg krachtig en kan naar bestanden en mappen zoeken op naam, toegangsmachtigingen, datum en grootte.

Zoek alle mappen met de naam "logs" in de / Var / www map met behulp van de -type keuze:

vind / var / www -type d -name logs

Om PHP-bestanden in de huidige map te doorzoeken, voegt u de -naam keuze:

vind . -type f -naam "* .php"

Zoek bestanden met gedefinieerde rechten met behulp van de -permanent keuze:

vind . -type f-perm 0777 -afdruk

Zoek alle bestanden die groter zijn dan 500 MB:

vind / -size + 500M

Natuurlijk kunt u al deze opties in één opdracht combineren, en dit is alleen de basis van de vind opdracht, een zeer krachtig hulpmiddel voor het doorzoeken van bestanden. Gebruik handmatige pagina's voor meer informatie.

Het manipuleren van bestanden en mappen

Er zijn vijf hoofdopdrachten voor het manipuleren van bestanden en mappen in het * NIX-systeem:

  • aanraken wordt gebruikt om tijdstempels op bestaande bestanden en mappen te wijzigen, maar dit is ook de gemakkelijkste manier om een ​​nieuw bestand te maken
  • mkdir om mappen te maken
  • cp om bestanden en mappen te kopiëren
  • mv om bestanden en mappen te verplaatsen of hernoemen
  • rm om bestanden en mappen te verwijderen

In het volgende voorbeeld wordt een bestand gemaakt index.html, kopieer dit bestand naar de nieuwe map in / Var / www, en verwijder het bronbestand.

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

Een ander geweldig commando is ln, die is ontworpen om koppelingen tussen bestanden te maken. Het bevel ln wordt vaak gebruikt om een ​​symbolische link te maken voor het inschakelen van een virtuele host:

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

Toegangsrechten wijzigen

Als u de eigenaar en groep van het bestand wilt wijzigen, gebruikt u chown. Vergeet niet om de apache-gebruiker eigenaar te geven wanneer u een nieuwe virtuele host van uw webtoepassing maakt:

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

Soms moeten cachegeheugen- of logboekdirectory's van uw applicatie beschrijfbaar zijn voor alle gebruikers, dus u moet de toegangsmodi wijzigen naar 777 met de chmod commando. Voeg de toe -R optie om toestemming toe te voegen aan alle geneste bestanden en mappen.

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

Als u alleen een bestand uitvoerbaar wilt maken, gebruikt u chmod met de +X keuze.

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

Lezen van bestanden

Om bestanden in de console te bekijken, kunt u de kat commando. Met kat, u kunt de inhoud van bestanden samenvoegen met behulp van extra parameters, en u kunt ook maskeren in bestandsnamen.

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

Maar de kat commando zal je erg snel in de war brengen, omdat het output in raw-formaat toont zonder enige paging - dus het is lastig om te gebruiken met log output. Als u een filter voor het één voor één door de tekst bladeren wilt, moet u de meer of minder commando's, die veel van een muchness zijn.

minder /etc/apache2/apache2.conf cat / etc / apache2 / mods-enabled / * | minder

Een ander handig commando is staart, die is gemaakt om het laatste deel van bestanden uit te voeren. Deze opdracht is perfect om logboekhistories te doorzoeken. Standaard drukt dit staartcommando de laatste 10 regels af, en u kunt dit nummer wijzigen met behulp van de -n parameter.

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

Maar als u bijvoorbeeld een heleboel logbestanden hebt, hebt u iets krachtigers nodig om naar behoren te zoeken. Zoiets als grep-een programma dat leest van de standaardinvoer, test elke regel tegen een patroon en schrijft naar de standaarduitvoer de regels die bij dit patroon horen. Door het te gebruiken in combinatie met kat en pijpleidingen, je krijgt wat je wilt.

Als u tekstregels van uitvoer wilt filteren, kunt u de grep commando:

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

Zoals je kunt zien, grep is goed voor gebruik in pijpleidingen. In dit voorbeeld zal de laatste opdracht alle regels uitvoeren die de string "afsluiten" uit log-bestanden bevatten.

Bestand bewerken

Als u tekstbestanden in de consolemodus wilt bewerken, kunt u een van de drie meest populaire teksteditors gebruiken:

  • GNU nano, een kleine en vriendelijke standaard teksteditor, die een perfecte keuze is voor basistaken
  • Vim, een verbeterde teksteditor voor programmeurs, die het krachtigst is, maar complex voor beginners
  • mcedit, een full-featured editor met vensters van Midnight Commander, die eenvoudig te gebruiken is maar niet standaard op * NIX-systemen is geïnstalleerd

Vergelijk ze en maak uw keuze:

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

Archiveren

Soms moet u een back-up maken van sommige gegevens op uw server of deze comprimeren.

De meest voorkomende archiveringsprogramma's zijn teer en ritssluiting. Merk op dat de ritssluiting opdracht mag standaard niet op uw server worden geïnstalleerd.

U kunt een archief maken met de volgende opdrachten:

tar -zcvf archive-name.tar.gz directory-of-bestandsnaam tar -jcvf archive-name.tbz2 directory-of-bestandsnaam zip archive -name.zip directory-of-bestandsnaam

Als u alleen een lijst met bestanden in het archief wilt zien, kunt u de -l optie voor beide teer en uitpakken:

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

Of haal enkele bronbestanden uit:

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

Taken plannen

Als u wilt dat uw scripts periodiek worden uitgevoerd, moet u het hulpprogramma Cron gebruiken, dat wordt aangestuurd door een cron-tabel: een configuratiebestand dat de shellopdrachten opgeeft die periodiek moeten worden uitgevoerd volgens een bepaald schema. En de opdracht om cron-tabellen te onderhouden is crontab.

Crontab aanroepen met optie -l zal je cron-tabel laten zien.

Ook de -u optie is opgegeven om de naam te specificeren van de gebruiker van wie de crontab wordt gebruikt. Als u taken van uw webtoepassing gaat uitvoeren, is het beter om crontab voor gebruikers-www-gegevens te bewerken.

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

In deze uitvoer kunt u een voorbeeld van een cron-tabel bekijken. Zoals u kunt zien, is elke regel gepland per minuut, uur, dag van de maand, maand en dag van de week. Elk veld kan een asterisk zijn, wat betekent dat elke waarde van het veld. Ook kunt u sets en bereiken gebruiken met komma's en koppeltekens. Als een bereik met een schuine streep wordt gevolgd, worden de waarden van het nummer door het bereik overslaan. In dit voorbeeld wordt de eerste opdracht elke vijf minuten uitgevoerd en de tweede opdracht loopt van maandag tot vrijdag om 15:00 uur.

Om deze lijst te bewerken, start u crontab met de -e sleutel in plaats van -l. De cron-lijst wordt geopend in uw standaardeditor. Gebruik de -r optie om de cron-lijst te wissen.

Prestatie monitoring

Commando top toont systeemoverzichtsinformatie en biedt een dynamisch real-time overzicht van lopende systeemprocessen. druk op Shift-M om processen te sorteren op geheugengebruik, of Shift-P sorteren op CPU-gebruik.

top - 21:33:02 maximaal 308 dagen, 21:24, 1 gebruiker, gemiddelde belasting: 0,00, 0,01, 0,05 Taken: 87 totaal, 1 hardlopen, 86 slapen, 0 gestopt, 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 totaal, 471348 gebruikt, 30452 gratis, 49672 buffers KiB Swap: 4194300 totaal, 56192 gebruikt, 4138108 gratis. 149488 in de cache Mem PID GEBRUIKER PR NI VIRT RES SHR S% CPU% MEM TIJD + COMMAND 16269 www-gegevens 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 

Om de hoeveelheid vrij en gebruikt geheugen in het systeem weer te geven, gebruikt u de gratis commando. Voeg de toe -h optie om uitvoervelden weer te geven in een door mensen leesbaar formaat.

gebruiker @ server: ~ $ gratis -h totaal gebruikte gratis gedeelde buffers in de cache Mem: 490M 453M 36M 23M 46M 140M - / + buffers / cache: 265M 224M Ruil: 4.0G 54M 3.9G

Een ander handig commando is df, Dit is een opdracht om het gebruik van schijfruimte op het systeem te rapporteren. Je kunt het met de -een optie om alle bestandssystemen van uw server te tonen. Vergeet ook niet om de. Toe te voegen -h optie voor door mensen leesbaar formaat.

user @ server: ~ $ df -ah Bestandsformaat Gebruikt Beschikbaar Gebruik% gekoppeld aan / dev / vda1 20G 6.3G 13G 34% / udev 235M 4,0K 235M 1% / dev tmpfs 50M 344K 49M 1% / run

Commandoregelgeschiedenis

U kunt de !! commando om het vorige commando te herhalen, of gebruik sudo !! als je bent vergeten een opdracht uit te voeren met sudo.

gebruiker @ server: / var / www $ chmod 777 log chmod: permissies wijzigen van 'log': bewerking niet toegestaan ​​user @ server: / var / www $ sudo !! sudo chmod 777 log

Als u de syntaxis van opdrachten bent vergeten of zich lui voelt bij het typen van een grote opdrachtquery, kunt u deze gebruiken geschiedenis om uw opdrachtgeschiedenis weer te geven. Het is goed om deze opdracht te combineren met tekenopdrachten voor strings zoals grep, staart en anderen om precies te vinden wat je zoekt.

geschiedenis | staart geschiedenis | grep crontab geschiedenis | egrep -i 'ssh | ftp'

Conclusie

Het gebruik van de console is geen rocket science. Unix- en Linux-systemen zijn gemakkelijk te begrijpen en te gebruiken vanwege hun eenvoudige ontwerp en goede documentatie. Ik hoop dat dit artikel je behoorlijk comfortabel zal maken met de opdrachtregel en je naar het volgende niveau brengt om je webtoepassingen te beheren met de opdrachtregel.

Als u vragen heeft of als u uw favoriete console-opdrachten wilt delen, aarzel dan niet om een ​​reactie achter het artikel te plaatsen.

Verder lezen

  • Directory van Linux-opdrachten
  • Basishandleiding voor beginners
  • De terminal gebruiken
  • Hoe kan ik snel terminale commando's leren??
  • De commandoregel is je beste vriend