Nyttiga * NIX Shell-kommandon för webbutvecklare

Så, varför * NIX och varför behöver du gå till konsolen?

Enligt statistiken från W3Techs används Unix av 68% av alla webbplatser vars operativsystem de känner till. Det innebär att om du är webbutvecklare körs din kod förmodligen på en Linux-server. Och åtminstone behöver du veta hur du konfigurerar och felsöker din kod på Unix och Linux-system. Låt oss ta reda på vad du behöver veta för att trivas på kommandoraden.

Det grundläggande

Det grundläggande * NIX-kommandot består av tre komponenter:

  • kommando eller program att köra
  • alternativ att ändra eller specificera beteendet hos kommandot
  • argument eller inmatningsdata som behövs för att köra kommandot   

Till exempel om du behöver få en lista med filer i katalogen I / var / www, du måste köra kommandot ls med argumentet / Var / www. För att lägga till storleken på filer till utmatningen måste du lägga till -s alternativet, och det slutliga kommandot kommer att se ut så här:

ls-s / var / www

I / O-omdirigeringar och rörledningar

Många * NIX-kommandon använder textinmatning och -utmatning som du kan hantera med, och den stora funktionen med detta är att du kan skicka kommandans resultat till en fil med omdirigering eller ens överföra utmatningen från ett kommando till inmatningen av ett annat kommando med hjälp av rörledningarna. Till exempel kan vi mata kommandot från föregående exempel till en fil:

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

Detta kommando kommer att skapa eller radera filen /var/www/files.txt och mata ut en lista med filer i / Var / www katalogen. Här är en lista över vanliga I / O-omdirigeringar och pipeliner:

  • > Omdirigera utmatning från ett kommando till en fil på disken. Filen raderas och skrivs över.
  • >> Samma omdirigering, men lägger till utdatafilen.
  • < Få inmatning för att kommandot från en fil.
  • | Passera utgången från ett kommando till ingången till ett annat kommando.
  • tee Båda omdirigera utdata till en fil och skicka den till nästa kommando i pipelinen.

Huvudkommandon

För att få manuella sidor för ett kommando, kör man. Manuella sidor följer en gemensam layout och kan innehålla namn, synopsis, beskrivning och användningsexempel. Detta visar dokumentationen för chmod kommando:

man chmod

För att utföra vissa kommandon som att spara konfigurationer eller starta om processer måste du köra dem som superanvändare. För att göra detta måste du förbeställa sudo till ditt kommando:

user @ server: / var / www $ chmod 777 logg chmod: Ändra behörigheter för 'logg': Användning ej tillåten användare @ server: / var / www $ sudo chmod 777 log sudo chmod 777 logg

Om du behöver exekvera en massa kommandon som en superanvändare kan du använda su, eller byt användarkommando.

användare @ server: / var / www $ su Lösenord: root @ server: / var / www #

Notera: För att spara säkerhetslagret och undvika oavsiktligt utförande av anmärkningsvärda kommandon, använd inte sudo och su utan något syfte.

In i den verkliga världen

Grundläggande navigering

Det finns tre huvudkommandon att navigera i filträdet:

  • pwd för att skriva ut namnet på den aktuella arbetsmappen
  • CD att byta katalog
  • ls att lista kataloginnehåll

Här är ett exempel på att använda dessa kommandon med utgången av terminalen:

user @ server: ~ $ pwd / home / user user @ server: ~ $ cd / var / www användare @ server: / var / www $ ls -alF totalt 16 drwxr-xr-x 5 rot rot 4096 jan 22 09:45 ./ drwxr-xr-x 14 rot rot 4096 jan 22 09: 38 ... / drwxr-xr-x 2 rot rot 4096 jan 22 09:45 html / drwxr-xr-x 3 rot rot 4096 jan 22 09:45 log / drwxrwxrwx 1 användaranvändare 442 mar 24 12:22 testning /

Söka efter filer

Där är hitta kommando för att söka efter filer i en kataloghierarki. Det här kommandot är mycket kraftfullt och kan söka efter filer och kataloger med namn, behörigheter, datum och storlek.

Hitta alla kataloger med "loggar" -namnet i / Var / www katalog med hjälp av -typ alternativ:

hitta / var / www-typ d-name loggar

För att söka efter PHP-filer i den aktuella katalogen, lägg till -namn alternativ:

hitta. -typ f-namn "* .php"

Hitta filer med definierade behörigheter med hjälp av -perm alternativ:

hitta. -typ f-perm 0777-print

Hitta alla filer som är större än 500 MB:

hitta / -size + 500M

Naturligtvis kan du kombinera alla dessa alternativ i ett kommando, och detta är bara grunderna i hitta kommando, vilket är ett mycket kraftfullt verktyg för att söka efter filer. Använd manuella sidor för att få mer information.

Manipulera filer och mappar

Det finns fem huvudkommandon för att manipulera filer och mappar i * NIX-system:

  • Rör används för att ändra tidsstämplar på befintliga filer och kataloger, men det här är också det enklaste sättet att skapa en ny fil
  • mkdir att göra kataloger
  • cp att kopiera filer och kataloger
  • mv att flytta eller byta namn på filer och kataloger
  • rm att radera filer och mappar

Nästa exempel kommer att skapa en fil index.html, kopiera den här filen till den nya katalogen i I / var / www, och ta bort källfilen.

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

Ett annat stort kommando är ln, som är utformad för att skapa länkar mellan filer. Kommandot ln används ofta för att skapa en symbolisk länk för att möjliggöra en virtuell värd:

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

Ändra åtkomstbehörigheter

För att ändra filens ägare och grupp, använd chown. Glöm inte att ge ägaren till apache-användaren när du skapar en ny virtuell värd för din webbapplikation:

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

Ibland måste cache- eller loggkataloger för din ansökan vara skrivbar för alla användare, så du måste ändra åtkomstlägen till 777 med chmod kommando. Lägg till -R möjlighet att lägga till tillstånd för alla kapslade filer och mappar.

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

Om du bara vill göra en fil körbar, använd chmod med +x alternativ.

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

Filläsning

För att visa filer i konsolen kan du använda katt kommando. Med katt, Du kan sammanfoga filer innehåll med extra parametrar, och du kan också använda mask i filnamn.

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

Men katt Kommandot får dig att bli förvirrad mycket snabbt, eftersom den visar utdata i råformat utan någon sökning - så det är obekvämt att använda med loggutmatning. För att få ett filter för sökning via text en skärm i taget ska du använda Mer eller mindre kommandon, som är mycket av en muchness.

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

Ett annat användbart kommando är svans, som skapas för att mata ut den sista delen av filer. Detta kommando är perfekt för att titta igenom logghistorier. Som standard skriver denna svängkommando de senaste 10 raderna, och du kan ändra det här numret med -n parameter.

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

Men om du till exempel har en massa loggfiler behöver du något kraftfullare för att göra en ordentlig sökning. Något liknande grep-ett program som läser från standardinmatning, testar varje rad mot ett mönster och skriver till linjer som matchar det här mönstret till standardutmatningen. Genom att använda den i kombination med katt och rörledningar, får du vad du vill ha.

Om du vill filtrera textlinjer med utgång, kan du använda grep kommando:

grep notice /var/log/apache2/error.log cat /var/log/apache2/*.log | grep "stänger av"

Som du kan se, grep är bra för användning i rörledningar. I det här exemplet kommer det sista kommandot att mata ut alla rader som innehåller "stänga" strängen från loggfiler.

Filredigering

Om du vill redigera textfiler i konsolläge kan du använda en av de tre mest populära textredigerarna:

  • GNU nano, en liten och vänlig standardtextredigerare, vilket är ett perfekt val för grundläggande uppgifter
  • vim, en förbättrad programmers textredigerare, som är mest kraftfull men komplex för nybörjare
  • mcedit, en komplett windowed editor från Midnight Commander, som är lätt att använda men inte installerat som standard på * NIX-system

Jämför dem och gör ditt val:

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

arkivering

Ibland behöver du säkerhetskopiera eller komprimera vissa data på din server.

De vanligaste arkiveringsverktygen är tjära och blixtlås. Observera att blixtlås Kommandot kan inte installeras på din server som standard.

Du kan skapa ett arkiv med följande kommandon:

tar -zcvf arkiv-namn.tar.gz katalog-eller-fil-namn tar -jcvf arkiv-name.tbz2 katalog-eller-fil-namn zip arkiv-name.zip katalog-eller-fil-namn

Om du bara vill se en lista med filer i arkivet kan du använda -l alternativ för båda tjära och packa upp:

tar -ztvf arkiv-namn.tar.gz tar -jtvf arkiv-namn.tbz2 unzip -l arkivnamn.zip

Eller extrahera vissa källfiler:

tjär-zxvf arkiv-namn.tar.gz tar -jxvf arkiv-namn.tbz2 zip arkiv-name.zip

Schemaläggningsuppgifter

Om du vill schemalägga dina skript regelbundet måste du använda Cron-verktyget, som drivs av ett cron-bord - en konfigurationsfil som anger shellkommandon för att löpa regelbundet på ett visst schema. Och kommandot att behålla cron tabeller är crontab.

Ringa crontab med alternativ -l kommer att visa ditt cron bord.

Även -u alternativet anges för att ange namnet på den användare vars crontab används. Om du ska köra uppgifter i din webbapplikation är det bättre att redigera crontab för användaren www-data.

användare @ server: ~ $ sudo crontab -lu www-data # mh dom mon dow kommando * / 5 * * * * php5 / var / www / yii gör / uppgifter >> /var/www/tasks.log 00 15 * * 1-5 /var/www/backuper.sh

I den här utgången kan du titta på ett exempel på ett cron-bord. Som du kan se är varje rad planerad efter minut, timme, dag månad, månad och veckodag. Varje fält kan vara en asterisk, vilket betyder att varje värde av fältet. Du kan också använda uppsättningar och intervall med kommatecken och bindestreck. Efter ett intervall med ett snedstreck övergår spårets värde genom intervallet. I det här exemplet kommer det första kommandot att köras var femte minut och det andra kommandot körs från måndag till fredag ​​klockan 15:00.

För att redigera den här listan, kör crontab med -e nyckeln istället för -l. Cronlistan öppnas i din standardredigerare. Använd -r möjlighet att rensa cronlistan.

Prestandaövervakning

Kommando topp visar system summarisk information och ger en dynamisk visning i realtid av körsystemprocesser. Tryck Skift-M för att sortera processer genom minnesanvändning, eller Skift-P att sortera efter CPU-användning.

topp - 21:33:02 upp 308 dagar, 21:24, 1 användare, belastningsgenomsnitt: 0.00, 0.01, 0.05 Uppgifter: 87 totalt, 1 löpning, 86 sovande, 0 stoppade, 0 zombie% Cpu: 0.3 us 0,0 0,01, 0,07, 0,07, 0,01, 0,07, 0,01, 0,01, 0,07 KiB Mem: 501800 totalt, 471348 använd, 30452 fri, 49672 buffertar KiB Byte: 4194300 totalt, 56192 använd, 4138108 fri. 149488 cachad Mem PID ANVÄNDARE 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 rot 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 

För att visa mängden ledigt och nytt minne i systemet, använd fri kommando. Lägg till -h möjlighet att visa utmatningsfält i läsbar format.

user @ server: ~ $ free -h totalt använda gratis delade buffertar cachade Mem: 490M 453M 36M 23M 46M 140M - / + buffertar / cache: 265M 224M Byte: 4.0G 54M 3.9G

Ett annat användbart kommando är df, vilket är ett kommando för att rapportera användning av filsystemets diskutrymme. Du kan ringa det med -en möjlighet att visa alla filsystem på din server. Glöm inte att lägga till -h alternativ för mänskligt läsbart format.

user @ server: ~ $ df -ah Filsystem Storlek Används Avail Använd% Monterad på / dev / vda1 20G 6.3G 13G 34% / udev 235M 4.0K 235M 1% / dev tmpfs 50M 344K 49M 1% / körning

Kommandoradshistorik

Du kan använda !! Kommando att upprepa föregående kommando, eller använd sudo !! om du glömde att köra ett kommando med sudo.

user @ server: / var / www $ chmod 777 logg chmod: Ändra behörigheter för "logg": Användning ej tillåten användare @ server: / var / www $ sudo !! sudo chmod 777 logg

Om du glömde kommandot syntax eller känner dig lat om att skriva en stor kommandonfråga kan du använda historia för att visa din kommandoradshistorik. Det är bra att kombinera detta kommando med strängar filterkommandon som grep, svans och andra att hitta exakt vad du vill ha.

historia | svanshistoria | grep crontab historia | egrep -i 'ssh | ftp'

Slutsats

Att använda konsolen är inte raketvetenskap. Unix och Linux-system är lätt att förstå och använda på grund av sin enkla design och god dokumentation. Jag hoppas att den här artikeln kommer att göra dig ganska bekväm med kommandoraden och ta dig till nästa nivå för att hantera dina webbapplikationer med kommandoraden.

Om du har några frågor eller vill dela dina favoritkonsolkommandon, tveka inte att lämna en kommentar under artikeln.

Vidare läsning

  • Katalog över Linux-kommandon
  • Bash Guide för nybörjare
  • Använda terminalen
  • Hur kan jag snabbt lära terminalkommandon?
  • Kommandoraden är din bästa vän