Hack #71. Grok and Optimize Your System with sysctl
Instead of interacting directly with /proc files, you can get and set kernel options in a flash with the sysctl command.
In days of old, sysctl referred to a header file or system call that C programmers could use to change kernel settings from a program. The files under /proc/sys/ are often collectively referred to as the sysctl interface, because they can be written to, and changes made to the files will be picked up by the running kernel without rebooting. This feature was implemented in the kernel as early as Version 2.0 (but don't quote me).
These days, sysctl is a kernel call, an interface, and a command that allows administrators to easily interact with the kernel. It also allows for a proper startup configuration file, so you don't have to rebuild kernels everywhere to disable IP forwarding, for example. Enabling and disabling IP forwarding was one of the first things I ever used the sysctl interface for. Enabling IP forwarding for your Linux router used to be done with a command like this:
# echo 1 > /proc/sys/net/ipv4/ip_forwardThe content of the file was "0" by default, indicating that forwarding was not turned on. Echoing a "1" into the file turned it on.
Enter the sysctl command. Now we can all easily see every single setting available to us through the interface with a simple command:
# sysctl -a net.ipv4.tcp_keepalive_time = 7200 net.ipv4.ipfrag_time = 30 net.ipv4.ip_dynaddr = 1 net.ipv4.ipfrag_low_thresh = 196608 ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access