zoukankan      html  css  js  c++  java
  • 硬盘显示有容量,但无法放入文件,还有一个查看机器端口是否开放。

    昨天取面试Python,问了一堆运维的问题。这两个问题,一下子没打上来,准备写个笔记记录一下。

    第一个转载来至这里:https://blog.csdn.net/T146lLa128XX0x/article/details/97198537

    还有阮一峰大神对于inode的介绍:http://www.ruanyifeng.com/blog/2011/12/inode.html

    Linux系统inodes资源耗尽问题

    1 inodes介绍

     

    Linux系统下文件数据储存在"块"中,文件的元信息,例如文件的创建者、文件的创建日期、文件的大小等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

    inode也占用硬盘空间,硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。

    每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。

    2 inodes资源耗尽

     

    inodes使用完与存储空间使用完相似,都是创建不了文件或无法正常执行一些命令。inodes使用完,存储空间可能还有,这种情况一般是生成了大量的小文件,把inode table占满。

    一般情况下存储空间使用完,inodes往往才使用百分之几,所以容易忽视对inodes使用情况的监控。

    借用网图来说明inodes用尽,而磁盘空间还未用完的情况:

    查看磁盘空间使用情况,使用df命令

    640?wx_fmt=jpeg

    查看inodess使用情况,使用df -i命令

    640?wx_fmt=jpeg

    上述两个命令可以使用-h参数,命令为df -h和df -hi。从图中看见磁盘空间使用71%,但是inodes使用100%。

    3 inodes耗尽解决

     

    inodes的大小在磁盘格式化分区时确定,跟分区的大小相关,分区越大,inodes越大,反之亦然。

    linux操作系统根目录一般分区比较小,如果有定时性的小文件产生而又未及时清理,则很容易造成inodes占满。

    inodes占满解决步骤:

    (1)查看文件最多的目录

    for i in /*; do echo $i; find $i | wc -l; done

    如果确定目录范围,把/*写的具体点

    最终发现是/var/spool/postfix/maildrop目录下小文件过多,原因如下:

    由于linux在执行cron时,会将cron执行脚本中的output和warning信息,都会以邮件的形式发送给cron所有者。由于客户环境中的sendmail和postfix没有正常运行,邮件发送不成功,导致全部小文件都堆积在maildrop目录下,另由于缺乏自动清理的机制,故此目录下堆积了大量的文件。

    经过排查root用户下发现有个每分钟进行一次时钟同步的定时任务,该定时任务每分钟产生一个小文件。

    (2)删除大量文件

    ls | xargs -n 1000 rm -rf

    需要使用xargs命令,不然会删除失败。

    4 总结

     

    (1)设置方面

    在crontab -e 第一行增加MAILTO="" ,就没有文件产生啦

    (2)重定向

    对定时任务设置定向输出文件,不需要日志输出的定时任务可以将日志重定向到/dev/null,如下:

    */10 * * * * /tmp/test.sh >/dev/null 2>&1

    (3)定时清理文件

    find 目录 -type f -mtime +30 | xargs -n 1000 rm -f

    (4)监控inodes的使用

    备注:应注意crontab的写法和产生的文件的定时清理

    第二个问题是查看linux系统的端口开放情况.

       端口不是独立存在的,它必须依附于进程(抽象想想的话,其实端口默认是关闭的,只有当程序与之连接,它便开启),进程开启,相应的端口自然也就开启了,进程关闭,端口自然也就关闭了! 

     

    查询篇:

    netstat 

            -a        所有

            -n        以数字的形式显示地址

            -p        pid/程序名

            -t        TCP协议

            -u        UDP协议

     

    # netstat -anptu 

    # 查询系统所有开启的端口,包括TCP/UDP协议端口

    难怪我没有挂载nigix,没有发现80端口是开放的。

  • 相关阅读:
    js中this指向的三种情况
    js 对象克隆方法总结(不改变原对象)
    JS 数组克隆方法总结(不可更改原数组)
    第七章、函数的基础之函数体系01
    第六篇、文件处理之文件修改的两种方式
    第六篇、文件处理之文件的高级应用
    第六篇.文件处理之python2和3字符编码的区别
    第六篇、文件处理之字符编码
    第五篇python进阶之深浅拷贝
    jquery的insertBefore(),insertAfter(),after(),before()
  • 原文地址:https://www.cnblogs.com/sidianok/p/13273648.html
Copyright © 2011-2022 走看看