Centos7之如何设置定时任务

 更新时间:2023年08月31日 18:54:03   作者:张志翔的博客  
这篇文章主要介绍了Centos7之如何设置定时任务问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Centos7设置定时任务

最近出了一件大事,用ShowDoc的Docker方式部署在服务器上,白天有工人换机箱,把电断了,导致ShowDoc数据丢了。。备份数据刻不容缓。

1、安装 crontabs服务并设置开机自启:

$ yum install crontabs
$ systemctl enable crond
$ systemctl start crond

2、配置定时规则

$ vim /etc/crontab //或者 crontab -e 立即生效

在配置文件中配置你的定时执行规则

59 23 * * * root /home/backup/showdoc/backup.sh

backup.sh是你将要定时执行的脚本文件,如图所示:

规则很简单,看注释就能看懂了,从左到右分别是 分钟(0~59)、小时(0~23)、天(1~31)、月(1~12)、星期(0~6)、用户名、要执行的命令或者脚本。

脚本内容如下:

#! /bin/bash
t=$(date +%Y%m%d%H%M%S)
cd /home/backup/showdoc/mount/
tar -zcvf ../data/data_$t.tar ./showdoc_data
find /home/backup/showdoc/data -mtime 7 -type f|xargs rm -f

t是当前日期,格式是年月日时分秒;tar -zcvf是将要备份的文件打成压缩包,后缀会带上日期;find ... -mtime 7 ...|xargs rm -f是只保留近七日的备份文件,之前的都会删掉。

3、保存生效

$ crontab /etc/crontab

4、查看任务

$ crontab -l

任务列表,如图所示: 

到此定时任务配置完成。

CentOS7设置定时任务 每隔30分钟执行一次命令

安装 crontabs服务并设置开机自启

yum install crontabs
systemctl enable crond
systemctl start crond

设置用户自定义定时任务

vi /etc/crontab

可以看到:

# 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

即:

分钟(0-59) 小时(0-23) 日(1-31) 月(11-12) 星期(0-6,0表示周日) 用户名 要执行的命令

每隔30分钟root执行一次updatedb命令:

*/30 * * * * root updatedb

每天早上5点定时重启系统:

0 5 * * * root reboot

每隔三秒执行一次/home/somedir目录下的scripts.sh脚本:

## For excuting scripts.sh every 3 seconds##on 2014-10-15
*/1 * * * *  /home/somedir/scripts.sh
*/1 * * * * sleep 3 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 6 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 9 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 12 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 15 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 18 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 21 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 24 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 27 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 30 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 33 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 36 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 39 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 42 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 45 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 48 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 51 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 54 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 57 &&  /home/somedir/scripts.sh

保存生效

#加载任务,使之生效
crontab /etc/crontab
#查看任务
crontab -l

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

下面是补充

安装 crontabs服务并设置开机自启

yum install crontabs
systemctl enable crond (设为开机启动)
systemctl start crond(启动crond服务)
systemctl status crond (查看状态)

设置用户自定义定时任务

vi /etc/crontab

可以看到:
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

即:
分钟(0-59) 小时(0-23) 日(1-31) 月(11-12) 星期(0-6,0表示周日) 用户名 要执行的命令

*/30 * * * root /usr/local/mycommand.sh (每天,每30分钟执行一次 mycommand命令)

* 3 * * * root /usr/local/mycommand.sh (每天凌晨三点,执行命令脚本,PS:这里由于第一个的分钟没有设置,那么就会每天凌晨3点的每分钟都执行一次命令)

0 3 * * * root /usr/local/mycommand.sh (这样就是每天凌晨三点整执行一次命令脚本)

*/10 11-13 * * * root /usr/local/mycommand.sh (每天11点到13点之间,每10分钟执行一次命令脚本,这一种用法也很常用)

10-30 * * * * root /usr/local/mycommand.sh (每小时的10-30分钟,每分钟执行一次命令脚本,共执行20次)

10,30 * * * * * root /usr/local/mycommand.sh (每小时的10,30分钟,分别执行一次命令脚本,共执行2次)

保存生效

加载任务,使之生效:crontab /etc/crontab

查看任务:crontab -l

$ crontab -u 用户名 -l (列出用户的定时任务列表)

PS:特别注意,crond的任务计划, 有并不会调用用户设置的环境变量,它有自己的环境变量,当你用到一些命令时,比如mysqldump等需要环境变量的命令,手工执行脚本时是正常的,但用crond执行的时候就会不行,这时你要么写完整的绝对路径,要么将环境变量添加到 /etc/crontab 中。

好了,计划任务就是这么简单了,但是计划任务,执行的语句如果是多条,则需要用药shell脚本,自己先写一个shell脚本,然后在计划任务中,执行这个脚本即可。至于shell脚本的写法, 这里不赘述。

相关文章

  • Ubuntu/Debian 自有软件包构建私有源详解

    Ubuntu/Debian 自有软件包构建私有源详解

    这篇文章主要介绍了Ubuntu/Debian 自有软件包构建私有源详解的相关资料,这里介绍详细步骤,需要的朋友可以参考下
    2016-11-11
  • Linux tar命令使用列子

    Linux tar命令使用列子

    对许多用户来说,在DOS和Windows环境下利用工具软件WinZip、ARJ等压缩或解压文件是比较容易的事。但是,在Linux中如何对文件进行压缩与解压呢?
    2008-06-06
  • Linux进程地址空间详解

    Linux进程地址空间详解

    在C语言编程中,内存管理是一个重要的环节,本文详细解析了C语言中的内存区域划分,包括栈区、堆区、全局区等,并探讨了fork函数的遗留问题,即如何出现一个变量同时等于0又大于0的情况,此外,文章还深入讨论了进程地址空间的概念
    2024-10-10
  • 阿里云服务器CentOS 6.3下快速安装部署 LAMP 、vsftpd 环境的方法

    阿里云服务器CentOS 6.3下快速安装部署 LAMP 、vsftpd 环境的方法

    这篇文章主要介绍了阿里云服务器CentOS 6.3下快速安装部署 LAMP 、vsftpd 环境的方法的相关资料,需要的朋友可以参考下
    2016-02-02
  • apache2.2和php5.2.17在windows下整合过程的错误解决方法

    apache2.2和php5.2.17在windows下整合过程的错误解决方法

    照理来说apache和php的整合应该是非常简单的,apache下载windows安装版本后一路next即可完成安装,php下载解压版本后直接解压到指定目录,然后在apache的配置文件httpd.conf的最后加入如下几行即可
    2011-08-08
  • Linux:FTP工具及SSH远程连接工具的使用方式

    Linux:FTP工具及SSH远程连接工具的使用方式

    这篇文章主要介绍了Linux:FTP工具及SSH远程连接工具的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Linux系统利用cp命令实现强制覆盖功能的方法

    Linux系统利用cp命令实现强制覆盖功能的方法

    cp命令是我日常学习中经常会遇到的一个命令,下面这篇文章主要给大家介绍了关于Linux系统利用cp命令实现强制覆盖功能的方法,并且给大家简单的介绍了cp命令的基础知识,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • Linux 配置SSH免密登录 “ssh-keygen”的基本用法

    Linux 配置SSH免密登录 “ssh-keygen”的基本用法

    SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题,这篇文章主要介绍了Linux 配置SSH免密登录 “ssh-keygen”的基本用法 ,需要的朋友可以参考下
    2019-06-06
  • ubuntu 设置静态IP的实现方法

    ubuntu 设置静态IP的实现方法

    这篇文章主要介绍了ubuntu 静态IP的设定实现方法的相关资料,需要的朋友可以参考下
    2016-10-10
  • Java使用Apache.POI中HSSFWorkbook导出到Excel的实现方法

    Java使用Apache.POI中HSSFWorkbook导出到Excel的实现方法

    这篇文章主要介绍了Java使用Apache.POI中HSSFWorkbook导出到Excel的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04

最新评论