linux list 添加失败,linux运维实战案例之Argument list too long错误与解决方法

1、错误现象

这是一台Mysql数据库服务器,在系统中运行了很多定时任务,今天通过crontab命令又添加了一个计划任务,退出时发生了如下报错:

#crontab -e

编辑完成后,保存退出,就出现下面如下图所示错误:

e6edd375e10b8bedd819ccb975e2d7c9.png

2、解决思路根据上面报错的提示信息,基本判定是磁盘空间满了,那么首先从检查服务器的磁盘空间开始,根据报错提示应首先检查/tmp磁盘空间,然后应该是根分区的磁盘空间,最好是系统其它分区的磁盘空间。

3、问题排查通过df命令查看了这个服务器上所有磁盘分区的情况,/tmp分区空间还有很多,根分区也还有很大剩余空间,都不存在问题,最后发现是/var磁盘分区空间使用已经100%了,到这里已经定位了问题,是/var磁盘空间爆满导致的,因为crontab会在保存时写文件信息到/var目录下,由于这个磁盘没有空间了,报错也是理所当然了。

4、解决问题

接着通过“du -sh”命令检查/var目录下所有文件或目录的大小,发现/var/spool/clientmqueue目录占用了/var整个分区大小的90%,那么/var/spool/clientmqueue目录下的文件都是怎么产生的呢,是否能删除?下面简单介绍下/var/spool/clientmqueue目录的文件是怎么生成的。

可以打开/var/spool/clientmqueue目录下的一些文件看看,都是一些邮件信息,邮件内容大多是关于Cron Daemon的,其实/var/spool/clientmqueue就是一个邮件暂存的目录,linux服务器在默认情况下会发一些邮件,比如当cron执行的程序有输出内容时,就会发送邮件信息到执行cron进程的用户,系统在发送邮件时,首先会把邮件拷贝到/var/spool/clientmqueue目录下,然后等待MTA程序(mail transfer agent)来处理,而MTA主要的功能是把这个目录中的邮件转移到/var/spool/mqueue目录下,然后再通过sendmail服务发送到真正的目的地。于是检查了这个服务器的sendmail服务,发现没有开启,这样/var/spool/clientmqueue目录非常大的原因就找到了:没有发送邮件的客户端服务,所有邮件就都堆积在这个目录下了。

在确认完这些内容都没用后,切换到/var/spool/clientmqueue目录下,执行rm命令删除所有的文件时,出现了错误:

[root@localhost clientmqueue]# rm *

/bin/rm: argument list too long

此时出现了本文开头我们谈到的问题。

当Linux下试图传递太多参数给一个系统命令时,就会出现”Argument list too long”错误。这个是Linux系统一直以来都有的限制。查看这个限制可以通过命令“getconf ARG_MAX”来实现,如下图所示:

5598ab767ff8989606f331488f48f49d.png

这是Centos6版本的一个最大值,而在Centos5.x中,这个值相对较小,如下图所示:

d48c16df08dd06fa64173a65c610c977.png

所以这个问题更多时候是发生在linux低版本中。

知道了产生问题的原因,解决方法就很多了,这里提供四种解决此问题的方法,分别介绍如下:

(1)手动把命令行参数分成较小的部分

例如:

rm [a-n]* -rf

rm [o-z]* -rf

这种方法里最简单的,但是相对较弱智,因为必须要知道怎么平均分割文件,同时对于文件数目极多的情况,需要输入很多遍命令。

(2)使用find命令删除

基本原理是通过find命令筛选文件列表,把符合要求的文件传递给一系列命令。这种方法是最简洁的,也就最有效的。

例如:

find /var/spool/clientmqueue -type f -print -exec rm -f {} \;

但是这种方法也有缺点:就是需要遍历所有文件,因而在文件数量极多时比较耗时。

(3) 通过shell脚本

这种方法是通过编写一个shell脚本,然后通过循序语句实现,与find方法类似。

例如,可以编写如下脚本:

#!/bin/bash

# 设定需要删除的文件夹

RM_DIR='/var/spool/clientmqueue'

cd $RM_DIR

for I in `ls`

do

rm -f $I

done

(4)重新编译Linux内核

这种方法需要手动增加内核中分配给命令行参数的页数,打开kernel source下面的include/linux/binfmts.h文件,找到如下行:

# define MAX_ARG_PAGES 32

将”32“改为更大的值,例如64或128,然后重新编译内核。

此种方法永久有效,可以彻底解决问题,但是比较复杂,推荐给高级用户使用,没有Linux经验的用户不建议用这种方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件项目周报模板_一份高质量的职场工作周报,要这样写

周报是会呼吸的痛,它会在每个周五来回滚动。几乎每个职场人都会为周报所折腰,因为周报看起来是小事,但又不仅仅是小事。周报,是职场人士对一周工作的总结和记录,是展示自己工作状态和成果的重要载体,是领导…

linux 多线程客户端服务端通信,[转载]多线程实现服务器和客户端、客户端和客户端通信;需要代码,留言...

一、实验名称动手打造自己的 IM二、实验目的1本次实验旨在锻炼大家的Socket编程能力,以日常生活中广泛使用的IM软件为背景,培养大家对于网络编程的兴趣。2、通过本次实验,培养linux环境下网络编程能力,使得我们对网络应用层的网络…

linux 设置ssh并发度,在linux如何使用ControlPersist加快SSH连接速度的问题

不经意间我们又来到了文章的学习,在众多学习中,我们的文章也许不起眼,但是想必大家都有很多问题吧,所以重要的下面我们就来讲解一下,大家一定要认真看奥!!Linux系统进行服务器配置管理迁移的时候…

linux下c标准库位置,C 标准库 IO 使用详解

其实输入与输出对于不管什么系统的设计都是异常重要的,比如设计 C 接口函数,首先要设计好输入参数、输出参数和返回值,接下来才能开始设计具体的实现过程。C 语言标准库提供的接口功能很有限,不像 Python 库。不过想把它用好也不容…

linux docker查看容器状态,Docker容器状态命令行工具——Ctop

Ctop是和Linux top展示效果类似的一个容器状态监视工具,Ctop可以动态的显示容器的cpu、内存、网络的使用情况。一共有两个叫Ctop的命令行工具,分别由GO和Python实现。Python实现的版本功能更强大一些。GO实现版本安装Linux$ wget https://github.com/bci…

plsql表设置主键_对复制实施主键约束

作者:Pedro Gomes 译:徐轶韬在本文中,我们介绍一个配置选项,该选项控制复制通道是否允许创建没有主键的表。这延续了我们最近在复制安全性方面的工作,在该工作中,我们允许用户强制执行权限检查和/或强制执行…

一键刷入twrp_小米/红米手机到手了该怎么解锁和刷 twrp

资源准备:1.百度搜索小米解锁申请,进行申请解锁并下载解锁工具。如图。文件夹里有对应的驱动,要安装好。2.对应机型的 twrp。在 w大的微博下找(wzsx150)或者在酷安找或者去twrp官网。3.edxp相关的包(两个)(不需要框架的可以忽略)4.手(第一步&…

如何将计算思维融合到C语言程序设计中,浅析基于计算思维的C语言程序设计教学...

浅析基于计算思维的C语言程序设计教学摘要:C语言是关键词:计算思维;C语言;教学改革中图分类号:TP3 文献标识码:A文章编号:1009-3044(2020)16-0145-02C语言是计算机相关专业的必修基础课程,是学生接触的第一…

一直在构建工作空间_智能工作空间让Dropbox拥有无限扩展潜力

智能工作空间让Dropbox拥有无限扩展潜力Dropbox一直以“让工作变得更好”的使命。在竞争激烈的市场中,Dropbox有着卓越的历史,就连苹果创始人史蒂夫乔布斯曾经提出来要收购它。Dropbox的智能工作空间是一个开放的生态系统,由于其开放集成的特…

黄金分割小数点后100位小数的c语言编程,黄金分割数小数点后100位

满意答案su304_3212013.03.25采纳率:57% 等级:12已帮助:10017人黄金分割奇妙之处,在于其比例与其倒数是一样的。例如:1.618的倒数是0.618,而1.618:1与1:0.618是一样的。确切值为根号51/2黄金分割数是无理…

去超市一定要存包吗_去东京一定要去的富士河口湖

第一次去河口湖是一个人~也没有留宿,但当时就想说一定要来这边住两天泡温泉,因为实在太!美!了!因为下面这个预告所以就订了一栋小木屋,这是闺蜜先去日本前线发回的~立马改了酒店日期…

分析启动耗时 android,Android app启动耗时分析

首先编译你的程序,打开Android Studio里面的Android Monitor,找到下图的按钮<img src"//bbsmax.ikafan.com/static/L3Byb3h5L2h0dHBzL3BpYzIuemhpbWcuY29tL3YyLTA4Zjk1ZmUxMjM5ODgwNTkzMDU5YjE3YzFlMGU5NjcxX2IucG5…

android+内存清理+代码,最新版本:Android一键式清理,内存清理功能的实现

Android一键式清理,内存清理功能的实山清理大师等均提供一键式清理和一键加速等功能。实际上,它们杀死了一些后台进程以达到释放内存的目的。基本思想是列出所有正在运行的进程,检查它们的重要值(RunningAppProcessInfo.importance&#xff0…

cups共享linux打印机_linux入门-映射网络驱动器

linux入门-映射网络驱动器在日常中,我们不会时时刻刻远程着linux服务器,那么有没有办法可以让我们在window电脑上映射linux的磁盘呢?这是可以实现的,这里我们就要介绍samba了。sambaSamba是在Linux和UNIX系统上实现SMB协议的一个免…

html如何将设置文本效果,css如何对文本进行修饰

color属性:设置文本文字颜色。用法如下:color:颜色值;color属性可以设置的合法颜色值包括:16进制颜色值(例:#ffffff),rgb颜色值【例:rgb(0,0,0)】,rgba颜色值【例:rgb(0,…

HTML与cgi post传递与接收,CGI实例--表单GET与POST示例

CGI概述CGI(Common Gateway Interface: 公用网关接口)规定了Web服务器调用其他可执行程序(CGI程 序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互, 也就是CGI程序通过读标准输入,接受Web浏览器发送给Web服务器的信息, 进行处理, 将响应结果再通过…

html鼠标滑轮换图片,JavaScript实现鼠标滚轮控制页面图片切换

鼠标上的滚轮是一个不错的东东,为什么这么说,因为它能帮助我们快速的浏览网页,快速的进行长篇文章的阅读。对于web前端的我们来说又怎么能不注重这个鼠标滚轮呢,那么它能如何让用户更好的浏览网页呢?本文主要介绍JavaScript实现鼠…

电脑视频html5全屏掉帧,Windows 10使用自带的电影和电视全屏看视频时掉帧(画面卡顿)...

Windows 10自带的“电影和电视”应用能应付一些常见的视频格式,还能播放360度全景视频,对部分人来说用它就够了,不需要额外安装其它播放视频的应用。在使用电影和电视全屏播放视频的过程中,部分人可能会出现掉帧情况,画…

微型计算机的alu部件是包含在,微型计算机的ALU部件是什么?

计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,亦称算术逻辑部件(ALU)。计算机运行时,运算器的操作和操作种类由控制器决定。运…

工具系列:TensorFlow决策森林_(5)使用文本和神经网络特征

文章目录 设置使用原始文本作为特征使用预训练的文本嵌入同时训练决策树和神经网络构建模型训练和评估模型 欢迎来到 TensorFlow决策森林( TF-DF)的 中级教程。 在本文中,您将学习有关 TF-DF的一些更高级的功能,包括如何处理自…