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 * NIX-kommandot består av tre komponenter:
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
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.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.
Det finns tre huvudkommandon att navigera i filträdet:
pwd
för att skriva ut namnet på den aktuella arbetsmappenCD
att byta katalogls
att lista kataloginnehållHä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 /
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.
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 filmkdir
att göra katalogercp
att kopiera filer och katalogermv
att flytta eller byta namn på filer och katalogerrm
att radera filer och mapparNä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
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
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.
Om du vill redigera textfiler i konsolläge kan du använda en av de tre mest populära textredigerarna:
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
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
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.
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
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'
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.