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.
Het basis * NIX-commando bestaat uit drie componenten:
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
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.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.
Er zijn drie hoofdopdrachten om door de bestandsstructuur te navigeren:
pwd
om de naam van de huidige werkdirectory af te drukkenCD
om van map te veranderenls
om de inhoud van de map te vermeldenHier 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 /
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.
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 makenmkdir
om mappen te makencp
om bestanden en mappen te kopiërenmv
om bestanden en mappen te verplaatsen of hernoemenrm
om bestanden en mappen te verwijderenIn 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
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
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.
Als u tekstbestanden in de consolemodus wilt bewerken, kunt u een van de drie meest populaire teksteditors gebruiken:
Vergelijk ze en maak uw keuze:
nano /var/log/apache2/error.log vim /var/log/apache2/error.log mcedit /var/log/apache2/error.log
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
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.
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
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'
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.