linux /var目录空间清理以及清理后不释放解决

5 篇文章 1 订阅
1 篇文章 0 订阅

干货

cd /var/spool/postfix/maildrop
rm * 

lsof |grep deleted|awk '{print $2}'|xargs kill -9

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

在Linux或Unix系统中,通过使用rm删除文件的原理,rm命令只是从文件系统的目录结构上解除链接(unlink),也就是说如果文件是被打开的(有一个进程正在使用该文件句柄),那该进程还是可以读取已删除的文件,删除的时候文件正在被使用中,所以并不释放磁盘空间。
可以杀死使用删除文件的进程来释放空间。
lsof |grep deleted|awk ‘{print $2}’|xargs kill -9

/var 100% ,后经查看发现是 /var/spool/postfix/maildrop 有大量文件.
发现是crontab 每次执行任务后会发送邮件,接受者是在他的配置文件 “/etc/crontab” 通过 MAILTO=root’ 来设置的,默认是root,如果执行输出没有十分必要要用邮件发送的话,可以修改此处。

下面是两个解决方法

方法一:

修改“/etc/crontab”

将‘MAILTO=root’替换成‘MAILTO=""’修改之后没有成功,需要重启crond服务才可以

也可从在crontab(crontab -e)中最前面直接加入MAILTO=""
方法二:

如果是我们不关心的备注型等输出我们完全可以让其输出到 /dev/null 这样就不会因为发送失败到导致在/var/spool/postfix/maildrop下面产出什么文件。

例如:

*/10 * * * * /tmp/test.sh >/dev/null 2>&1
经过测试发现果然没有再出现新增的文件。当然如果输出内容有需要保存的话,可以输出到指定文件。比如下面这样

*/10 * * * * /tmp/test.sh >/log/test.log

重启crontab服务

service cron stop
service cron status
* cron.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Mon 2020-12-14 16:55:57 CST; 8s ago
  Process: 5022 ExecStart=/usr/sbin/cron -n (code=exited, status=0/SUCCESS)
 Main PID: 5022 (code=exited, status=0/SUCCESS)

Dec 14 16:55:02 libossnx-11 cron[11417]: pam_systemd(crond:session): Failed to connect to system bus: Resource temporarily unavailable
Dec 14 16:55:02 libossnx-11 CRON[11385]: (web) CMD (/web/jsonproc/JSON_B2GPSP_ORDER_ADD.sh >>/log/cronlog/JSON_B2GPSP_ORDER_ADD.log)
Dec 14 16:55:26 libossnx-11 CRON[11425]: pam_unix(crond:session): session closed for user web
Dec 14 16:55:26 libossnx-11 CRON[11114]: pam_unix(crond:session): session closed for user web
Dec 14 16:55:26 libossnx-11 CRON[10823]: pam_unix(crond:session): session closed for user web
Dec 14 16:55:56 libossnx-11 systemd[1]: Stopping Command Scheduler...
Dec 14 16:55:56 libossnx-11 CRON[10734]: pam_unix(crond:session): session closed for user web
Dec 14 16:55:57 libossnx-11 CRON[11167]: pam_unix(crond:session): session closed for user web
Dec 14 16:55:57 libossnx-11 CRON[5241]: pam_unix(crond:session): session closed for user web
Dec 14 16:55:57 libossnx-11 systemd[1]: Stopped Command Scheduler.
libossnx-11:/etc/init.d # service cron start
libossnx-11:/etc/init.d # service cron status
* cron.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-12-14 16:56:20 CST; 44s ago
 Main PID: 46198 (cron)
    Tasks: 1 (limit: 65535)
   CGroup: /system.slice/cron.service
           `-46198 /usr/sbin/cron -n

Dec 14 16:57:01 libossnx-11 cron[51993]: pam_unix(crond:session): session opened for user web by (uid=0)
Dec 14 16:57:01 libossnx-11 cron[51999]: pam_unix(crond:session): session opened for user web by (uid=0)
Dec 14 16:57:01 libossnx-11 cron[51260]: pam_unix(crond:session): session opened for user web by (uid=0)
Dec 14 16:57:01 libossnx-11 cron[52004]: pam_unix(crond:session): session opened for user web by (uid=0)
Dec 14 16:57:01 libossnx-11 cron[51994]: pam_unix(crond:session): session opened for user web by (uid=0)
Dec 14 16:57:01 libossnx-11 cron[52007]: pam_unix(crond:session): session opened for user web by (uid=0)
Dec 14 16:57:01 libossnx-11 cron[52014]: pam_unix(crond:session): session opened for user web by (uid=0)
Dec 14 16:57:01 libossnx-11 cron[51987]: pam_unix(crond:session): session opened for user web by (uid=0)
Dec 14 16:57:01 libossnx-11 cron[51996]: pam_unix(crond:session): session opened for user web by (uid=0)
Dec 14 16:57:01 libossnx-11 cron[51990]: pam_unix(crond:session): session opened for user web by (uid=0)

crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (crontab_root installed on Mon Dec 14 16:45:24 2020)
# (Cronie version 4.2)
MAILTO=""
####/etc/sysctl.conf vm.drop_caches=3 or 
####10 22 * * * echo 3 > /proc/sys/vm/drop_caches >/log/root.log




### 回答1: 解决方案是清理/var目录中不需要的文件和文件夹。可以使用命令如"df -h"来查看磁盘空间使用情况,"du -sh /*"来查看各个目录的大小,再根据需要删除文件。 另外可以使用工具如logrotate来控制日志文件的数量和大小。 ### 回答2: 当Linux的/var目录空间满了,意味着该目录下的存储空间已经达到其最大容量,无法再存储更多的数据。这可能会对系统的正常运行产生影响,并可能导致重要数据丢失。以下是解决此问题的几种方法: 1.清除/var目录下不需要的文件:/var目录下存储了许多系统或应用程序的日志、缓存文件等。清除这些文件可以释放一些空间。可以使用如下命令查找之前几天内修改过的大文件:find /var -mtime +7 -size +10M -ls。利用查找结果,我们可以通过rm命令删除不需要的文件。 2.移动/var目录下的文件到其他磁盘:如果有其他空余磁盘,可以将/var目录下的数据移动到其他磁盘上。这个过程可以通过创建符号链接或使用rsync命令来完成,例如:ln -s /mnt/data/var /var。 3.删除不再使用的软件包或应用程序:/var目录下还可能包含许多不再使用的软件包或应用程序,这些可以使用软件包管理器或手动卸载来删除。 4.扩大/var分区:如果以上方法都无法解决问题,那么就需要扩大/var分区来增加存储空间。这种情况下,需要了解系统当前的磁盘布局并运行磁盘分区工具来调整分配情况。 在解决问题之前,需要仔细分析/var目录空间满的原因,并确保采取正确的解决方法。同时,为了避免类似问题,建议对系统日志进行定期维护和备份。 ### 回答3: Linux的/var目录是一个存储系统相关数据的目录,包括日志文件、临时文件、数据库、邮件队列等等。如果/var目录空间满了,将会对系统的正常运行造成影响,并可能导致系统崩溃。针对这个问题,可以进行以下的处理: 1. 查看/var目录下都有哪些文件占用了大量的空间,可以使用du或df命令来查看目录下的文件大小和剩余空间状况。使用du命令来查看具体文件或目录的大小,使用df命令来查看磁盘分区的空间使用情况。 2. 清除不必要的文件,例如日志文件、临时文件、备份文件等等。可以使用rm命令来删除文件,或者使用logrotate命令来轮换或删除日志文件。 3. 对于一些大型的数据文件,可以考虑将它们移到另外的位置,例如使用NFS等网络存储系统或者扩大硬盘容量等方法。 4. 对于一些系统文件,如数据库、邮件队列等,需要进一步了解它们的使用情况,避免错误地删除或移动这些文件而导致系统崩溃。 5. 另外,可以考虑将/var目录挂载到独立的分区下,以求更好地管理空间使用。 综上所述,在遇到/var目录空间满的情况下,需要先进行仔细的排查和分析,以确认具体的问题和解决方法。需要注意的是,对于系统关键文件的操作,一定要谨慎处理,以免造成不必要的损失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云浩舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值