linux 定时任务详解 按秒设定

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 实现linux定时任务有:cron、anacron、at等,这里主要介绍cron服务。名词解释:   cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表。

实现linux定时任务有:cron、anacron、at等,这里主要介绍cron服务。

名词解释:

   cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表。

软件包安装:

要使用cron服务,先要安装vixie-cron软件包和crontabs软件包,两个软件包作用如下:

vixie-cron软件包是cron的主程序。
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

查看是否安装了cron软件包: rpm -qa|grep vixie-cron

查看是否安装了crontabs软件包:rpm -qa|grep crontabs

如果没有安装,则执行如下命令安装软件包(软件包必须存在)
rpm -ivh vixie-cron-4.1-54.FC5*
rpm -ivh crontabs*

如果本地没有安装包,在能够连网的情况下可以在线安装

yum install vixie-cron
yum install crontabs

查看crond服务是否运行:

pgrep crond

/sbin/service crond status

ps -elf|grep crond|grep -v "grep"

 

crond服务操作命令:

/sbin/service crond start //启动服务  
/sbin/service crond stop //关闭服务  
/sbin/service crond restart //重启服务  
/sbin/service crond reload //重新载入配置

 

cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/service crond start //启动服务

  /sbin/service crond stop //关闭服务

  /sbin/service crond restart //重启服务

  /sbin/service crond reload //重新载入配置

 

 

  你也可以将这个服务在系统启动的时候自动启动:

 

  在/etc/rc.d/rc.local这个脚本的末尾加上:

  /sbin/service crond start

 

  现在Cron这个服务已经在进程里面了,我们就可以用这个服务了

 

-------------------------------------

 

 

以Linux下定时备份mysql为例说明下

写一个简单的mysql备份shell脚本

vi

#!/bin/sh
da=`date +%Y%m%d%H%M%S`
mysqldump -u root -pdongjj --all-database>/root/mysqlbakup/$da

保存为 mysqlbak.sh

然后crontab-e

 0 3 * * * /root/mysqlbak.sh 

保存退出

 

相关命令----------------

crontab file [-u user]-用指定的文件替代目前的crontab。 
crontab-[-u user]-用标准输入替代目前的crontab. 
crontab-1[user]-列出用户目前的crontab. 
crontab-e[user]-编辑用户目前的crontab. 
crontab-d[user]-删除用户目前的crontab. 
crontab-c dir- 指定crontab的目录。 
crontab文件的格式:M H D m d cmd. 
M: 分钟(0-59)。 
H:小时(0-23)。 
D:天(1-31)。 
m: 月(1-12)。 
d: 一星期内的天(0~6,0 表示星期天)
   除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

这里时间只是到分,有两种方案可以按秒来运行,如下: 

 

第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间。

while true ;do

command

sleep XX //间隔秒数

done


第二种方案,使用crontab。

我们都知道crontab的粒度最小是到分钟,但是我们还是可以通过变通的方法做到隔多少秒运行一次。

以下方法将每20秒执行一次

crontab -e 
* * * * * /bin/date
* * * * * sleep 20; /bin/date 
* * * * * sleep 40; /bin/date 

说明:需要将/bin/date更换成你的命令即可


这种做法去处理隔几十秒的定时任务还好,要是每1秒运行一次就得添加60条记录。。。如果每秒运行还是用方案一吧。

每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这 个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。

查看crontab 执行的日志,可以在/var/log/cron* 查看,或者 0 3 * * * /root/mysqlbak.sh >/var/log/mysqlbak.log 2>&1 把日志定向出来查看。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
监控 Ubuntu Linux
linux下添加定时任务
linux下添加定时任务
45 0
|
10天前
|
监控 Unix Linux
|
15天前
|
Linux
Linux Crontab 查看定时任务启动没
【10月更文挑战第20天】在Linux系统中,crontab用于设置周期性执行的任务。查看当前用户的Crontab任务列表,使用`crontab -l`;查看所有用户任务,使用`sudo crontab -l`或指定用户`sudo crontab -u username -l`。
36 5
|
5月前
|
Unix Linux
Linux中的Crontab:定时任务管理器
`crontab`是Linux下的定时任务管理器,用于设置周期性执行的任务。用户可以通过`crontab -l`查看任务,`crontab -e`编辑,`crontab -r`删除任务。任务格式为:`* * * * * command`,分别代表分钟、小时、日期、月份、星期,例如`30 10 * * * /path/to/script.sh`。注意确保命令有执行权限,处理环境变量,并关注日志文件 `/var/log/syslog` 或 `/var/log/cron`。学会使用`crontab`能有效自动化Linux系统的日常任务。
|
3月前
|
存储 运维 监控
运维.Linux下执行定时任务(中:Cron的常用替代方案)
本文是关于Linux下执行定时任务系列的第二部分,主要探讨除了Cron之外的常用替代方案。介绍了Systemd Timers、Anacron及at命令三种工具,它们分别适用于不同场景下的定时任务需求。文章详细分析了每种工具的特点、工作原理、基本使用方法及其高级功能,并对比了它们各自的优缺点,帮助读者根据实际情况选择最适合的定时任务解决方案。此外,还提供了指向具体实例和进一步阅读材料的链接。
118 4
运维.Linux下执行定时任务(中:Cron的常用替代方案)
|
3月前
|
监控 安全 Linux
在Linux中,如何设置定时任务(cron job)?
在Linux中,如何设置定时任务(cron job)?
|
4月前
|
数据挖掘 Linux Shell
linux 使用crontab 创建定时任务
linux 使用crontab 创建定时任务
103 0
linux 使用crontab 创建定时任务
|
3月前
|
存储 运维 监控
运维.Linux下执行定时任务(上:Cron简介与用法解析)
运维.Linux下执行定时任务(上:Cron简介与用法解析)
50 0
|
5月前
|
关系型数据库 MySQL Shell
【权限提升】Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化
【权限提升】Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化
|
5月前
|
监控 网络协议 Ubuntu
【权限维持】Linux&Rootkit后门&Strace监控&Alias别名&Cron定时任务
【权限维持】Linux&Rootkit后门&Strace监控&Alias别名&Cron定时任务