Cara membaca dan mengubah nilai parameter kernel menggunakan sysctl
- 1423
- 418
- Dwayne Hackett
Sysctl adalah utilitas yang dipasang secara default di semua distribusi Linux modern. Ini digunakan untuk membaca dan menulis nilai parameter kernel saat runtime; Parameter yang tersedia adalah yang terdaftar di bawah /Proc
sistem semu-pseudo, dan khususnya di bawah /proc/sys
direktori. Dalam artikel ini kita belajar cara menggunakan utilitas ini, cara membuat perubahan bertahan reboot, dan cara memuat pengaturan dari file "secara manual".
Dalam tutorial ini Anda akan belajar:
- Cara membaca nilai parameter kernel
- Cara memodifikasi nilai parameter kernel saat runtime
- Cara membuat perubahan bertahan reboot
- Cara memuat pengaturan dari file secara manual
Persyaratan dan konvensi perangkat lunak yang digunakan
Kategori | Persyaratan, konvensi atau versi perangkat lunak yang digunakan |
---|---|
Sistem | Distribusi Independen |
Perangkat lunak | sysctl |
Lainnya | Hak istimewa root untuk memodifikasi parameter kernel |
Konvensi | # - mensyaratkan Linux -Commands untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah$-mensyaratkan Linux-Commands untuk dieksekusi sebagai pengguna reguler yang tidak istimewa |
Membaca Nilai Kernel
Perilaku kernel Linux dapat diubah dengan memodifikasi nilai beberapa parameter, bahkan saat runtime. Parameter yang tersedia adalah yang dapat diakses melalui /Proc
sistem semu, di bawah /proc/sys
direktori. Kita bisa menggunakan pohon
Perintah untuk mendapatkan ide tentang kontennya:
$ tree /proc /sys /proc /sys ├── abi │ └── vsyscall32 ├── crypto │ └── fips_enabled ├── debug │ ├── kecuali │ └ └ ─ uman ilangan │ ├── cdrom │ │ ├── Autoklose │ │ ├── AutoeJek AutoeTeT │ │ ─ urs olak -├ │ ├ ─ uas tol │ │ ├ ─ ─ ─ ─ ─ ─ ─ └ └ └ └ └ ─ ─ ─ ─ ─ ─ ─ ─ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ─ ├ ├ ─ ├ ├ ├ ├ ├ ├ ├ ─ ├ ─ └ ├ ├ ├ ├ └ ├ ├ ├ ├ └ └ └ ├ ├ ├ └ └ ├ ├ └ ├ ├ └ └ └ └ └ ├ └ ├ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ ─ MAX-USER-FREQ │ ├── i915 │ │ ├── oA_max_sample_rate │ │ └ ─ urstream_paranoid │ ├ ├ │ │ └ └ └ │ └ └ │ └ └ └ └ └ │ └ └ │ └ └ └ └ └ └ └ └ └ └ └ └ │ └ └ └ └ └ └ └ └ │ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ │ └ └ └ RAID │ │ ├── speed_limit_max │ │ └── speed_limit_min │ ├── scsi │ └ └── ilangan olaket │ └ └ ─ ─ └ └ ─ potin ilangan ldisc_autoload […
Output dari perintah di atas dipotong karena alasan yang jelas, tetapi memberikan gambaran tentang apa yang kita bicarakan. Saat sysctl dipanggil dengan -A
opsi, (pendek untuk --semua
), ini mencetak nilai semua parameter kernel yang tersedia:
$ sysctl sysctl -a abi.vsyscall32 = 1 crypto.fips_enabled = 0 debug.Pengecualian-jejak = 1 debug.kprobes-optimization = 1 dev.CD ROM.autoclose = 1 dev.CD ROM.Autoeject = 0 dev.CD ROM.check_media = 0 […]
Jika kita ingin membaca nilai parameter tertentu, yang harus kita lakukan adalah memohon sysctl
dan memberikan nama parameter yang ingin kami periksa nilainya sebagai argumen. Misalnya, untuk membaca nilai serangan saat ini speed_limit_max
parameter, yang tertulis di /proc/sys/dev/raid/speed_limit_max
file, kami akan menjalankan:
$ sysctl dev.serangan.speed_limit_max dev.serangan.speed_limit_max = 200000
Ketika menggunakan sysctl
Dalam skrip, atau saat menggunakan outputnya dalam pipa, kami mungkin ingin menjalankannya dengan -N
opsi, yang merupakan bentuk pendek dari (--nilai
). Opsi ini hanya membuat nilai saat ini dari parameter yang diminta
dikembalikan saat kueri dilakukan; Nama kunci dihilangkan:
$ sysctl -n dev.serangan.speed_limit_max 200000
Memodifikasi parameter kernel
Sama seperti kita dapat membaca parameter kernel, kita dapat mengubah nilainya saat runtime menggunakan sysctl
. Sintaks yang akan digunakan saat kita ingin melakukan tindakan seperti itu, sangat sederhana:
variabel sysctl = nilai
Kami cukup memohon perintah dan memberikan nama variabel dan nilai yang ingin kami tetapkan untuk itu. Meskipun kita tidak perlu hak istimewa yang ditinggikan untuk membaca nilai parameter kernel, kita perlu mengawali perintah dengan sudo (atau menjalankannya sebagai pengguna root secara langsung) untuk mengubah nilainya. Hanya sebagai contoh, anggaplah kita ingin mengubah nilai dev.CD ROM.AutoeTek
dan atur ke 1; Kami akan menulis:
$ sudo sysctl dev.CD ROM.Autoeject = 1
Ketika kita mengubah nilai parameter kernel, jika perintah dieksekusi dengan benar, set nilai ditampilkan ke stdout (output standar). Sebagai output dari perintah yang digunakan dalam contoh di atas, kita akan melihat:
dev.CD ROM.Autoeject = 1
Perilaku seperti itu dapat diubah dengan memohon sysctl dengan -Q
opsi (pendek untuk --diam
).
Membuat perubahan bertahan reboot
Modifikasi yang kami buat dengan sysctl saat runtime tidak gigih, dan akan hilang saat kami mem -boot ulang sistem. Untuk membuat perubahan bertahan dari acara seperti itu, kita perlu menulisnya dalam file di salah satu direktori khusus. Apa itu
direktori? Dalam urutan prioritas:
- /etc/sysctl.D
- /run/sysctl.D
- /usr/lib/sysctl.D
File yang hosting pengaturan harus memiliki .conf
ekstensi dan diurutkan dan dimuat saat boot oleh Systemd-Sysctl
layanan, di Leksikografi pesanan, tidak peduli direktori tempat mereka ditempatkan.
Jika file dengan nama yang sama ada di beberapa direktori, hanya pengaturan yang ada di yang ditempatkan di direktori dengan prioritas yang lebih tinggi akan dimuat. Ini pada dasarnya berarti bahwa jika kita ingin mengganti file sepenuhnya, kita harus menempatkan file dengan nama yang sama di direktori dengan prioritas yang lebih tinggi; Jika kami ingin mengubah pengaturan tertentu, sebagai gantinya, kami dapat memilih untuk menulisnya dalam file dengan nama yang akan menyebabkannya dimuat setelah yang di mana parameternya awalnya diatur.
Itu /usr/lib/sysctl.D
Direktori dimaksudkan untuk meng -host pengaturan "vendor", kita jarang mengubah isinya. Dalam sebagian besar kasus kami ingin menempatkan file kami di dalam /etc/sysctl.D
direktori, yang dicadangkan untuk perubahan yang dilakukan
oleh administrator sistem.
Mari kita lihat contohnya. Misalkan kita ingin mengubah kernel Swappiness nilai. Seperti yang kita ketahui, nilai parameter ini menentukan seberapa sering kernel Linux menyalin Ram Konten ke ruang swap. Kisaran nilai yang dapat ditetapkan untuk parameter ini 0
ke 100
: Nilai yang lebih tinggi berarti penggunaan pertukaran yang lebih sering dan agresif. Untuk mengubah nilai parameter ini secara permanen, kami membuat /etc/sysctl.d/99-swappiness.conf
mengajukan; Di dalamnya kami menulis:
vm.Swappiness = 1
Karena, seperti yang kami katakan, file dimuat dalam urutan leksikografi, karena namanya, kami dapat yakin file tersebut akan dimuat cukup akhir -akhir ini, dan pengaturannya akan diterapkan seperti yang diharapkan.
Muat pengaturan dari file secara manual
Karena di sini kita melihat cara mengubah nilai parameter kernel saat runtime, dan bagaimana membuat perubahan bertahan reboot dengan menulisnya dalam file dengan .conf
perpanjangan. Bagaimana jika kita ingin memuat pengaturan yang ditulis di dalam file "secara manual", tanpa perlu me -reboot sistem dan tanpa memuat ulang Systemd-Sysctl
melayani? Yang harus kita lakukan adalah memohon sysctl dengan -P
pilihan (--memuat
) dan lewati jalur file yang menampung pengaturan sebagai argumen. Sama seperti sebuah contoh, misalkan kita ingin memuat konten /etc/sysctl.d/99-swappiness.conf
file yang kami buat di contoh sebelumnya; Kami akan menjalankan:
$ sudo sysctl -p /etc /sysctl.d/99-swappiness.conf
Jika sysctl dipanggil dengan -P
opsi, tetapi tidak ada argumen yang disediakan, memuat pengaturan dari /etc/sysctl.conf
file (symlink yang menunjuk ke file ini, bernama 99-SYSCTL.conf
ada di /etc/sysctl.D
direktori).
Kesimpulan
Dalam artikel ini kami belajar cara menggunakan sysctl utilitas untuk membaca dan mengubah nilai beberapa parameter kernel saat runtime. Kami juga melihat cara membuat perubahan pada parameter ini bertahan reboot, dengan menulisnya dalam file dengan .conf
ekstensi, yang seharusnya ditempatkan di direktori tertentu, dan cara memuat pengaturan yang ditulis dalam file "secara manual". Dengan mengubah nilai parameter kernel, kita dapat mengubah sistem kita dan membuatnya bekerja persis seperti yang kita butuhkan. Kita dapat, misalnya, seperti yang kita lihat dalam tutorial sebelumnya, memungkinkan semua atau beberapa fungsi sysrq.
Tutorial Linux Terkait:
- Pengantar Otomatisasi Linux, Alat dan Teknik
- Hal -hal yang harus diinstal pada ubuntu 20.04
- Menguasai loop skrip bash
- Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
- Cara mengoptimalkan masa pakai baterai laptop dengan TLP di Linux
- Tutorial debugging GDB untuk pemula
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
- Seberapa sering Anda harus me -reboot server linux Anda?
- Cara Dual Boot Kali Linux dan Windows 10
- Loop bersarang dalam skrip bash
- « Mint 20 lebih baik dari ubuntu dan microsoft windows?
- Cara menggunakan perintah tcpdump di linux »