zoukankan      html  css  js  c++  java
  • 在Linux上进行内核参数调整

    在Solaris上,使用工具mdb就可以直接修改内核内存里的内容。而在Linux上,则通常使用命令sysctl(8)做类似的事情。 本文以Fedora为例,介绍如何在Linux上进行内核参数调整。 常见的方法有两种:

    • 修改配置文件/etc/sysctl.conf, 然后使用sysctl -p装载修改的参数使之生效
    • 直接使用sysctl(8)命令对内核参数进行修改

    第一种方法修改内核参数后,重启后仍然有效;而后一种方法修改内核参数后,重启则失效。 下面介绍后一种方法。

    $ man sysctl
    NAME
           sysctl - configure kernel parameters at runtime
    ...<snip>...

    1. 读取所有的内核参数

    $ sysctl -a

    2. 修改一个内核参数

    2.1 使用systcl

    READ:  sysctl -n <key>
    WRITE: sysctl -w <key>=<value>

    e.g.

    root@ThinkCentre:~# hostname
    ThinkCentre
    
    root@ThinkCentre:~# sysctl -a | egrep -i 'hostname ='
    kernel.hostname = ThinkCentre
    
    root@ThinkCentre:~# sysctl -w kernel.hostname=ThinkCentreXXX
    kernel.hostname = ThinkCentreXXX
    
    root@ThinkCentre:~# sysctl -n kernel.hostname
    ThinkCentreXXX
    
    root@ThinkCentre:~# hostname
    ThinkCentreXXX

    2.2 直接修改文件

    • 通过strace(1)找出对应的文件,例如:
     1 root@ThinkCentre:~# strace sysctl -w kernel.hostname=ThinkCentreXXX
     2 execve("/sbin/sysctl", ["sysctl", "-w", "kernel.hostname=ThinkCentreXXX"], 0x7ffe201b30b0 /* 37 vars */) = 0
     3 brk(NULL)                               = 0x557df65e4000
     4 ...<snip>.......................................................................
     5 stat("/proc/sys/kernel/hostname", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
     6 openat(AT_FDCWD, "/proc/sys/kernel/hostname", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
     7 fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
     8 write(3, "ThinkCentreXXX
    ", 15)        = 15
     9 close(3)                                = 0
    10 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
    11 write(1, "kernel.hostname = ThinkCentreXXX"..., 33kernel.hostname = ThinkCentreXXX
    12 ) = 33
    13 close(1)                                = 0
    14 close(2)                                = 0
    15 exit_group(0)                           = ?
    16 +++ exited with 0 +++

    从第5,6行可以看出,操作的文件是 /proc/sys/kernel/hostname

    • 直接写文件,例如:
    root@ThinkCentre:~# hostname
    ThinkCentreXXX
    root@ThinkCentre:~# echo "ThinkCentre" > /proc/sys/kernel/hostname
    root@ThinkCentre:~# hostname
    ThinkCentre

    参考资料:

  • 相关阅读:
    JBoss野心勃勃的Web Beans
    缺陷消除率(DRE)
    New Features in EJB3.1(Part 1)
    Anders谈C# 4.0:新功能和展望
    NetBeans 时事通讯(刊号 # 32 Nov 03, 2008)
    JBoss野心勃勃的Web Beans
    Seam 敏捷开发与 JavaEE 经典分层架构
    目前加密算法解释【转载】
    借助FireBug来学习JavaScript的window对象
    extjs form 取值 赋值 重置
  • 原文地址:https://www.cnblogs.com/idorax/p/9141153.html
Copyright © 2011-2022 走看看