分类 centos 下的文章

记一次因session文件过多导致服务器node用尽的故事

最近服务器访问量逐步上升,cpu频繁告警,终于到了需要升级的时刻了, 配置已升级了就等待重启生效了。
由于有过重启会要半个小时的经历,所以重启都有点担惊受怕,因配置升级,服务器在1分钟内就重启完成了,瞬间cpu占用就下降了。
然而故事还没有完,第二天,数据库又搞事情了,cpu告警, 这就轻车熟路了升级数据库, 升级很顺利,告警也解除了,然而看了服务器的各项参数,发现了一项异常, 服务器根目录挂载的分区的node 占用将近100%了, 可用数目一直在减少,立刻行动起来, 因为我们用户头像都存了一份在服务器的,起初我以为是到了该清理头像的时候了, 但是进目录一看, 头像数量不足以导致到这个数量级,然后找看是那个目录占用了大量的node。我把我认为可能的文件夹都用

find ./文件夹名称 |wc -l

找了一遍, 最后发现是 php的session存放的目录 存在大量的文件占用了 node。
这里其实能更好理解node的意义, 所谓的node其实就是文件,一个文件对应一个node,硬盘的容量有限,存放文件的数量其实也是有限的, 所有文件数量的大小 没有达到硬盘的容量,但是文件数量达到了,照样写不进去内容。
找到原因后, 然后马上采取行动,恢复node的数量,判断是 session文件没有及时删除:推测应该是访问量大的时候重启了系统没有自动销毁这些文件, 亦或由于大量的访问由于某种原因,导致了无效session文件的堆积,那么只要删除这些无效的session文件 即可。

cd /var/lib/php
find ./session/ -cmin +24 -name "sess_*" -and -size 0 -delete > /dev/null 2>&1
find ./session/ -cmin +1440 -name "sess_*" -delete > /dev/null 2>&1

php的session存放的目录定义在php的配置文件里, 可能和我的不一样。如果有缘人遇到一样的问题, 可以酌情修改下。

Linux下截图工具

先介绍这3个,各个都是精品^_^
deepin-screenshot,这个是国产深度操作系统的内置截图工具, VeryGood 非常好,一般够用了,也非常好用。

sudo apt install deepin-screenshot

t2.pngt3.png
第二个就是 flameshot

sudo apt install flameshot

t5.pngt4.pngt1.png
功能也很强大,一般都需求这个工具也都有,也推荐使用。

sudo apt install shutter
snap install shutter

t7.pngt6.png
最后这个工具,有点可惜。高版本的 ubuntu 不能通过sudo apt install shutter来安装,不过仍然可以通过 snap的方式安装
个人认为功能强过上述两款,但比较旧,不更新了且只支持xorg环境 wayland不支持。

把grep出来都文件用sed来替换

应用场景:
在某服务器上, 没有桌面环境,不能愉快的用 ctrl+H 来替换,
此时

  sed -i s/find_str/replace_str/g `grep find_str -rl  ./`

这样做可以帮你省很多事情
其中 find_str 是需要被替换都字符串
replace_str 是需要替换成都字符串
over。

nginx vhost 加载顺序

当site-enable(ubuntu) 或者conf.d 有多个 配置文件时 各个配置文件的加载顺序是怎么样的呢?
顺序如下:

1.确切名称
2.以星号开头的最长通配符名称,例如“*.wuhao.pw”
3.以星号结尾的最长通配符名称,例如“site.*”
4.第一个匹配的正则表达式(按在配置文件中出现的顺序)#如 ~^(?<user>.+).example.net$;

有多个确切的名称时 按什么顺序来加载配置文件呢
按配置文件的名称根据 ASCII 对配置文件进行排序 如果想优先加载配置 a打头
参考文档:
http://nginx.org/en/docs/http/server_names.html

文件644目录755

方法1:

find /path -type f -exec chmod 644 {} \;  
find /path -type d -exec chmod 755 {} \;  

方法2:

chmod -R 644 *
find /path -type d -exec chmod 755 {} \; 

方法1 直接用find来区别文件和目录
方法2则先设置所有的文件权限为644 ,再通过find来设置目录的权限。