Linux中系统参数修改命令sysctl的使用讲解

sysctl配置与显示在/proc/sys目录中的内核参数.可以用sysctl来设置或重新设置联网功能,如IP转发、IP碎片去除以及源路由检查等。用户只需要编辑/etc/sysctl.conf文件,即可手工或自动执行由sysctl控制的功能。

命令格式:
    sysctl [-n] [-e] -w variable=value
    sysctl [-n] [-e] -p  (default /etc/sysctl.conf)
    sysctl [-n] [-e] -a
   
常用参数的意义:
    -w   临时改变某个指定参数的值,如
         sysctl -w net.ipv4.ip_forward=1
    -a   显示所有的系统参数
    -p   从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
    如果仅仅是想临时改变某个系统参数的值,可以用两种方法来实现,例如想启用IP路由转发功能:
    1) #echo 1 > /proc/sys/net/ipv4/ip_forward
    2) #sysctl -w net.ipv4.ip_forward=1
    以上两种方法都可能立即开启路由功能,但如果系统重启,或执行了
    # service network restart
命令,所设置的值即会丢失,如果想永久保留配置,可以修改/etc/sysctl.conf文件
将 net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1

常见用法

修改(配置)方法有三种
临时生效2种

代码如下:

# echo 1 > /proc/sys/net/ipv4/ip_forward // 开启路由功能
# sysctl -w net.ipv4.ip_forward=1 // 用此选项来改变一个sysctl设置

如果系统重启,或执行service network restart命令,所设置的值即会丢失
/proc目录下的所有内容都是临时性的, 所以重启动系统后任何修改都会丢失。
永久生效1种

代码如下:

# vi /etc/sysctl.conf

修改net.ipv4.ip_forward=0的值为1 // 打开数据包的转发功能

代码如下:

# sysctl -p /etc/sysctl.conf // 重新载入/etc/sysctl.conf文件,如-p后未指定路径,则载入/etc/sysctl.conf

指定的值在系统进入多用户模式之后被设定。并不是所有的变量都可以在这个模式下设定。
sysctl 变量的设置通常是字符串、数字或者布尔型。 (布尔型用 1 来表示'yes',用 0 来表示'no')。

代码如下:

[root@Firewall sys]# sysctl -a //查看所有参数
[root@Firewall sys]# sysctl net.core.wmem_max //查看指定的参数
net.core.wmem_max = 131071
[root@Firewall sys]# sysctl net.core.wmem_max=256000 //修改指定的参数
net.core.wmem_max = 256000

实例

sysctl -a所看到的参数全部来自/proc/sys/目录下的文件内容,可以用grep加sort加ll的方法来查看与对应

代码如下:

[root@Firewall sys]# pwd
/proc/sys
[root@Firewall sys]# ll

total 0
dr-xr-xr-x 0 root root 0 Apr 12 14:29 crypto
dr-xr-xr-x 0 root root 0 May 10 15:53 debug
dr-xr-xr-x 0 root root 0 Apr 12 14:28 dev
dr-xr-xr-x 0 root root 0 Apr 12 14:28 fs
dr-xr-xr-x 0 root root 0 Apr 12 14:28 kernel
dr-xr-xr-x 0 root root 0 Apr 12 14:28 net
dr-xr-xr-x 0 root root 0 May 10 15:53 sunrpc
dr-xr-xr-x 0 root root 0 May 10 15:53 vm

代码如下:

[root@Firewall netfilter]# pwd
/proc/sys/net/netfilter
[root@Firewall netfilter]# sysctl -a|grep net.net|sort

net.netfilter.nf_conntrack_acct = 1
net.netfilter.nf_conntrack_buckets = 16384
net.netfilter.nf_conntrack_checksum = 1
net.netfilter.nf_conntrack_count = 1739
net.netfilter.nf_conntrack_expect_max = 256
net.netfilter.nf_conntrack_generic_timeout = 600
net.netfilter.nf_conntrack_icmp_timeout = 30
net.netfilter.nf_conntrack_log_invalid = 0
net.netfilter.nf_conntrack_max = 65536
net.netfilter.nf_conntrack_tcp_be_liberal = 0
net.netfilter.nf_conntrack_tcp_loose = 1
net.netfilter.nf_conntrack_tcp_max_retrans = 3
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 432000
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
net.netfilter.nf_conntrack_udp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 180

代码如下:

[root@Firewall netfilter]# ll

total 0
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_acct
-r--r--r-- 1 root root 0 May 10 15:53 nf_conntrack_buckets
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_checksum
-r--r--r-- 1 root root 0 May 10 15:53 nf_conntrack_count
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_expect_max
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_generic_timeout
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_icmp_timeout
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_log_invalid
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_max
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_tcp_be_liberal
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_tcp_loose
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_tcp_max_retrans
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_tcp_timeout_close
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_tcp_timeout_close_wait
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_tcp_timeout_established
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_tcp_timeout_fin_wait
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_tcp_timeout_last_ack
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_tcp_timeout_max_retrans
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_tcp_timeout_syn_recv
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_tcp_timeout_syn_sent
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_tcp_timeout_time_wait
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_tcp_timeout_unacknowledged
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_udp_timeout
-rw-r--r-- 1 root root 0 May 10 15:53 nf_conntrack_udp_timeout_stream

代码如下:

[root@Firewall core]# sysctl -a|grep net.core|sort

net.core.dev_weight = 64
net.core.message_burst = 10
net.core.message_cost = 5
net.core.netdev_budget = 300
net.core.netdev_max_backlog = 1000
net.core.optmem_max = 10240
net.core.rmem_default = 111616
net.core.rmem_max = 131071
net.core.somaxconn = 8192
net.core.warnings = 1
net.core.wmem_default = 111616
net.core.wmem_max = 131071
net.core.xfrm_acq_expires = 30
net.core.xfrm_aevent_etime = 10
net.core.xfrm_aevent_rseqth = 2
net.core.xfrm_larval_drop = 1

代码如下:

[root@Firewall core]# ll

total 0
-rw-r--r-- 1 root root 0 May 10 15:53 dev_weight
-rw-r--r-- 1 root root 0 May 10 15:53 message_burst
-rw-r--r-- 1 root root 0 May 10 15:53 message_cost
-rw-r--r-- 1 root root 0 May 10 15:53 netdev_budget
-rw-r--r-- 1 root root 0 May 10 15:53 netdev_max_backlog
-rw-r--r-- 1 root root 0 May 10 15:53 optmem_max
-rw-r--r-- 1 root root 0 May 10 15:53 rmem_default
-rw-r--r-- 1 root root 0 May 10 15:53 rmem_max
-rw-r--r-- 1 root root 0 Apr 12 14:29 somaxconn
-rw-r--r-- 1 root root 0 May 10 15:53 warnings
-rw-r--r-- 1 root root 0 May 10 15:53 wmem_default
-rw-r--r-- 1 root root 0 May 10 15:53 wmem_max
-rw-r--r-- 1 root root 0 May 10 15:53 xfrm_acq_expires
-rw-r--r-- 1 root root 0 May 10 15:53 xfrm_aevent_etime
-rw-r--r-- 1 root root 0 May 10 15:53 xfrm_aevent_rseqth
-rw-r--r-- 1 root root 0 May 10 15:53 xfrm_larval_drop

(0)

相关推荐

  • 如何在Linux中使用date命令修改日期时间

    Linux中可使用date命令查看修改日期及时间,本例中以CentOS6为例说明. 在Linux中使用date命令修改日期时间 01 直接输入"date"可查看当前系统日期及时间( ...

  • Linux中使用hostname命令修改主机名称(非常简单)

    在Linux中修改主机名其实是一件非常容易的事情,但网上有些帖子在这一块都说得很复杂,诸如修改什么配置文件之类的等等,用hostname这个命令我们就可以很轻易地修改了。 我们直接运行hostname ...

  • ubuntu linux中怎样修改文件的“修改时间”

    在windows中一个文件的修改时间是不能随意修改的,但有时我们着实要用到,那就只能借助第三方软件来实现的. 很幸运的是在ubuntu linux中(其它linux中也一样)我们可以轻松地通过touc ...

  • Linux中使用file命令识别文件类型默认没有扩展名

    在Linux系统操作过程中,没有扩展名的文件难以识别,我们可以使用命令来识别文件类型,下面小编就给大家介绍下如何使用file命令来识别文件类型。 我们知道Linux文件系统是Linux内核支持的基本功 ...

  • linux中如何查看命令所在目录

    Linux如何快速定位命令所在的文件目录,可以参考如下方法. 操作方法 01 可以通过type命令来查询命令所在的目录. 02 type命令是用来判断shell命令的类型的,如果是内部命令,没有独立可 ...

  • Linux中使用cp命令报cp:omitting directory错误

    在Linux系统中使用cp命令对文件夹或者目录进行复制操作时,有时候会出现cp:omitting directiory的错误提示.这是怎么回事呢,下面简单来解释一下,并给出解决方法. 问题分析 01 ...

  • Linux中使用touch命令来修改文件的时间

    用法:touch [选项]... 文件...将每个文件的访问时间和修改时间改为当前时间. 不存在的文件将会被创建为空文件,除非使用-c 或-h 选项. 如果文件名为"-"则特殊处理 ...

  • linux 中的MYSQL命令汇总 适合学习linux下配置mysql的朋友

    一、总结一下: 1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql ...

  • Linux中的ls命令详细使用

    英文全名:List即列表的意思,当我们学习某种东西的时候要做到知其所以然,当你知道了这个东西大概是个什么了以后你的思维就会联想到很多的东西学习的就会很快。 1. ls -a 列出文件下所有的文件,包括 ...