• linux服务器报No space left on device错误的解决过程记录


    起因

    今天在本地提交了点代码,但到服务器上git pull的时候提示No space left on device,第一反应是猜想可能硬盘满了(很有可能是log导致的),不过想想又觉得不太可能,这台服务器上只部署了一个应用,查看项目占用空间也不大。

    解决过程

    1、作为一个linux菜鸟,第一时间百度查关于查看硬盘使用情况的命令

    [root@iZ23nce0j6gZ ~]# df -h
    文件系统    容量    已用   可用   已用%   挂载点
    /dev/hda1  20G     2.4G   18G   13%    /
    tmpfs     1006M   0     1006M  0%    /dev/shm

    上面显示的内容是解决后的,因为终端关闭过,所以解决前的现象重现不出了,大致就是只显示了第二行的内容,解决前是没有中划线那行的。当时就在想WTF

    2、于是乎继续查命令,无意间看到df /home这条命令,用之

    [root@iZ23nce0j6gZ ~]# df /home
    文件系统   1K-块    已用     可用   已用%   挂载点
    /dev/hda1  20802016  20798393  3623   100%     /

    阿西吧,终于发现这货了,不出所料占用率达到100%,但是我还是不知道具体是哪些文件引起的,于是找了公司的运维哥哥看了下

    3、运维哥哥出马,非同凡响,一下就找到了害群之马

    [root@iZ23nce0j6gZ ~]# ll -ah
    -rw-r--r--  1 root root 20G 06-08 10:38 test.log

    哎哟卧槽,这什么鬼占了20G,打开发现里面百度的html代码,难道是爬虫打的日志

    4、查看该文件是谁在写入

    [root@iZ23nce0j6gZ ~]# lsof test.log

    这命令只能在文件被写入的时候才能显示内容,最后虽然得到了个进程号,但是因为写完进程就关闭了,所以还是查不到

    5、突然我灵光一闪,隐约记起来之间自己写了个测试的crontab定时脚本

    [root@iZ23nce0j6gZ ~]# crontab -l
    */1 * * * * /usr/bin/curl http://www.baidu.com >> /root/test.log 2>&1

    果然是它,是它,是它,就是它~

    6、把test.log文件删掉,并停止该脚本问题就解决了

    ps:问题解决之后,运维哥哥还用netstat -utlpn|grep 2命令扫了下服务器开放的端口,建议改掉这些默认的,因为现在有很多黑客会扫描这些端口,存在安全隐患

    总结

    这次主要是自己搞的乌龙事件,测试完之后没有及时停止该定时脚本,导致一直打印log占满硬盘。

  • 相关阅读:
    C# 进程间通信之二传递复杂数据类型(转)
    c# 进程间的通信实现之一简单字符串收发
    WinRAR压缩操作帮助类
    软件推荐:扫码格式检测系统
    C#位操作(转)
    浅析c#内存泄漏
    常用SQL语句
    linux下网站搭建
    VS中的活动debug和活动cpu
    让程序员跳槽的非钱原因
  • 原文地址:https://www.cnblogs.com/orzlin/p/5569604.html
Copyright © 2020-2023  润新知