Linux操作系统定时任务设置

适用人员:实施人员

1 <br>

场景描述:本文档主要用于处理linux系统上应用服务每天产生大量日志文件,长期积累下来可能会因为占用存储太大导致系统卡死或者是服务器宕机的现象发生!

操作说明:(此操作只能删除文件,不能删除文件夹)
(1)、cd /bin ;
(2)、vim cleanlogs.sh;
(3)、编辑脚本内容如下:
#! /bin/sh
find /opt/bosssoft/ntpay-produce-front/logs/ -mtime +7 -name “.“ -exec rm -rf {} \;
(4)、chmod +x cleanlogs.sh
(5)、[root@fs-database home]# crontab -e
00 18 * sh /bin/cleanlogs.sh
(6)、[root@fs-database home]# crontab -l
(7)、测试!

补充说明:

一、编辑清除日志的脚本
1、使用root用户编辑脚本文件,文件名自行定义,如:cleanlogs.sh
(1)、cd /bin ;
(2)、vim cleanlogs.sh;
(3)、编辑脚本内容如下:
#! /bin/sh
find /opt/bosssoft/ntpay-produce-front/logs/ -mtime +7 -name “.“ -exec rm -rf {} \;
代码注解:
删除文件命令:
find [path] -mtime +天数 -name [filename] -exec rm -rf {} \;
实例命令:
find /opt/bosssoft/ntpay-produce-front/logs/ -mtime +7 -name “*.log” -exec rm -rf {} \;
“+7”含义: 此命令参数表示保留从当前日期开始之前的7天日志记录;
(4)、文件授权
脚本授权可以通过chmod 命令对文件授权(root用户授权);

方式一: chmod +x cleanlogs.sh
方式二: chmod 777 cleanlogs.sh
二、添加定时任务
说明:linux系统任务调度分为系统任务调度和用户任务调度。
注解:
1、系统任务调度方式
举例:系统任务调度:写缓存数据到硬盘、日志清理等。
(1). crontab系统任务调度配置文件所在目录: /etc/crontab
[root@fs-database home]# vim /etc/crontab
[root@fs-database home]# vim /etc/crontab
{ ————-crond任务运行的环境变量
SHELL=/bin/bash ———-系统要使用的shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin ————系统执行命令的路径
MAILTO=root —————— crond任务执行信息通过电子邮件发送给root用户
HOME=/ ——————执行命令或者脚本使用时的主目录
}

For details see man 4 crontabs

Example of job definition:
# .———————— minute (0 - 59) ———-分
# | .——————- hour (0 - 23) ———-时
# | | .————— day of month (1 - 31) ————-天
# | | | .———- month (1 - 12) OR jan,feb,mar,apr … —————月
# | | | | .—— day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat ————-周几
# | | | | |
# * [user-name] command to be executed

00 12 sh /bin/cleanlogs.sh
代码注解:
以上代码表示:每天的12点整触发系统定时任务,默认用户为root,脚本查找路径$PATH
[user-name]:可以采用“用户+文件类型”方式或者是“文件类型”;
[command to be executed]:要执行的命令
(2). [root@fs-database home]# crontab -l ===================查询定时任务调度是否已添加
00 18
sh /bin/cleanlogs.sh
(3). 测试定时任务调度是否正常执行!
通过修改定时任务调度的时间调整测试任务知否正常执行!
如果执行失败,进入/var/spool/mail/下的root查看执行的日志信息!
2、用户任务调度方式
举例:用户定期需要执行的任务,如:重启服务、数据备份、定时邮件等。
存放路径:用户定义的所有任务都存放在/var/spool/cron/目录下,文件名与用户名一致!!!!

命令格式:
[minute] [hour] [day] [month] [week] [command]
实例:
20 13 * /bin/cleanlogs

操作命令:
(1)、[root@fs-database home]# crontab -e
(2)、[root@fs-database home]# crontab -l
(3)、测试!
特殊字符:
星号(*): 所有可能的值;
逗号 (,): 用逗号隔开的值指定一个列表范围,如,”1,2,5,7,8,9”
中杠 (-): 用证书之间的中杠表示一个整数范围,如“2-6”表示“2,3,4,5,6”
正斜线(/): 可以用正斜线指定时间的间隔频率,如“0-23/2”表示每俩小时执行一次;

三、crond服务

安装crontab:
yum install crontabs
服务操作说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status // 查看服务状态
查看crontab服务是否已设置为开机启动,执行命令:
ntsysv
加入开机自动启动:
chkconfig -level 35 crond on
四、crond命令详解:

命令格式:
crontab [-u user] file
crontab [-u user] [-e | -l | -r]
命令功能:
可以周期性的设置周期性的日志或者数据备份等工作。
命令参数:
-u user: 用来设定某个用户的crontab服务
file: 命令文件的名字,将file作为crontab的任务列表文件载入crontab。
-e: 编辑某个用户的的crontab文件内容。不指定,则编辑当前用户的crontab文件内容
-l: 显示某个用户的crontab文件内容
-r: 从/var/spool/cron/目录中删除某个用户的crontab文件;
-i: 在删除用户的crontab文件时给出明确提示。

五、重启服务实例
#!/bin/sh
function procnum()
{
num=ps -ef | grep appassembler | grep -v grep | wc -l
return $num
}
procnum
number=$?
if [ $number -eq 0 ]
then
cd /opt/bosssoft/appassembler/bin/
nohup ./main.sh &
fi