linux定时清理数据库过期记录
cron服务是Linux的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:
/sbin/service crond start//没打开的话首先要打开。
/sbin/service crond stop
/sbin/service crond restart
/sbin/service crond reload
以上1-4行分别为启动、停止、重启服务和重新加载配置。
要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可
查看当前用户的crontab,输入 crontab -l;
编辑crontab,输入 crontab -e;
删除crontab,输入 crontab -r
添加任务
crontab -e //执行之后会打开一个文件。在文件中追加如下内容即可。
*/ * * * command
*/ * * * command
查询任务是否加了:
crontab -l -u root #查看root用户
*/ * * * command
*/ * * * command
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
crontab文件的一些例子(博主会在此处不定时增加例子):
- 每10分钟执行一个shell脚本。
*/10 * * * * /home/tmp/clear.sh
*/10表示每10分钟执行。
但是,有一个问题,就是,如果你想通过定时任务来调用执行***.php,那么,就可以这么写。
*/10 * * * * /usr/local/php/bin/php /home/shells/clearOutOfDate.php
上面这句话是可以定时运行的。我测试过。如果不行,请使用chmod 744 ***.php修改你的文件可执行权限(rwx的x一定要有,如果是root用户的话)。不行的话,可以提升权限至777再试试
我想说的问题是:如果你把
/usr/local/php/bin/php /home/shells/clearOutOfDate.php
这句话放在shell脚本里面,比如这样,

我自己也调了很久,但是这句话就是不会被执行。echo "你好啊"这句话是可以输出。找不到问题在哪里。所以建议大家在crontab定时执行php文件的时候,直接在
crontab -e 里面写
*/1 * * * * /usr/local/php/bin/php /home/shells/clearOutOfDate.php
就好了。另外注意 php /home/shells/clearOutOfDate.php是不能执行的。对于php的可执行文件要写全绝对路径。一般都会在/usr/local/php/bin/php目录下,可以找一找。
(2018-1-11日更)定时每个月处理一下日志文件。可以先看我的bash 命令:
#!/bin/bash cp success.log success/$(date +%Y-%m-%d).log
cp error.log error/$(date +%Y-%m-%d).log
cp login.log login/$(date +%Y-%m-%d).log echo "---------------------------" > success.log
echo "---------------------------" > error.log
echo "---------------------------" > login.log应用会产生日志对吧?但是我们一年下来总把日志追加在一个文件的话,文件越来越大。每次定时读写也是非常耗费内存的。所以,我们需要针对日志文件的积累情况,定一个合理的时间,把日志的内容取出来,按照日期归类。例如图中:
$(date +%Y-%m-%d)
就是按照年月日来把log文件归类。下面设置定时执行,因为我的日志产生的不是很多。每个月最多也就1M多一点。所以,我设置一下,每10天,归档一次log文件。这样可以减小后期追加log的IO消耗。命令如下:
* , * * /data/wwwroot/project1/wx/logs/copy.sh
表示每个月的1号和15号的凌晨3点会执行一次。
- (2018-1-11日更)crontab无法做到秒级执行,最小的粒度是分钟。不过可以变相实现秒级定时任务。
* * * * * "命令"
上面的全星号,可以实现每分钟运行。
* * * * * "命令"
* * * * * sleep 20; "命令"
* * * * * sleep 40; "命令"上面的三行 可以做到每20秒执行。也可以写一个循环脚本,在脚本内进行sleep骚操作。
定时任务不会执行的问题总结:
1 crond服务未启动
crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止。如果停止了就无法执行任何定时任务了,解决的方法是打开它:
crond
或
service crond start
如果提示crond命令不存在,可能被误删除了,CentOS下可以通过这个命令重新安装:
yum -y install crontabs
2 权限问题
比如:脚本没有x执行权限,解决方法:
增加执行权限,或者用bash abc.sh的方法执行
3 路径问题
有的命令在shell中执行正常,但是在crontab执行却总是失败。有可能是因为crontab使用的sh未正确识别路径,比如:以root身份登录shell后执行一个/root/test.sh,只要执行
./test.sh
就可以了。但是在crontab中,就会找不到这个脚本,比如写完整:
/root/test.sh
4 时差问题
因为服务器与客户端时差问题,所以crontab的时间以服务器时间为准。
5 变量问题
有时候命令中含有变量,但crontab执行时却没有,也会造成执行失败。
linux定时清理数据库过期记录的更多相关文章
- linux 定时清理session
php session 运营想让用户登陆网站就能永久保持登陆会话,感觉这是扯淡,因为视频播放1小时,所以我设置了两小时过期. 但是用户过多,导致session文件大量存储.产生上百万千万.服务器空间很 ...
- 基于SpringBoot实现定时任务的设置(常用:定时清理数据库)
1.构建SpringBoot工程项目 1)创建一个Springboot工程,在它的程序入口加上@EnableScheduling,开启调度任务. @SpringBootApplication @Ena ...
- 定时删除日志文件---linux定时清理日志
linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...
- crontab的相关设置&linux定时备份数据库
对于才了解crontab的人来说,应该按照以下的步骤来设置crontab 1.首先要检查是否装了crontab http://blog.sina.com.cn/s/blog_4881040d01011 ...
- Win和Linux定时备份数据库
项目的数据库需要每天备份,但是手动备份太麻烦而且容易忘,所以通过定时任务执行脚本备份数据库,服务器有Windows和Linux,所以两种都记录一下. 一.Windows 首先写好脚本,这里不多说,因为 ...
- Linux定时清理日志脚本
在应用疯狂打日志的情况下,服务器很容易被塞满磁盘. 先要写一个shell脚本,脚本如下. #!/bin/bash #----------------使用规范---------------- #1.该文 ...
- linux系统清理僵尸进程记录
在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程. 在fork()/execve()过程中,假设子进程结束时父进程仍存在, ...
- Linux定时清理30天前的Tomcat日志脚本
一.在tomcat的log路径下新建.sh脚本文件clean.sh,内容如下:#!/bin/bashlogs_path="/mnt/tomcat/apache-tomcat-8.5.23/l ...
- linux 定时备份数据库
说明 检查Crontab是否安装 若没有 需要先安装Crontab定时工具 安装定时工具参考(https://www.cnblogs.com/shaohuixia/p/5577738.html) 需要 ...
随机推荐
- Oracle WorkFlow(工作流)(一)
转载自:http://hi.baidu.com/quce227/item/3dee702c66466a0343634a58 1概述 1.1工作流的概念 Workflow是EBS的基础架构技术之一,系统 ...
- 【一天一道LeetCode】#99. Recover Binary Search Tree
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Two ele ...
- iOS中 UIToolBar 技术分享
UIToolBar存在于UINavigationController导航栏控制器中,而且默认被隐藏.当设置UIToolBar显示,或者存在UITabBarController且tabbar被隐藏的时候 ...
- 开始ITGEGE教育社区的视频录制----嵌入式基础知识讲解
从8月份开始,陆陆续续要对我的第一份兼职工作ITGEGE讲师做教学视频录制了,本人水平有限,我只讲一些开发在工作中的应用,其它细节的东西不做深究,毕竟本人工作经验和精力也有限,白天要上班,特别是最近又 ...
- Linux搭建GIT 使用Eclipse创建并上传Git项目 EGit操作
Linux搭建Git 1. gitblit服务器文档 http://gitblit.com/setup_go.html 2. 安装jdk 参考 http://blog.csdn.net/jerome_ ...
- Ajax 初步学习总结
Ajax是什么 Ajax是(Asynchronous JavaScript And XML)是异步的JavaScript和xml.也就是异步请求更新技术.Ajax是一种对现有技术的一种新的应用,不是一 ...
- Linux 学习笔记_12_文件共享服务_3_NFS网络文件服务
NFS网络文件服务 NFS---- Network File System 用于UNIX/Linux[UNIX类操作系统]系统间通过网络进行文件共享,用户可以把网络中NFS服务器提供的共享目录挂载到本 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十七)
因为现在游戏内容原来越多了,里面需要存储的数据也多了起来,所以一个较好的办法是将所有的比赛数据存到同一个地方便于存取. 我们需要新建一个游戏数据类,该类贯穿所有需要的场景,存放一切比赛需要的数据.从这 ...
- 最新的App上架教程Object-C
准备 开发者账号 完工的项目 上架步骤 一.创建App ID 二.创建证书请求文件 (CSR文件) 三.创建发布证书 (CER) 四.创建Provisioning Profiles配置文件 (PP文件 ...
- AngularJS进阶(十六)脏值检查
脏值检查 注:请点击此处进行充电! 需求 在项目开发过程中,需要对药店信息进行更改.如下图所示.现在的需求是:当药店信息没有发生变化时,点击"更新信息"按钮,提示"药店信 ...