centos 不小心清理了centos 查看定时任务务 有没有影响

查看: 4742|回复: 12
Centos释放内存以及自动脚本
最近服务器老是运行缓慢
free -m 查看,发现内存跑满了。
再 top,然后按下shift+m,也就是按内存占用百分比排序,发现排在第一的进程,才占用0.9%。
那是什么占用的呢?
百度了一下,据说是centos为了提高效率,把部分使用过的文件缓存到了内存里。
如果是这样的话,我又不需要这样的文件性能,那就可以释放。如下两个命令就可以:
#echo 3 & /proc/sys/vm/drop_caches
内存释放后,就占用很低了
可以定时执行吗?百度了一个脚本过来。
# 脚本开始
#
##########################
#&&Freemem
##########################
#!/bin/sh
Time1=`date +%Y%m%d`
Time2=`date +%k:%M:%S`
mkdir /backup/freemem/
cd /backup/freemem/
#
#echo &&&memstat_$Time1.log
#
echo $Time1--$Time2 &&memstat_$Time1.log
echo &------------------& &&memstat_$Time1.log
echo &The mem stat is :& &&memstat_$Time1.log
echo && &&memstat_$Time1.log
free &&memstat_$Time1.log
echo && &&memstat_$Time1.log
#sync
echo &....Freeing......& &&memstat_$Time1.log
echo &&&&memstat_$Time1.log
#
echo 1 & /proc/sys/vm/drop_caches
echo 2 & /proc/sys/vm/drop_caches
echo 3 & /proc/sys/vm/drop_caches
echo &---& OK ! & &&memstat_$Time1.log
echo &&&&memstat_$Time1.log
free &&memstat_$Time1.log
echo &=========================================================================&&& memstat_$Time1.log
echo &&&&memstat_$Time1.log
echo &&&&memstat_$Time1.log
cd -
cat /backup/freemem/memstat_$Time1.log
# 脚本结束复制代码
另外一个脚本如下:
# vim /backup/freemem/freemem.sh
#!/bin/bash
used=`free -m | awk 'NR==2' | awk '{print $3}'`
free=`free -m | awk 'NR==2' | awk '{print $4}'`
echo &===========================& && /backup/freemem/mem.log
date && /backup/freemem/mem.log
echo &Memory usage | [Use:${used}MB][Free:${free}MB]& && /backup/freemem/mem.log
if [ $free -le 200 ] ; then
& && && && && & sync && echo 1 & /proc/sys/vm/drop_caches
& && && && && & sync && echo 2 & /proc/sys/vm/drop_caches
& && && && && & sync && echo 3 & /proc/sys/vm/drop_caches
& && && && && & echo &OK& && /backup/freemem/mem.log
else
& && && && && & echo &Not required& && /backup/freemem/mem.log复制代码
赋予脚本执行权限& &chmod 777 /backup/freemem/freemem.sh
或者chmod +x ./backup/freemem/freemem.sh
定时执行的办法:echo &*/30 * * * * root /backup/freemem/freemem.sh& && /etc/crontab
此外还可以通过修改/etc/sysctl.conf的方法来达到自动释放缓存的目的。& &但是内存不够用,最好还是去找找其他的原因,比如程序设置是否合理,是否突发访问量很大,或者程序设计不合理导致内存溢出等,毕竟操作系统本身设计会考虑各方面的问题,强制腾出cache的大小,可能只是把问题给暂时屏蔽了,不利于判断问题的所在。
不喜欢伸手党
技术分享要加分。
支持下~~不过我认为linux运行缓慢还是得分析下应用,这个释放内存除了查看free -m时美观些,应该没有多大作用
嗯,记号!我不是伸手党,先收藏。若干年以后有用了,再翻来看看~
先收藏 若干年以后有用了,再翻来看看~
另外只放了个SS有用吗
这个不知有没有用
swap 使用量是多少?
我觉得不用特意去释放。除非真的不够用了。
多此一举。。。你比操作系统还牛了
对于操作系统而言 cache占用的内存是随时可以被释放的 属于可用内存。Windows都有类似的机制,你在任务管理器看到的可用内存其实很多都被用于cache了
打开任务管理器 看物理内存那一栏 你会发现真正“空闲”的内存很少。多数都在“已缓存”里
爆内存还是自己找原因比较好
感谢分享,已经转载。
Powered by安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&博客分类:
最近作产品并发测试的时候,因为日志量比较大,日志系统(Mysql数据库)很快将磁盘空间写满。首先想到用crontab写定时任务监控mysql占用的空间。思路大致如下:
1、首先通过
select round(sum((DATA_LENGTH+INDEX_LENGTH)/),3) as size from INFORMATION_SCHEMA.TABLES where TABLE_NAME IN(?)
监控,如果超过阀值则执行清理
2、导出jar备用
3、定义crontab任务 调用jar。参考http://zh.wikipedia.org/wiki/Cron 定义任务脚本
*/1 * * * * /home/archive_log.sh
archive_log.sh内容如下
java -cp /home/archive_log.jar
com.XXX.Archive
最后 service crond reload 刷新任务列表
4、遇到的问题总结
开始任务不执行,排查过程如下
1)查看/var/log/cron有输出
2)查看/var/spool/mail/root提示java命令不识别(JAVA_HOME已经定义)
于是在archive_log.sh中加入
JAVA_HOME=/usr/bin/jdk1.7.0_51/
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME HADOOP_HOME PATH CLASSPATH
另外开始写成java -cp archive_log.jar com.XXX.Archive提示找不到main class,-cp写成绝对路径即可
shuaizhuaidym
浏览: 6471 次
来自: 北京1、定时任务crond介绍...&
2、crond定时任务限权...&
3、Crontab用法...&
4、Crontab命令的书写格式...&
5、定时服务器时间同步...&
6、写定时任务注意点..
7、调试定时任务...&
1、定时任务crond介绍
1&定时任务软件种类
at&适合仅执行一次就结束的调度命令,需要启动一个后端的atd服务。
crontab&需要启动一个服务crond才行,crond服务通过crontab命令实现。
anacron&无法周期性执行,只能以天为周期,但有个特点,在关机状态下未执行的任务,下次开机时可以补上执行
注:crontab为最常用的定时任务。
2&crontab工作
运行linux后,开机自启动crond任务,系统会每分钟检查是否有要执行的任务工作(循环检测)
默认系统中可以登陆的用户,都可以使用crontab定义计划任务。不过,可以通过/etc/cron.allow文件限制权限。
3&crontab支持两种状态:
a.直接编写计划任务;
b.使用目录的方式,放在目录里面的都会定时执行,定时目录可在/etc/crontab中设定。
2、crond定时任务限权
可对各用户使用定时任务进行管理
1)拒绝用户使用crontab任务
在/etc/cron.deny中添加要拒绝的用户名,格式如下:
2)允许用户访问crontab任务
在/etc/cron.allow中添加要允许的用户名,格式如下:
3)定期执行一个目录下的文件
在/etc/crontab中添加目录,格式如下:
01&*&*&*&*&root&run-parts&目录
注:使用run-parts可定义定期执行的目录
4)限权测试
1&添加用户
[root@test&~]#&useradd&test
[root@test&~]#&echo&123456&|passwd&test--stdin&&#&==非交互模式创建密码
Changing&password&for&user&test.
passwd:&all&authentication&tokensupdated&successfully.
2&拒绝测试
[root@test&~]#&cat&/etc/cron.deny&
[root@test&~]#&
[root@test&~]#&su&-&test
[test@test&~]$&crontab&-e
You&(test)are&not&allowed&to&use&this&program&(crontab)
See&crontab(1)&for&more&information
在cron.deny中加入用户后,该用户没有权限编辑定时任务
3&允许测试
[root@test&~]#&cat&/etc/cron.allow
[root@test&~]#&su&-&test
[test@test&~]$&crontab&-e&&&#&==test用户编辑成功
*/1&*&*&*&*&echo&successful&&/tmp/a.log
[test@test&~]$&crontab&-l
*/1&*&*&*&*&echo&successful&&/tmp/a.log
在cron.allow中加入用户后,该用户能编辑定时任务
4&清空允许用户
[test@test&~]$&su&-&root
Password:&
[root@test&~]#&echo&&/etc/cron.allow
[root@test&~]#&su&-&test
[test@test&~]$&crontab&-l&&#&==test用户连查看的权限都没有
You&(test)are&not&allowed&to&use&this&program&(crontab)
See&crontab(1)&for&more&information
[test@test&~]$&cat&/etc/cron.deny
清空cron.allow允许用户后,该用户又被cron.deny拒绝,
得出结论:/etc/cron.allow优先于/etc/cron.deny配置
3、Crontab用法
[root@yang1&data]#&crontab&--help&&&#&==注:crontab&&l&&e都是直接操作/var/spool/cron/下当前用户名的文件
usage:&crontab&[-u&user]&file&&&&#&==指定某用户如crontab&&u&yang2&&e,编辑yang2家目录下的crontab
&&&&crontab&[-u&user]&[&-e&|&-l&|&-r&]
&&&&&&&&(default&operation&is&replace,per&1003.2)
&&&&-e&&&(edit&user's&crontab)&&#&==编辑当前用户的定时任务
&&&&-l&&&(list&user's&crontab)&&#&==查看当前用户的定时任务
&&&&-r&&&(delete&user's&crontab)&&#&==删除定时任务
&&&&-i&&&(prompt&before&deletinguser's&crontab)&#&==删除crontab文件内容,删前会有提示
&&&&-s&&&(selinux&context)
注:crontab&&e&编辑定时任务,退出时可以检查语法,直接编辑/var/spool/cron/root不能。如果大批量添加任务,则使用echo追加。
cron执行的每一项工作都会被纪录到/var/log/cron这个日志文件中,可以从这个文件查看命令执行的状态。
4、Crontab命令的书写格式
&&*&&&&&&*&&&&&*&&&&&&*&&&&&*&&&&/bin/sh&/scripts/yy.sh
&&分&&&&&时&&&&&日&&&&&月&&&&&周&&&&命令和文件路径
(00-59)&&(0-23)&&&(1-31)&&&(1-12)&&&&(0-6)&&&&&&&&&
所用符号表示意思
*&星号每的意思
-&减号连续一段时间,如:00&17-19&*&*&*&cmd&&每天下午17点,18点,19点执行一次命令
,&逗号多个时间段,如:00&10-11,17-19&*&*&*&cmd&每天的上午10,11点整,下午的17,18,19点整执行一次命令
/n&n代表数字,指每隔n时间执行一次,如:&*/2&*&*&*&*&cmd&每隔2分钟执行一次命令
30&12-16/2&*&**&cmd&
每天的中午12点到下午4点间,每隔2小时执行一次
*&23-7/1&*&*&25pxd&
注:这是一个错误的命令
日和周不能同时用,若要以月为间隔,则日或周必有一个有值
其它如:小时上有值,则分钟上也要有值
*/1&*&*&**&echo&yangrong&&&/var/log/yy&&&/dev/null&2&&1
每隔一分钟把yangrong打印到yangrong1文件中,但该命令无法执行,因为&&与&/dev/null不可同时使用
2)/dev/null&2&&1解释
0是标准输入&&&&使用&或&&
1是标准输出&&&&使用&或&&
2是标准错误输出&&使用2&或2&&
&/dev/null&2&&1&&即错误输出与标准输出全部重定向到空,可以写成1&/dev/null&2&/dev/null
3)关于重定向的作用
重定向到空可以避免碎片文件占用inode资源
重定向到一个指定log里,可以看任务是否执行
4)关于导致磁盘inode满情况分析
定时任务执行成功or失败时,程序会向上层发送mail,由于平时工作中不打开sendmail功能,所以邮件会存储在临时目录/var/spool/clientmqueue,随着执行的任务次数多,文件也会越来越多,直到某一天,添加文件时,提示No&space&left&on&device,主要问题原因不在于垃圾文件会占很大空间,而在于每个文件会占用inode节点。(centos6.4默认不装sendmail,可能不会导致这个问题发生)。
所以crontab规则后需加&/dev/null&2&&1。
注:&&&与&&/dev/null&2&&1不可同时存在,不然无法执行
5)重启crond服务
/etc/init.d/crond&status&&#查看当前运行状态
/etc/init.d/crond&restart&#重启
/etc/init.d/crond&reload&&#平滑重启
5、定时服务器时间同步
1)手动同步
[root@yang1&data]#&which&ntpdate
/sbin/ntpdate
[root@yang1&data]#&/sbin/ntpdate&
2)自动同步(使用定时任务)
#sync&systime&by&yangrong&at&&&&&&&&&&
*/5&*&*&*&*&/sbin/ntpdate&&/dev/null&2&&1
注:当局域网内的服务器足够多时(<span style="padding: 0 margin: 0 color: #+),则需自己在局域网搭建ntp&server
6、写定时任务注意点:
掌握了下面7点,写定时任务就不在犯错。
每个任务添加注释,谁写的,什么时间写的,完成什么需求?
执行脚本使用/bin/sh(防止脚本无执行权限),要执行的文件路径是从根开始的绝对路径(防止找不到文件)
尽量把要执行的命令放在脚本里,然后把脚本放在定时任务里。对于调用脚本的定时任务,可以把标准输出错误输出重定向到空。
定时任务中带%无法执行,需要加\转义
如果时上有值,分钟上必须有值
日和周不要同时使用,会冲突
&&与&/dev/null&2&&1不要同时存在
书写举例:
#backup&mysql&byyangrong&at&
30&4&*&*&*&/bin/shtar_mysql.sh&&/dev/null&2&&1&
7、调试定时任务
一个任务不能轻易的直接推上线上服务器,需要在测试服务器上测试好。
增加频率调试任务,如:生产环境2小时一次,测试机2分钟一次
加快时间调试任务,如:生产环境1天后执行,则添加任务后修改设备时间
重定向到一个日志里,查看任务执行情况。一个是定时任务后加log,一个是脚本后加log
环境变量可能导致问题
通过日志定位问题。&&tail&/var/log/cron
阅读(...) 评论()1、crontab -e,进入编辑界面
,表示每两分钟访问一次网页
3、保存退出,然后service crond start启动服务
4、chkconfig crond on设置开机自启动
基本格式 :
*  *  *  *  *  command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用或者 /1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache
crond不支持精确到秒
本文已收录于以下专栏:
相关文章推荐
cron是linux下的一个定时执行工具,可以在无需人工干预的情况下运行作业。
在VPS上,cron一般用来执行定时备份任务,非常方便。
Centos默认已安装cron,但是并不自动运行,可以用以...
cron服务是Linux的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:
/sbin/service crond start
/sbin/service crond stop
原文地址:/CentOS/help/61.html
crontab命令 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说...
实现linux定时任务有:cron、anacron、at等,这里主要介绍cron服务。名词解释:&#160;&#160;&#160;cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表。软件包安装:要使用...
vim /etc/crontab
&#160; 1 SHELL=/bin/bash
&#160; 2 PATH=/sbin:/bin:/usr/sbin:/usr/bin
&#160; 3 MAILTO=root
&#160; 4 ...
定时访问,后台在同样可以执行,但是不能保证进程结束后,依旧可以使用(其实是流氓行为,不应该存在),下面就介绍些有关东西
首先是AlarmManager这个类,获取实例不用说没重点说下其中的一些方法:...
先说一下我的系统,我使用的是阿里云的contos7.2,定时任务项目中使用过,但是还真没有配置过,说一下我踩过的坑首先我的系统上是已经安装ctontabs的,并且已经启动,不知道为什么定时任务一直没有...
安装crontab:
yum install crontabs
/sbin/service crond start //启动服务
/sbin/service crond stop //...
一、命令说明
&#160; &#160; psql是PostgreSQL的交互终端,等同于Oracle中的sqlplus。执行该命令连接数据库时, 默认的用户和数据库是postgres
&#160; &#160;&#160;
二、命令参数
&#160; &#160; -...
本文转载自博客园,原文地址:/peida/archive//2850483.html,网上讲crontab的文章很多,个人觉得这篇文章讲...
他的最新文章
讲师:王哲涵
讲师:王渊命
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 centos7 计划任务 的文章

 

随机推荐