Linux系统计划任务之二:cron任务调度

接上一内容Linux系统计划任务之一:at指令

系统在日常的运行当中,经常需要作一些周期的备份或检查工作。这种有规律的循环执行的工作任务,在Linux系统中是用crond系统服务来实现的。crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,它在CentOS系统上默认是打开的。

[[email protected] ~]# chkconfig --list crond
crond  0:off1:off2:on3:on4:on5:on6:off

linux下的任务调度分为两类,分别为系统级任务调度和用户级任务高度。下面分别介绍。


  1.系统级任务调度

Linux系统周期性执行的任务,比如说自动的进行在线更新 (on-line update)、自动的进行 updatedb更新文件名数据库等。这种工作调度可通过编辑全局配置文件/etc/crontab(这是一个纯文本文件,不要跟/usr/bin/crontab可执行文件混淆)来进行。该文件的内容如下:

[[email protected] ~]# vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=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

该文件前四行是配置cron任务运行的环境变量信息。如下表:

文件中以#开头的内容是对任务的配置格式的具体说明。

任务的配置格式为:分 时 日 月 周 执行用户 执行指令内容 ,共7小节。

参数所代表的含义如下表所示:

第5列周几的数据0和7表示星期天。

前五列的值还可以含有一些辅助字符,如下表:

第6列为执行用户。如这一列内容为空的话,将导致所配置的例行程序无法运行。

第7列为所要执行的指令。这有两种方法,一种是直接以指令形式下达,一种是linux系统中常用的指定某个存放某类脚本文件的目录的方式。

A.指令形式

如系统每5分钟记录一次内存余量情况,并写在文件中。

*/5  *  *  *  *  root  grep "^MemFree" /proc/meminfo >> /tmp/memory.log

B.指定目录方式

首写编写要执行的脚本并保存到某特定的目录中。如下,编辑文件

[[email protected] ~]# vim /tmp/cron/backupEtc.sh
  #!/bin/bash
  tar -Jcf /backup/etc_`date ‘+%F_%T‘`.tar.xz /etc/*

#保存后修改文件模式。注意,目录中的脚本文件必须具体可执行权限。否则,无法运行。

[[email protected] ~]# chmod a+x /tmp/cron/backupEtc

编辑/etc/crontab文件,添加如下内容

0  4  *  *  *  root  run-par ts /tmp/cron/

该行内容设定系统每天4点钟自动执行目录/tmp/cron下的所有脚本文件,包括上面自定义的自动备份/etc目录下文件的脚本。

在/etc目录下,系统已设置了cron.daily、cron.hourly、cron.monthly、cron.weekly目录信息。为管理的规范,也可将执行任务的脚本放在前4个相应的目录中。

2.用户级任务调度

用户如有周期性要执行的工作,比如给用户数据备份或维护人员定期检查服务器状态并邮件提醒等。用户可以使用crontab命令来定制自己的任务调度。

如用户zeng登录后,使用crontab –e指令编辑任务内容。

[[email protected] ~]$ crontab –e

用户任务调度的配置格式同系统级任务调度全局性文件/etc/crontab的格式相同,只是无需指定第6列执行用户,具体说明见上一小节。输入如下内容并保存退出。

#该例子只用开测试

*/5 * * * * echo "now is:`date `" >> /tmp/userCron.log

每一个任务一行,可输入多个任务。该命令中所输入的内容会自动的保存到/var/spool/cron/zeng文件中。

[[email protected] ~]# cat /var/spool/cron/zeng

*/5 * * * * echo "now is:`date `" >> /tmp/userCron.log

用户级任务调度的编写内容与系统级调度内容相比较,只是少写了执行用户而以,其它相同。

Crontab的其它参数说明

-u:只有root能下达的参数,可指定所建立、查询或删除crontab信息的用户

-l:查看用户crontab的内容,默认是当前登录用户

-e:编辑crontab文件的内容

-r:删除crontab文件的内容

如查询用户的任务调度作业

[[email protected] ~]#crontab -u zeng -l
#显示内容
*/2 * * * * echo"now is:`date ‘+\%F \%T‘ `" >> /tmp/userCron.log
时间: 2024-10-12 15:50:57

Linux系统计划任务之二:cron任务调度的相关文章

linux系统计划任务

 linux系统计划任务 /etc/crontab  cron的主配置文件,可以定义PATH cron格式如下: # .----------------分钟 (0 - 59) # |  .------------- 小时 (0 - 23) # |  |  .----------  日 (1 - 31) # |  |  |  .-------  月 (1 - 12) # |  |  |  |  .----   周 (0 - 6) (周日=0 or 7) # |  |  |  |  | # * *

Linux系统裁剪笔记之二insmod

Linux系统裁剪笔记之二 1.什么裁剪? 本篇文章的主要目的是让笔者和读者更深的认识Linux系统的运作方式,大致内容就是把Linux拆开自己一个个组件来组装,然后完成一个微型的Linux系统.下面,让我们来实现吧..写的不好的地方请指教. 2.原理 大家都知道,操作系统的启动流程是(主要是Linux):POST->BIOS->MBR-kernel-->initrd-->sbin/init, POST,BIOS都不是我们管的,所以这里我们从MBR开始,Linux的系统引导先主要是

Linux系统——MySQL基础(二)

# MySQL数据库完全备份与恢复## 数据库备份的分类1. 从物理与逻辑的角度,备份可以分为物理备份和逻辑备份.(1)物理备份:对数据库操作系统的物理文件(数据文件.日志文件)的备份.物理备份又可分为脱机备份(冷备份)和联机备份(热备份)冷备份:在关闭数据库中的时候进行的热备份:数据库处于运行状态,这种备份依赖于数据库的日志文件温备份:数据库锁定表格(不可写入但可读)的状态下进行的(2)逻辑备份:对数据库逻辑组件(如表等数据库对象)的备份2. 从数据库的备份策略角度,备份可分为完全备份.差异备

Linux系统计划任务之一:at指令

Linux系统的工作任务有两种工作排程方式: 1.一种是未来某个特定的时间点的,该任务执行完后则不再执行.例如在下周某一天几点钟提醒该出门办理签证. 2.一种是例行性的,就是按照设定的某种模式有规律的周期性执行.例如每周日凌晨4点钟进行数据库的备份工作:系统每隔半小时检查系统内存使用情况等. 那么在Linux系统中是如何达到这两个功能的呢?简单的讲,上面两种情况可分别使用at指令与cron系统服务来实现. 一. at方式的例行性工作安排 1.启动atd服务 在linux系统上统一负责未来某个时间

Linux系统重要文件(二)

Linux系统重要文件概述 一系统自动挂载文件 文件路径信息:/etc/fstab文件作用说明:实现存储设备自动挂载 [[email protected] ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Nov 26 17:31:33 2019 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pag

Linux系统运维笔记(二),Linux文件编辑命令

Linux系统运维笔记 Linux文件编辑命令 首先我们使用命令 vi filename 打开一个文件,这个时候进入到的是命令模式 接下来我们按i,然后键盘随便输入写内容. 然后按ESC重新进入到命令模式. 在命令模式的情况下,我们按:,进入到了末行模式. 输入wq!,然后回车,强行保存退出. q! [强制退出不保存]q[退出不保存]wq[退出并保存后面也可以加个!] vi /etc/centos-release 查看centos系统版本 原文地址:https://www.cnblogs.com

Linux系统编程@多线程编程(二)

线程的操作 线程标识 线程的ID表示数据类型:pthread_t (内核中的实现是unsigned long/unsigned int/指向pthread结构的指针(不可移植)几种类型) 1.对两个线程ID进行比较 #include <pthread.h> int pthread_equal(pthread_t tid1, pthread tid2); //返回值:若相等则返回非0值,不相等返回0 2.获取自身的线程id #include <pthread.h> pthread_t

linux系统网络命令(二)

一.linux 下iptoute2网络配置工具 前面我们已经学习使用了ifconfig.route两个关于网络配置的命令,这两个命令和netstat.arp等命令是属于net-tools的rpm的安装包,现在已经有了一个新的工具包用来取代上面的命令,安装包为iproute,包内包含了新的命令ip.ss,这俩命令很强大通过下图就可以看出. 二.linux 下ip命令的使用 1.ip命令简介 ip是iproute软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfi

LINUX 系统计划任务(重点)

cron:通过定期自动执行某一个脚本文件. -u 指定某个用户,不加则为当前用户 -e 制定计划任务 -l 列出计划任务 -r 删除计划任务 ex:crontab -e(编写计划任务) 01  10  05  06  3   echo "ok" > /root/cron.log  分  时  日  月  周几  命令行 每隔8小时,就是用全部小时(0-23)去除以8 当遇到多个数(分钟.小时.月.周),需要用逗号隔开 时间段,用 n-m 的方式表示的 查看cron服务启动:ser