![Cum se recuperează date dintr-un sistem de operare blocat](/f/fe471ab270e4354e49e045d8696d49bb.jpg?width=100&height=100)
În Partea 13 din aceasta Seria LFCS (Linux Foundation Certified Sysadmin) am explicat cum se utilizează GRUB pentru a modifica comportamentul sistemului prin trecerea opțiunilor la kernel pentru procesul de pornire în curs.
În mod similar, puteți utiliza linia de comandă într-un sistem Linux care rulează pentru a modifica anumiți parametri de execuție a nucleului ca o modificare unică sau permanent, editând un fișier de configurare.
Astfel, vi se permite să activați sau să dezactivați parametrii kernel-ului din mers fără prea multe dificultăți atunci când este necesar din cauza unei modificări necesare în modul în care se așteaptă ca sistemul să funcționeze.
Cea mai recentă specificație a Standard de ierarhie a sistemului de fișiere indică faptul că /proc
reprezintă metoda implicită pentru tratarea informațiilor despre proces și sistem, precum și alte informații despre nucleu și memorie. În special, /proc/sys
este locul unde puteți găsi toate informațiile despre dispozitive, drivere și unele caracteristici ale nucleului.
Structura internă reală a /proc/sys
depinde foarte mult de nucleul utilizat, dar este posibil să găsiți următoarele directoare în interior. La rândul lor, fiecare dintre ele va conține alte subdirectoare în care valorile pentru fiecare categorie de parametri sunt menținute:
dev
: parametrii pentru anumite dispozitive conectate la aparat.fs
: configurația sistemului de fișiere (cote și inode, de exemplu).net
: Configurarea Rețelei.vm
: utilizarea memoriei virtuale a nucleului.Pentru a modifica parametrii de runtime ai kernelului vom folosi sysctl
comanda. Numărul exact de parametri care pot fi modificați poate fi vizualizat cu:
# sysctl -a | wc -l.
Dacă doriți să vizualizați lista completă a parametrilor Kernel, faceți doar:
# sysctl -a
Deoarece ieșirea comenzii de mai sus va consta din MULTE linii, putem folosi o conductă urmată de mai puțin pentru a o inspecta mai atent:
# sysctl -a | Mai puțin.
Să aruncăm o privire asupra primelor rânduri. Vă rugăm să rețineți că primele caractere din fiecare linie se potrivesc cu numele directoarelor din interior /proc/sys
:
De exemplu, linia evidențiată:
dev.cdrom.info = numele unității: sr0.
indică faptul că sr0
este un alias pentru unitatea optică. Cu alte cuvinte, acesta este modul în care nucleul „vede”Care conduce și folosește acel nume pentru a se referi la el.
În secțiunea următoare vom explica cum să schimbați alți parametri de runtime kernel „mai importanți” în Linux.
Pe baza a ceea ce am explicat până acum, este ușor de văzut că numele unui parametru se potrivește cu structura de directoare din interior /proc/sys
unde poate fi găsit.
De exemplu:
dev.cdrom.autoclose → / proc / sys / dev / cdrom / autoclose. net.ipv4.ip_forward → / proc / sys / net / ipv4 / ip_forward.
Acestea fiind spuse, putem vizualiza valoarea unui anumit parametru kernel Linux folosind oricare sysctl
urmat de numele parametrului sau citirea fișierului asociat:
# sysctl dev.cdrom.autoclose. # cat / proc / sys / dev / cdrom / autoclose. # sysctl net.ipv4.ip_forward. # cat / proc / sys / net / ipv4 / ip_forward.
Pentru a seta valoarea pentru un parametru kernel putem folosi și sysctl
, dar folosind -w
opțiune și urmată de numele parametrului, semnul egal și valoarea dorită.
O altă metodă constă în utilizarea ecou
pentru a suprascrie fișierul asociat cu parametrul. Cu alte cuvinte, următoarele metode sunt echivalente pentru a dezactiva funcționalitatea de redirecționare a pachetelor din system (care, apropo, ar trebui să fie valoarea implicită atunci când o casetă nu ar trebui să treacă traficul între rețele):
# echo 0> / proc / sys / net / ipv4 / ip_forward. # sysctl -w net.ipv4.ip_forward = 0.
Este important să rețineți că parametrii kernelului sunt setați utilizând sysctl
va fi pusă în aplicare numai în timpul sesiunii curente și va dispărea la repornirea sistemului.
Pentru a seta aceste valori permanent, editați /etc/sysctl.conf
cu valorile dorite. De exemplu, pentru a dezactiva redirecționarea pachetelor în /etc/sysctl.conf asigurați-vă că această linie apare în fișier:
net.ipv4.ip_forward = 0.
Apoi executați următoarea comandă pentru a aplica modificările la configurația care rulează.
# sysctl -p.
Alte exemple de parametri importanți ai runtime-ului kernelului sunt:
fs.file-max
specifică numărul maxim de mânere de fișiere pe care nucleul le poate aloca sistemului. În funcție de utilizarea intenționată a sistemului dvs. (web / bază de date / server de fișiere, pentru a numi câteva exemple), poate doriți să modificați această valoare pentru a satisface nevoile sistemului.
În caz contrar, veți primi un „Prea multe fișiere deschise”Mesaj de eroare în cel mai bun caz și poate împiedica sistemul de operare să pornească cel mai rău.
Dacă din cauza unei greșeli nevinovate vă aflați în această ultimă situație, porniți în modul single user (așa cum este explicat în Partea 13 - Configurarea și depanarea Linux Grub Boot Loader) și editați /etc/sysctl.conf conform instrucțiunilor anterioare. Pentru a seta aceeași restricție pe bază de utilizator, consultați Partea 14 - Monitorizați și setați utilizarea limită a proceselor Linux din această serie.
kernel.sysrq
este utilizat pentru a activa SysRq tasta din tastatură (cunoscută și sub numele de tastă ecran de imprimare), astfel încât să permită anumitor combinații de taste să invoce acțiuni de urgență atunci când sistemul nu mai răspunde.
Valoarea implicită (16) indică faptul că sistemul va onora Tasta Alt + SysRq +
combinație și efectuați acțiunile enumerate în sysrq.c documentație găsită în kernel.org (unde cheia este o literă în intervalul b-z). De exemplu, Alt + SysRq + b
va reporni sistemul cu forță (utilizați acest lucru ca ultimă soluție dacă serverul dvs. nu răspunde).
Avertizare! Nu încercați să apăsați această combinație de taste pe o mașină virtuală, deoarece poate forța sistemul gazdă să repornească!
Când este setat la 1, net.ipv4.icmp_echo_ignore_all va ignora cererile de ping și le va scădea la nivelul nucleului. Acest lucru este prezentat în imaginea de mai jos - rețineți cum se pierd cererile de ping după setarea acestui parametru kernel:
Se folosește o modalitate mai bună și mai ușoară de a seta parametrii individuali de execuție .conf fișiere în interior /etc/sysctl.d
, grupându-le pe categorii.
De exemplu, în loc de setare net.ipv4.ip_forward = 0 și net.ipv4.icmp_echo_ignore_all = 1 în /etc/sysctl.conf, putem crea un nou fișier numit net.conf
interior /etc/sysctl.d:
# echo "net.ipv4.ip_forward = 0"> /etc/sysctl.d/net.conf. # echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.d/net.conf.
Dacă alegeți să utilizați această abordare, nu uitați să eliminați aceleași linii din /etc/sysctl.conf
.
În acest articol am explicat cum să modificați parametrii de execuție a nucleului, atât persistenți, cât și non-persistenți, folosind sysctl, /etc/sysctl.conf, și fișiere în interior /etc/sysctl.d.
În sysctl docs puteți găsi mai multe informații despre semnificația mai multor variabile. Aceste fișiere reprezintă cea mai completă sursă de documentare despre parametrii care pot fi setați prin sysctl.
Ați găsit util acest articol? Sperăm cu siguranță că ai făcut-o. Nu ezitați să ne anunțați dacă aveți întrebări sau sugestii de îmbunătățit.