精华内容
下载资源
问答
  • 在Linux的发行版本中,都存在一个/proc/目录,有的也称它为Proc文件系统,与/proc/目录中其它目录不相同的是,/proc/sys/目录下的文件不仅能提供系统的有关信息,而且还允许用户立即停止或开启内核的某些特性及功能...

    在Linux的发行版本中,都存在一个/proc/目录,有的也称它为Proc文件系统,

    与/proc/目录中其它目录不相同的是,/proc/sys/目录下的文件不仅能提供系统的有关信息,而且还允许用户立即停止或开启内核的某些特性及功能。在/proc/sys/目录中的/proc/sys/net/子目录更是与网络息息相关,我们可以通过设置此目录下的某些文件来开启与网络应用相关的特殊功能,同时,也可以通过设置这个目录下的某些文件来保护我们的网络安全。因此,作为一名Linux下的网络管理员,就很有必要详细了解/proc/sys/net/目录下文件的各种功能和设置方法,让它能更好地为我们工作。

    一、/proc/sys/net/目录说明。

    /proc/sys/net/目录主要包括了许多网络相关的主题,例如:appletalk/,ethernet/,ipv4/,ipx/,及ipv6/。通过改变这些目录中的文件,网络管理员能够在系统运行时调整相关网络参数。虽然在Linux中还有很多有关网络的配置方法,但熟悉此目录中的相关内容对网络应用是有很大的帮助的。

    在/proc/sys/net/目录下有两个目录,与现在的IPV4网络的运行息息相关,调整这两个目录下的某些文件的参数,能为我们的网络应用带到意想不到的效果,这两个目录就是/proc/sys/net/core/目录和/proc/sys/net/ipv4/目录,下面笔者将会对这两个目录中的重要文件分别作一个详细的说明。

    1、/proc/sys/net/core/目录。

    此目录中包括许多设置用来控制Linux内核与网络层的交互,即当网络有什么动作时,内核做出什么样的相应反应。

    在其中有以下的一些重要文件:

    (1)、message_burst:设置每十秒写入多少次请求警告;此设置可以用来防止DOS攻击,缺省设置为50;

    (2)、message_cost:设置每一个警告的度量值,缺省为5,当用来防止DOS攻击时设置为0;

    (3)、netdev_max_backlog:设置当个别接口接收包的速度快于内核处理速度时允许的最大的包序列,缺省为300;

    (4)、optmem_max:设置每个socket的最大补助缓存大小;

    (5)、rmem_default:设置接收socket的缺省缓存大小(字节);

    (6)、rmem_max:设置接收socket的最大缓存大小(字节);

    (7)、wmem_default:设置发送的socket缺省缓存大小(字节);

    (8)、wmem_max:设置发送的socket最大缓存大小(字节)。

    2、/proc/sys/net/ipv4/目录。

    此目录中的内容用来添加网络设置,在其中的许多设置,可以用来阻止对系统的攻击,或用来设置系统的路由功能。

    其中有以下的这些重要的文件:

    (1)、icmp_destunreach_rate、icmp_echoreply_rate、icmp_paramprob_rate、icmp_timeexeed_rate:设置发送和回应的最大icmp包的速率,最好不要为0;

    (2)、icmp_echo_ignore_all和icmp_echo_ignore_broadcasts:设置内核不应答icmp echo包,或指定的广播,值为0是允许回应,值为1是禁止;

    (3)、ip_default_ttl:设置IP包的缺省生存时间(TTL),增加它的值能减少系统开销;

    (4)、ip_forward:设置接口是否可以转发包,缺省为0,设置为1时允许网络进行包转发;

    (5)、ip_local_port_range:当本地需要端口时指定TCP或UDP端口范围。第一数为低端口,第二个数为高端口;

    (6)、tcp_syn_retries:提供限制在建立连接时重新发送回应的SYN包的次数;

    (7)、tcp_retries1:设置回应连入重送的次数,缺省为3;

    (8)、tcp_retries2:设置允许重送的TCP包的次数,缺省为15,Linux网管必须了解的系统目录/proc/sys/net/》(https://www.unjs.com)。

    二、/proc/sys/net/目录下文件的设置方法。

    在了解了/proc/sys/net/core/目录和/proc/sys/net/ipv4/目录中一些重要文件的意义和作用后,下面说说如何设置这两个目录中的这些重要文件来为我们工作的。

    读者应该了解,在Linux系统中,要改变某种服务或设备的工作状态和功能,主要是通过使用命令方式和直接修改它的配置文件方式来达到目的,对于这两个目录下的文件,我们也可以通过这两种方式来修改这些文件内容中的值,使它们按照我们的意图工作。

    在进行设置之前,应当注意的是,当你确定要修改某个文件的当前值时,一定要保证输入的命令格式和值的内容都是正确的,因为任何的错误设置都会引起内核的不稳定,如果你不小心造成了这种问题,你就不得不重新引导系统了。在下面的说明中,笔者会将注意的地方特别说明出来的。

    首先来看看如何使用命令方式来修改这两个目录下文件的。我们可以通过echo和sysctl这两个命令来修改这两个目录中的文件,下面笔者将这两个命令的使用方法分别列出来。

    1、sysctl命令是为设置这两个目录中的文件而定制的,它被默认安装在/sbin/目录中, 我们可以通过使用此命令来显示和设置/proc/sys/net/目录下的文件内容。例如:/sbin/sysctl -a命令用来显示此目录下的所有文件配置内容;/sbin/sysctl -w命令用来修改此目录下指定文件中的变量值,如:/sbin/sysctl -w net.ipv4.ip_forward="1"用来设置允许IP包转发。其它的参数,读者可以通过输入/sbin/sysctl –h命令来得到,在这里就不再具体全部列出了。要注意的是,这个命令的使用需要管理员权限的,如果用户不是以管理员身份登录的,在使用此命令前用SU命令得得管理权限后再操作。

    2、/proc/sys/net/目录下的文件内容也可以通过用echo命令来修改。例如:echo 1 > /proc/sys/net/ipv4/ip_forward用来设置允许IP包转发;echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all用来设置不回应ICMP ECHO包。在使用echo命令时,还应特别注意此命令的输入格式,即在echo命令和值之间,以及值与在于符号(>)之间,在于符号与要修改的文件路径之间都必需有一个空格。而且,在这两个目录中的有些文件有不上一个的值,所以,如果你想一次性传递多个值,那么,每一个值之间也应保证用空格隔开。同时也要注意的是,用此方法修改/proc/sys/net/目录下文件中的内容在系统重新启动后,所设置的内容会全部变为默认值,因此,如果要想设置的值永久有效,可以直接把这个命令加入到/ect/rc.d/rc.local文件中,在这里,这个文件的路径是指Red Hat Linux发行版本中的,其它发行版本读者根据具体情况来定。如果命令项太多,也可以把这些命令项编写成一个脚本后,加上可执行权限,再放到这个文件中,这样当系统启动时,就会按/etc/rc.d/rc.local中的设置自动执行。如果你不想修改/etc/rc.d/rc.local文件,那么笔者推荐你使用/sbin/sysctl命令。

    使用命令方式设置/proc/sys/net/目录下的文件固然方便易行,但有一部分读者更喜欢直接修改它们的配置文件的方式,因为这种方式更加直观,但它比较适合对系统了解比较深的用户。

    与其它服务或设备不同的是,Linux系统只为/proc/sys/net/目录提供了一个配置文件,那就是/ect/sysctl.conf,用户可以通过直接编辑/ect/sysctl.conf配置文件,来修改增加相应/proc/sys/net/目录下文件内容中的变量的值,这样当系统启动时就会读取此文件中的配置内容来设置相应的项。用vi来编辑此文件是非常简单的,此文件中内容格式也非常清晰易读,如其中有如下条目:net.ipv4.ip_forward=0,把值修改为1后就打开IP包转发。其实,用/sbin/sysctl命令修改和直接编辑 /etc/sysctl.conf文件内容具有相同的效果,因此,为了安全,推荐用户优先使用/sbin/sysctl命令方式。

    到这里,想必读者已经对/proc/sys/net/目录下的/proc/sys/net/core/和/proc/sys/net/ipv4/这两个目录,已经有了一定了解了。可是,这只是笔者为了突出/proc/目录与IPV4网络的作用而特别选出来说明,其实,在/proc/目录下,还有许多的文件,虽然不能被用户如上述的两个目录那样可以被设置,但是,可以通过这些文件来了解系统详细情况和现行的运行状态,读者可以从网络上找到这个目录的详细说明。

    展开全文
  • elasticsearch的机器跑了一段时间后,cached占用了几十G,导致新的进程启动失败,手动释放下。... /proc/sys/vm/drop_caches to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches to free pagec

    原文地址:http://blog.csdn.net/wyzxg/article/details/7279986/

    elasticsearch的机器跑了一段时间后,cached占用了几十G,导致新的进程启动失败,手动释放下。
    To free pagecache, use
    echo 1 > /proc/sys/vm/drop_caches

    to free dentries and inodes, use
    echo 2 > /proc/sys/vm/drop_caches

    to free pagecache, dentries and inodes, use
    echo 3 >/proc/sys/vm/drop_caches

    linux的内存查看:

    
    [root@localhost 0.1.0]# free -m
                       total       used       free     shared    buffers     cached
    Mem:          4032        694       3337          0          0         25
    

    需要说明的是,mem的used=free+buffers+cached,有些情况是cached占用很多资源,算起来数值就是不对,其实不影响实际使用,下面转载部分有说明如何清除cached的占用(实际上可以不清除,不会影响实际使用)
    当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching。这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法。那么我来谈谈这个问题。

     

    通常情况

    先来说说free命令:

    
    [root@server ~]# free -m
    total used free shared buffers cached
    Mem: 249 163 86 0 10 94
    -/+ buffers/cache: 58 191
    Swap: 511 0 511
    

    其中:
    引用total 内存总数
    used 已经使用的内存数
    free 空闲的内存数
    shared 多个进程共享的内存总额
    buffers Buffer Cache和cached Page Cache 磁盘缓存的大小
    -buffers/cache 的内存数:used - buffers - cached
    +buffers/cache 的内存数:free + buffers + cached
    可用的memory=free memory+buffers+cached。
    有了这个基础后,可以得知,我现在used为163MB,free为86MB,buffer和cached分别为10MB,94MB。
    那么我们来看看,如果我执行复制文件,内存会发生什么变化.

    
    [root@server ~]# cp -r /etc ~/test/
    [root@server ~]# free -m
    total used free shared buffers cached
    Mem: 249 244 4 0 8 174
    -/+ buffers/cache: 62 187
    Swap: 511 0 511
    

    在我命令执行结束后,used为244MB,free为4MB,buffers为8MB,cached为174MB,天呐,都被cached吃掉了。别紧张,这是为了提高文件读取效率的做法。
    为了提高磁盘存取效率,Linux做了一些精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。
    那么有人说过段时间,linux会自动释放掉所用的内存。等待一段时间后,我们使用free再来试试,看看是否有释放?

    
    [root@server test]# free -m
    total used free shared buffers cached
    Mem: 249 244 5 0 8 174
    -/+ buffers/cache: 61 188
    Swap: 511 0 511
    

    似乎没有任何变化。(实际情况下,内存的管理还与Swap有关)
    那么我能否手动释放掉这些内存呢?回答是可以的!

     

    手动释放缓存

    /proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。操作如下:
    [root@server test]# cat /proc/sys/vm/drop_caches
    0
    首先,/proc/sys/vm/drop_caches的值,默认为0。

    [root@server test]# sync

    手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)

    [root@server test]# echo 3 > /proc/sys/vm/drop_caches
    [root@server test]# cat /proc/sys/vm/drop_caches
    3
    将/proc/sys/vm/drop_caches值设为3

    
    [root@server test]# free -m
    total used free shared buffers cached
    Mem: 249 66 182 0 0 11
    -/+ buffers/cache: 55 194
    Swap: 511 0 511
    

    再来运行free命令,会发现现在的used为66MB,free为182MB,buffers为0MB,cached为11MB。那么有效的释放了buffer和cache。
    有关/proc/sys/vm/drop_caches的用法在下面进行了说明
    引用/proc/sys/vm/drop_caches (since Linux 2.6.16)
    Writing to this file causes the kernel to drop clean caches,dentries and inodes from memory, causing that memory to become free.
    To free pagecache, use
    echo 1 > /proc/sys/vm/drop_caches
    to free dentries and inodes, use
    echo 2 > /proc/sys/vm/drop_caches
    to free pagecache, dentries and inodes, use
    echo 3 >/proc/sys/vm/drop_caches
    Because this is a non-destructive operation and dirty objects are not freeable, the user should run sync first.

     

    建议

    上述文章就长期以来很多用户对Linux内存管理方面的疑问,给出了一个比较“直观”的回复,我更觉得有点像是核心开发小组的妥协。
    对于是否需要使用这个值,或向用户提及这个值,我是有保留意见的:
    1、从man可以看到,这值从2.6.16以后的核心版本才提供,也就是老版的操作系统,如红旗DC 5.0、RHEL 4.x之前的版本都没有;
    2、若对于系统内存是否够用的观察,我还是原意去看swap的使用率和si/so两个值的大小;

    用户常见的疑问是,为什么free这么小,是否关闭应用后内存没有释放?
    但实际上,我们都知道这是因为Linux对内存的管理与Windows不同,free小并不是说内存不够用了,应该看的是free的第二行最后一个值:"-/+ buffers/cache: 58 191" 这才是系统可用的内存大小。

    实际项目中告诉我们,如果因为是应用有像内存泄露、溢出的问题,从swap的使用情况是可以比较快速可以判断的,但free上面反而比较难查看。相反,如果在这个时候,我们告诉用户,修改系统的一个值,“可以”释放内存,free就大了。用户会怎么想?不会觉得操作系统“有问题”吗?所以说,我觉得既然核心是可以快速清空buffer或cache,也不难做到(这从上面的操作中可以明显看到),但核心并没有这样做(默认值是0),我们就不应该随便去改变它。一般情况下,应用在系统上稳定运行了,free值也会保持在一个稳定值的,虽然看上去可能比较小。当发生内存不足、应用获取不到可用内存、OOM错误等问题时,还是更应该去分析应用方面的原因,如用户量太大导致内存不足、发生应用内存溢出等情况,否则,清空buffer,强制腾出free的大小,可能只是把问题给暂时屏蔽了。

    我觉得,排除内存不足的情况外,除非是在软件开发阶段,需要临时清掉buffer,以判断应用的内存使用情况;或应用已经不再提供支持,即使应用对内存的时候确实有问题,而且无法避免的情况下,才考虑定时清空buffer。(可惜,这样的应用通常都是运行在老的操作系统版本上,上面的操作也解决不了)。

    展开全文
  • linux系统对于热插拔事件的产生默认都是调用/sbin/hotplug,该程序通过加载驱动程序,创建设备节点,挂载分区等。如果系统中不是/sbin/hotplug来执行... /proc/sys/kernel/hotplug。我们可以在脚本中注释掉该命令行,重

    参见:https://zhidao.baidu.com/question/1606465593857998667.html

    linux系统对于热插拔事件的产生默认都是调用/sbin/hotplug,该程序通过加载驱动程序,创建设备节点,挂载分区等。如果系统中不是/sbin/hotplug来执行,而是mdev,那么用户应当在早期启动的时候将该执行档(包含绝对位置)设置进去,于是有了上面的echo /sbin/mdev> /proc/sys/kernel/hotplug。我们可以在脚本中注释掉该命令行,重新开机后cat /proc/sys/kernel/hotplug就会发现返回来的是/sbin/hotplug说明系统默认都是调用这个。这个的配置在内核编译的时候写好的,在内核目录下的.config可以看到有个配置叫做CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug",如果你编译的时候修改这个也是可以更改到的。

    参见:https://blog.csdn.net/qq_21435127/article/details/80689577

    mdev是busybox提供的一个工具,用在嵌入式系统中,相当于简化版的udev,作用是在系统启动和热插拔或动态加载驱动程序时,
    自动创建设备节点。文件系统中的/dev目录下的设备节点都是由mdev创建的。在加载驱动过程中,根据驱动程序,在/dev下自动创建设备节点。

    1、在/etc/init.d/rcS脚本里有“mdev -s”
    解释:系统启动时,通过执行“mdev -s”扫描/sys/class和/sys/block,在目录中查找dev文件。例如:/sys/class/tty/tty0/dev,

    它的内容为”4:0”,即主设备号是4,次设备号是0,dev的上一级目录为设备名,这里是tty0。/sys/class/下的每个文件夹都代表
    着一个子系统。

    2、在/etc/init.d/rcS脚本里有“echo /sbin/mdev > /proc/sys/kernel/hotplug”

    解释:把/sbin/mdev写到/proc/sys/kernel/hotplug文件里。当有热插拔事件产生时,内核会调用/proc/sys/kernel/hotplug文件里指定的应用程序来处理热插拔事件。

    设置mdev有三种方法,总结如下:
    1、编译内核的时候直接配置CONFIG_UEVENT_HELPER_PATH,并且在之后的启动中不去修改uevent_helper,那么
    uevent_helper代表的程序就是CONFIG_UEVENT_HELPER_PATH指定的程序

    2、不管CONFIG_UEVENT_HELPER_PATH配置与否或如何设置,通过echo /sbin/mdev > /sys/kernel/uevent_helper
    修改uevent_helper的内容,这个指令将会调用内核函数uevent_helper_store。过程涉及sysfs虚拟文件系统的
    内容,这里不讨论。改变之后,/proc/sys/kernel/hotplug里的内容也会立即发生改变

    3、不管CONFIG_UEVENT_HELPER_PATH配置与否或如何设置,通过echo /sbin/mdev > /proc/sys/kernel/hotplug
    修改uevent_helper的内容.它的修改也会导致/sys/kernel/uevent_helper里的内容立即改变

    对于上述的2、3两种方法,都是通过用户层的接口直接uevent_helper,所以谁在后面谁起作用。
    ————————————————
    版权声明:本文为CSDN博主「蓝天居士」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/phmatthaus/article/details/107180696

    三、busybox源码分析

    内核源码的最后是调用uevent_helper指定的用户程序,这个用户程序通常是mdev,那么mdev如何做的呢,来看一下
    busybox的源码。源码基于busybox-1.23.1

    int mdev_main(int argc UNUSED_PARAM, char **argv)
    xchdir("/dev"); // 先把目录改变到/dev下

    if (argv[1] && strcmp(argv[1], "-s") == 0) {  // 在文件系统启动的时候会调用 mdev -s,创建所有驱动设备节点
        putenv((char*)"ACTION=add"); // mdev -s 的动作是创建设备节点,所以为add
    
        if (access("/sys/class/block", F_OK) != 0) { // 当/sys/class/block目录不存在时,才扫描/sys/block
     /* Scan obsolete /sys/block only if /sys/class/block
      * doesn't exist. Otherwise we'll have dupes.
      * Also, do not complain if it doesn't exist.
      * Some people configure kernel to have no blockdevs.
      */
     recursive_action("/sys/block",
     ACTION_RECURSE | ACTION_FOLLOWLINKS | ACTION_QUIET,
     fileAction, dirAction, temp, 0);
    

    }

    /*
    * 这个函数是递归函数,它会扫描/sys/class目录下的所有文件,如果发现dev文件,将按照
    * /etc/mdev.conf文件进行相应的配置。如果没有配置文件,那么直接创建设备节点
    * 最终调用的创建函数是 make_device
    */
    recursive_action("/sys/class",
    ACTION_RECURSE | ACTION_FOLLOWLINKS,
    fileAction, dirAction, temp, 0);

    }
    
    else{
        // 获得环境变量,环境变量是内核在调用mdev之前设置的
        env_devname = getenv("DEVNAME"); /* can be NULL */
    

    G.subsystem = getenv(“SUBSYSTEM”);
    action = getenv(“ACTION”);
    env_devpath = getenv(“DEVPATH”);

        snprintf(temp, PATH_MAX, "/sys%s", env_devpath);
    
        make_device(env_devname, temp, op);
    }
    

    由以上代码分析可知,无论对于何种操作,最后都是调用make_device来创建节点,看一下这个函数

    static void make_device(char *device_name, char *path, int operation)
    int major, minor, type, len;
    char *path_end = path + strlen(path); //path_end指定path结尾处

    major = -1;
    if (operation == OP_add) {
        strcpy(path_end, "/dev");  // 往path结尾处拷贝“/dev”,这时path=/sys/class/test/test_dev/dev
        len = open_read_close(path, path_end + 1, SCRATCH_SIZE - 1); // 打开并读取/sys/class/test/test_dev/dev
        *path_end = '\0';
        if (len < 1) {
            if (!ENABLE_FEATURE_MDEV_EXEC)
                return;
        } else if (sscanf(path_end + 1, "%u:%u", &major, &minor) == 2) { //从/sys/class/test/test_dev/dev获得主次设备号
            dbg1("dev %u,%u", major, minor);
        } else {
            major = -1;
        }
    }
    
    if (operation == OP_add && major >= 0) // 如果是add,即创建节点
        mknod(node_name, rule->mode | type, makedev(major, minor)) // 最终用mknod函数在/dev下创建设备节点
        
    if (operation == OP_remove && major >= -1)  // 如果是remove,即删除节点
        unlink(node_name); 
    

    创建节点最后无非还是调用mknod,当然在class_create和device_create自动创建设备节点时,也会在/sys/class下自动创建
    和删除相关设备类和设备,这是sysfs的驱动内容,这里不讲

    展开全文
  • /proc/sys/kernel/printk

    2021-05-07 15:06:07
    在 /proc/sys/kernel/printk 会显示4个数值(可由 echo 修改),分别表示当前控制台日志级别、未明确指定日志级别的默认消息日志级别、最小(最高)允许设置的控制台日志级别、引导时默认的日志级别。当 printk() 中...

    通过procfs控制printk打印消息
    1. 查看当前printk打印消息的log等级


    # cat /proc/sys/kernel/printk
    # 7 4 1 7
    “7 4 1 7” 分别对应console_loglevel、default_message_loglevel、minimum_c onsole_loglevel、default_console_loglevel,

    意味着只有优先级高于KERN_DEBUG(7)的打印消息才能输出到终端

     

    2. 改变console_loglevel


    # echo 8 4 1 7 > /proc/sys/kernel/printk

    输入“8 4 1 7”改变console_loglevel值,使得所有的打印消息都能输出到终端

    3. procfs系列节点
    // kernel/sysctl.h

    static struct ctl_table kern_table[] = {
        ......
    #if defined CONFIG_PRINTK
        {
            .procname   = "printk",
            .data       = &console_loglevel,
            .maxlen     = 4*sizeof(int),
            .mode       = 0644,
            .proc_handler   = proc_dointvec,
        },
        {
            .procname   = "printk_ratelimit",
            .data       = &printk_ratelimit_state.interval,
            .maxlen     = sizeof(int),
            .mode       = 0644,
            .proc_handler   = proc_dointvec_jiffies,
        },
        {
            .procname   = "printk_ratelimit_burst",
            .data       = &printk_ratelimit_state.burst,
            .maxlen     = sizeof(int),
            .mode       = 0644,
            .proc_handler   = proc_dointvec,
        },
        {
            .procname   = "printk_delay",
            .data       = &printk_delay_msec,
            .maxlen     = sizeof(int),
            .mode       = 0644,
            .proc_handler   = proc_dointvec_minmax,
            .extra1     = &zero,
            .extra2     = &ten_thousand,
        },
        {
            .procname   = "printk_devkmsg",
            .data       = devkmsg_log_str,
            .maxlen     = DEVKMSG_STR_MAX_SIZE,
            .mode       = 0644,
            .proc_handler   = devkmsg_sysctl_set_loglvl,
        },
        {
            .procname   = "dmesg_restrict",
            .data       = &dmesg_restrict,
            .maxlen     = sizeof(int),
            .mode       = 0644,
            .proc_handler   = proc_dointvec_minmax_sysadmin,
            .extra1     = &zero,
            .extra2     = &one,
        },
        {
            .procname   = "kptr_restrict",
            .data       = &kptr_restrict,
            .maxlen     = sizeof(int),
            .mode       = 0644,
            .proc_handler   = proc_dointvec_minmax_sysadmin,
            .extra1     = &zero,
            .extra2     = &two,
        },
    #endif

        ......

        { }
    };
     

    展开全文
  • 亦或通过使用sysctl-w vm.drop_cache = 或通过直接写入/proc/sys/VM/drop_cache来触发缓存删除,如下所示: 释放页面缓存、数据区和信息节点(一般使用3 或者sync即可) echo 3 >/proc/sys/vm/drop_caches 释放数据...
  • lsof仅列出进程ID....根据man proc:/proc/[pid]/task (since Linux 2.6.0-test6)This is a directory that contains one subdirectory for eachthread in the process. The name of each subdirector...
  • linux系统对于热插拔事件的产生默认都是调用/sbin/hotplug,该程序通过加载驱动程序,创建设备节点,挂载分区等。如果系统中不是/sbin/hotplug来执行... /proc/sys/kernel/hotplug。我们可以在脚本中注释掉该命令行,重
  • drivers/char/random.c 2080 /* 2081 * This function is used to ... 2114 } 【 在 folivore 的大作中提到: 】 : cat /proc/sys/kernel/random/uuid : 每次都是一个随机的码,这个是怎么实现的呢?
  • echo "vm.swappiness=10" >> /etc/sysctl.conf sysctl -p
  • cat /proc/sys/kernel/printk 4 4 1 7 共有4个参数 4 4 1 7 (1)第一个参数 4表示小于4优先级消息才会被输出到控制台,通过设置参数可以控制打印到控制台的日志级别,也就是,数字越大,会有越多的日志输出到...
  • linux 其他知识目录 ... 一、前言 本文档针对OOP8生产环境,具体优化...1) Linux Proc文件系统,通过对Proc文件系统进行调整,达到性能优化的目的。 2) Linux性能诊断工具,介绍如何使用Linux自带的诊断工具进行性能...
  • 解决办法 在宿主机中修改/proc/sys/net/ipv4/ip_forward内容为1 echo 1 > /proc/sys/net/ipv4/ip_forward 注意:将此属性设置为0时,使用sudo设置不成功时,切换到root可以修改; 修改完成后重启lxd容器,发现docker...
  • ip转发深入研究文章 https://blog.csdn.net/li_101357/article/details/78415461 docker network ls # brctl show cat /proc/sys/net/ipv4/ip_forward # 默认是0 echo给上1 就可以转发 # 永久修改 参考文章:...
  • /proc/sys/kernel/core_pattern' 报错一、背景二、疑惑三、解决方案四、原因五、参考文献 一、背景 前文中,课题组要做AFL的web端可视化展示,需要用Docker封装AFL为WEB API。在改进脚本重新部署后,调用AFL进行...
  • 当/proc/sys/net/bridge/bridge-nf-call-iptables值为真,表示linux桥下的报文会经过ip层的netfilter框架处理。即可以通过iptables命令来对桥下的报文进行处理。当该值为0时,只能通过ebtables来处理桥下的报文。 以...
  • /proc/sys/kernel/printk The four values in this file are console_loglevel, default_mes- sage_loglevel, minimum_console_level and default_con- sole_loglevel. These values influence printk() behavior...
  • 关于kubeadm init时报错"/proc/sys/net/bridge/bridge-nf-call- iptables does not exist" 执行这条命令即可 $ modprobe br_ netfilter
  • echo N > /proc/sys/vm/drop_caches
  • sysctl: cannot stat /proc/sys/net/netfilter/nf_conntrack_max: No such file or directory 我优化k8s内核参数的时候设置了如下参数 cat > kubernetes.conf <<EOF net.bridge.bridge-nf-call-iptables=1 ...
  • Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches频繁的文件访问会导致系统的Cache使用量大增$ free -mtotal used free shared buffers cachedMem:-/+ buffers/cache:Swap:free内存减少到几十兆,系统运行缓慢...
  • 默认情况下, Linux会最多使用40%的可用内存作为文件系统缓存。当超过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘, 导致后续的IO请求都是同步的。 将缓存写入磁盘时,有一个默认120秒的超时时间。...
  • 1、问题描述 部署k8s时,有一部需要把kubernetes.conf文件放在开机自启动下,并生效,命令如下: ...sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: 没有那个文件或目录 sysc
  • 然后说是 /proc/sys/net/ipv4/ip_forward 文件没有设置成1 [root@zjj102 ~]# kubeadm join 172.16.10.101:6443 --token qnv1yd.t6md74mwcnty78uv --discovery-token-ca-cert-hash sha256:13c8363f7beea0ee257730c...
  • /proc/sys/vm/drop_caches清理缓存 引言:在内核窗口—proc文件系统这篇笔记中,我们介绍了/proc主要体现进程及内核信息状态。与/proc下其它文件的“只读”属性不同的是,管理员可对/proc/sys子目录的许多文件内容...
  • 参考: 原作者 如何在 Linux 中清除缓存(Cache)? 每个 Linux 系统有三种选项来清除缓存而不需要中断任何进程或服务。 (LCTT 译注:Cache,译作“缓存”... /proc/sys/vm/drop_caches 清除目录项和inode # sync; ech
  • Latest validated version: 19.03 error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR FileContent–proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/...
  • /sys/devices 下是所有设备的真实对象,包括如视频卡和以太网卡等真实的设备.可以看到真正运行了哪些设备, 从而可以推断出用到哪些驱动文件, 例如:/sys/devices/1000000.pinctrl/gpio 该设备下创建的真实可用的...
  • 执行 lsmod |grep conntrack 如果返回为空执行 modprobe ip_conntrack
  • 1.2.2sysctl(/proc/sys目录)sysctl接口允许用户读取或者修改内核参数。在用户空间可以通过两种方法访问sysctl导出的变量。一种方法是通过sysctl系统调用,另一种是通过procfs。如果内核支持procfs,它会在/proc目录...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 194,002
精华内容 77,600
关键字:

/proc/sys