sysctl - sysctl
| Scris in | C |
|---|---|
| Sistem de operare | Unix-like (BSD) |
| Tip | Configurarea sistemului |
sysctl este un utilitar software al unor sisteme de operare de tip Unix , care citește și modifică atributele kernelului sistemului, cum ar fi numărul versiunii sale, limitele maxime și setările de securitate. Este disponibil atât ca apel de sistem pentru programe compilate, cât și ca comandă de administrator pentru utilizare interactivă și scriptare. Linux expune în plus sysctl ca un sistem de fișiere virtual .
BSD
În BSD, acești parametri sunt în general obiecte dintr-o bază de informații de gestionare (MIB) care descriu limite reglabile precum dimensiunea unui segment de memorie partajată, numărul de fire pe care sistemul de operare le va folosi ca client NFS sau numărul maxim de procese pe sistem; sau descrieți, activați sau dezactivați comportamente precum redirecționarea IP , restricții de securitate pentru superutilizator („securelevel”) sau ieșirea de depanare.
În OpenBSD și DragonFly BSD , sysctl este, de asemenea, utilizat ca strat de transport pentru cadrul hw.sensors pentru monitorizarea hardware , în timp ce NetBSD folosește apelul de sistem ioctl pentru omologul său sysmon envsys . Atât sysctl, cât și ioctl sunt cele două apeluri de sistem care pot fi utilizate pentru a adăuga funcționalități suplimentare kernelului fără a adăuga încă un apel de sistem ; de exemplu, în 2004 cu OpenBSD 3.6, când a fost introdus utilitarul tcpdrop , sysctl a fost folosit ca apel de sistem de bază. În FreeBSD , deși nu există un cadru de senzori, temperatura individuală și alți senzori sunt încă exportați în mod obișnuit prin arborele sysctl prin Newbus , de exemplu, cum este cazul aibs(4)driverului disponibil în toate cele 4 sisteme BSD, inclusiv FreeBSD.
În BSD, un apel de sistem sau un sistem de ambalare a apelurilor de sistem este de obicei furnizat pentru utilizare de către programe, precum și un program administrativ și un fișier de configurare (pentru setarea parametrilor reglabili la pornirea sistemului ).
Această caracteristică a apărut pentru prima dată în 4.4BSD . Are avantajul față de constantele codate pe hard, că modificările parametrilor pot fi făcute dinamic, fără a recompila nucleul.
Din punct de vedere istoric, deși variabilele kernel-urilor în sine ar putea fi modificate prin sysctl, elementele care cuprind MIB- ul arborelui sysctl au fost codificate la momentul compilării și, începând din 2019, este în mare parte cazul OpenBSD (cu unele excepții precum hw.sensors , care gestionează și oferă propriul subarborel dinamic). FreeBSD are „magie internă sysctl” pentru managementul dinamic al arborelui sysctl din 1995; NetBSD are propria implementare a unui arbore din sistem dinamic din decembrie 2003.
Linux
În Linux, mecanismul de interfață sysctl este , de asemenea , exportate ca parte a procfs sub / proc / sys directorul ( a nu se confunda cu / sys director ). Această diferență înseamnă că verificarea valorii unui parametru necesită deschiderea unui fișier într-un sistem de fișiere virtual , citirea conținutului acestuia, analizarea acestora și închiderea fișierului. Apelul de sistem sysctl există pe Linux, dar a fost depreciat și nu are o funcție de împachetare în glibc ; este de obicei indisponibil din cauza numeroaselor distribuții care configurează nucleul fără CONFIG_SYSCTL_SYSCALL; deci nu este recomandat pentru utilizare.
Exemple
Când redirecționarea IP este activată, nucleul sistemului de operare va acționa ca un router . În FreeBSD , NetBSD , OpenBSD , DragonFly BSD și Darwin / Mac OS X , parametrul net.inet.ip.forwarding poate fi setat la 1 pentru a activa acest comportament. În Linux, parametrul se numește net.ipv4.ip_forward .
În majoritatea sistemelor, comanda sysctl -w parametru = 1 va permite un anumit comportament. Aceasta va persista până la următoarea repornire. Dacă comportamentul trebuie activat ori de câte ori sistemul pornește, parametrul de linie = 1 poate fi adăugat / rescris în fișierul /etc/sysctl.conf . În plus, unele variabile sysctl nu pot fi modificate după ce sistemul este pornit. Aceste variabile (în funcție de variabilă, versiunea și aroma BSD) trebuie fie setate static în nucleu în timpul compilării, fie setate în /boot/loader.conf .
Vezi si
Referințe
linkuri externe
- sysctl (2) în OpenBSD
- sysctl (3) în FreeBSD, NetBSD, DragonFly BSD
- sysctl (7) în NetBSD
- sysctl (8) în * BSD
- sysctl (9) în FreeBSD, DragonFly și NetBSD
- - Manualul programatorului Linux - Administrare și comenzi privilegiate
- - Manualul programatorului Linux - Apeluri de sistem
- sysctl-explorer.net - O inițiativă pentru a facilita accesul la documentația de referință sysctl Linux