记录下linux下相关问题的处理方式,持续更新中……
1.批量杀死相同或相似名称进程
例如:解决cron引发大量sendmail、postdrop进程问题,cron这种问题可以采用重定向的方式解决,这儿只介绍如何杀死大量进程(打开crontab -e,将计划任务重定向"&> /dev/null")
ps -ef | grep postdrop | grep -v grep | awk '{print "kill -9 " $2}' | sh
上述命令将postdrop进程筛选出来,通过awk选择第二个进程id,执行kill
2.rm -rf * 出现 Argument list too long
我们执行rm -rf * 出现命令参数台多的问题
rm -rf *
报错:
-bash: /bin/rm: Argument list too long
-bash: /usr/bin/logger: Argument list too long
解决方式
ls | xargs -n 9 rm -rf
ls列出当前目录下的所有文件,以空格作为分隔, xargs是一个过滤器, -n 9 表示每9个文件作为一组,这样命令行就不会过长了。
3.rm -rf 之后磁盘空间没有释放
在运行过程中,经常会出现磁盘空间不足的情况,时不时的收到系统告警,心慌慌~~~,一查看又是某某程序日志问题,进入日志目录,rm -rf *,清空日志,万事大吉了么,查看下空间
df -h
磁盘空间没有释放,什么原因导致的呢
原来rm 其实是删除该文件名到文件真正保存到磁盘位置的链接,此时该文件句柄还被服务打开,因此对应的数据并没有被回收,当服务进程停止或者重启后,占用的存储空间才被释放
可以通过如下命令查看进程id,然后终止进程,就可以删除文件了
lsof | grep deleted
当生产过程中出现问题无法重启怎么办?
可以采用如下方式,将一个空字符串覆盖日志文件
echo “” > 日志文件.log
或者
cat /dev/null > 日志文件.log