Linux操作系统--定时任务

最近在学习Linux操作系统。学到了关于定时任务的章节,作为一个总结写下这篇文章。在Linux中,我们可以将耗时大的任务如复制大文件,压缩、解压缩大文件等放进定时任务中(深夜执行,因为工作时间访问量大,这类操作会影响系统运行)。

Linux操作系统中关于定时任务主要有种操作方式:

1. at 一次性定时任务

2. crontab循环定时任务

3. anacron配置

1at一次性定时任务

1. 确定at是否已经安装

chkconfig  --list | grep  atd

一般at是系统必定安装的程序(服务)

2. at服务的启动

service  atd  restart

3. 查看状态

service  atd  status

其他at管理命令

1. 查看系统下有的at任务

atq

2. 删除指定的任务

atrm  [工作号]

关于at命令的用户访问权限控制(服务的控制机制)

系统中默认有at.deny文件

如果系统中两个文件都不存在,那么只有root用户可以使用at命令

因此在配置用户功能的时候需要写at.allow和at.deny文件

at命令参数:

格式:

at  [选项]  时间

选项:

-m  : 当at工作完成后,无论是否命令有输出,都用email方式通知执行at命令的用户

-c   : 工作号,显示该工作的实际内容

输入时间之后会显示

at>  [要求输入at执行的任务]

例如:

1. 数据同步,使内存中的数据与磁盘数据同步

at>/bin/sync

2. 在指定时间重启

at>/sbin/shutdown –r now

实际使用中不建议使用定时任务来重启,应该使用人工,以避免在操作系统自动重启的过程中出现一些偶然的错误而导致重启失败。

2crontab循环定时任务

此方式平常用得比较多,定时任务会保存在临时文件中。

crontab命令进程(Linux中每一个命令都是使用进程来运行的)的运行是依靠crond服务的,并可以对定时任务进行管理与访问控制。crond是Linux操作系统在安装的时候必须安装的服务之一。

crontab相关命令和用法:

1. 在config配置文件中查找(grep)是否有cron这个服务

chkconfig  --list | grep  cron

注意:这个命令是只在Redhat系列的Linux操作才有,ubuntu是没有的,需要用sysv-rc-conf替代。

实例:

[email protected]:~# chkconfig --list|grep cron

anacron      2:on         3:on   4:on      5:on

cron         2:on         3:on  4:on       5:on

2. 查看crond服务状态

service  crond  status

3. 启动、停止、重启crond服务

service  crond  start/stop/restart

crontab命令的用户访问权限控制

crontab命令参数:

格式:

crontab [参数选项]

参数选项:

-e :编辑crontab定时任务

-l 查询crontab任务(cron tab)

-r :删除当前用户所有的crontab任务

注意:

1. crontab  -e 是在当前用户的权限下执行的,即crontab命令绑定了当前的用户。如果不是root用户,有些权限是不能执行的,例如关机等。

2. Linux系统中脚本一般不写循环,因为容易出现死循环的问题。而crontab默认是循环的,根据时间间隔循环

例如:

crontab  –e  (edit)    #进入crontab编辑界面。一般默认是用vim进行编辑工作

cron文件内容:

#Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use ‘*‘ in these fields (for ‘any‘).#
# Notice that tasks will be started based on the cron‘s system
# daemon‘s notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

定时时间格式:

*****执行的任务

* 号的含义:

注意:

1. 是一小时中的第几分钟

例如:10  * * * *  表示1:10 、 2:10执行

2. 如果第一个写*,默认是每分钟执行一次,所以一般会写上数字来确定是一小时中的固定时间进行定时任务而不是每隔多少时间进行

每隔多少分钟执行

*/10  * * * *  每隔10分钟执行一次

一般大操作在凌晨4、5进行,据说是因为访问量最少

特殊表达式:

0  0  1,15  *  1

每个月的1号、15号和周一三种情况都会执行

注意 : 日期和周几最好不要一起使用

crontab使用注意事项:

文件路径一定要用绝对路径,因为定时任务的路径跟系统的PATH路径是不同的,如果不写绝对路径,很有可能执行不了

实验:

1. 检测定时任务是否能正常工作

1)终端输入

[email protected]:~$ crontab  –e

进入编辑页面

2)在编辑页面中添加

*/1 * * * * echo ‘123456‘ >> /home/tltx/test.sh

每隔一分钟在test.sh文件中写入  123456 字符串

3)查看test.sh文件

[email protected]:~$ cat  /home/tltx/test.sh

#! bash/bin

123456

123456

123456

123456

4)删除任务

crontab  -r

5)检测是否删除成功

[email protected]:~$ crontab  -l

no crontab for tltx

cron文件中之前编辑的定时任务也会自动删除

系统crontab设置

可以设定用户身份

配置文件在操作系统中存放的目录:

/etc/crontab

需要注意的是,这个文件只能有root用户来编辑

以前的cetos  Linux系统的crontab文件会有以下的一些配置,默认每小时,每天,每周,每月执行的任务,只要把定时任务放在/etc/cron.hourly这些文件中就可以实现系统配置的定时任务。目前crontab不再管理以下的文件,而用anacron管理

3anacron配置

服务器在执行定时任务的时候因为宕机等故障问题而无法执行或者系统关机错过执行的时候,anacron会在系统恢复正常的后检测cron相关文件,重新执行定时任务。虽然实际环境中,服务器宕机的可能性还是比较小的,但anacron为定时任务提供了另一层保障。

anacron只会检测cron.hourly , cron.daily , cron.weekly , cron.monthly这些文件,所以定时任务需要添加到这些文件中。

以上文件在操作系统中的存放地址:

/etc/

另外还有与定时任务执行记录相关的文件:

/var/spool/anacron/ 中同样存放着cron.{daily,weekly,monthly}文件,用于记录上次执行定时任务的时间(格式为:年月日),定时任务在执行之前会将里面存放的记录时间和当前时间做比较,如果时间差大于/etc/文件夹下cron.{daily,weekly,monthly}文件中的定时任务设定的时间,就知道有cron任务被遗漏。然后会补上执行遗漏的任务。

注意:这种检测机制只精确到了天,小时和分钟的定时任务无法检测。

关于cron.{daily,weekly,monthly}文件夹

在新版本中,就不需要检测anacron服务是否开启了,因为已经变成系统命令。

查看cron.daily文件夹文件:

# ls

cron.daily文件夹

其中0anacron.sh是最关键的一个执行文件

查看0anacron文件内容:

#cat  0anacron(无注释的为添加的定时任务)

原文地址:https://www.cnblogs.com/thomson-fred/p/10353344.html

时间: 2024-10-20 19:13:03

Linux操作系统--定时任务的相关文章

Linux之定时任务

定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务. Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样. 必须保留的启动服务: crond:定时任务服务network:网络服务rsyslog:

Linux Crontab [定时任务] 命令与参数详解

crontab命令常用于Unix和Linux系统中,用于设置周期性被执行的指令. 该命令从标准输入设备读取指令,并将其存放于crontab文件中,以供读取和执行. 通常,crontab储存的指令被守护进程激活,crond服务常常在后台运行. 通过设定的时间来检查是否有作业需要执行,这类作业一般称为:cron jobs. crontab 文件 crontab文件包含送交cron守护进程的一系列作业和指令. 每个用户可以拥有自己的crontab文件,同时操作系统保存一个针对整个系统的crontab文

Linux学习之九-Linux系统定时任务

Linux系统定时任务 在一些实际工作中需要机器在某个时间自动执行某个任务,不需要人为在此时刻参与,可以建立一个定时任务. crond 服务是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务. 使用命令/etc/init.d/crond status检查服务是否处于运行状态, 使用

Linux系统定时任务crond那些事

1 Linux系统定时任务 1.1 定时任务介绍 1.1.1 Crond是什么? Crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.Centos5/6 linux系统安装完操作系统默认会启动crond任务调度服务,系统开机启动优化保留crond服务开机自启动.Crond服务定期(默认是每分钟检查一次)检查系统中是否有要执行的任务工作.这个crond定时任务服务就相当于我们平时使用的闹钟一样.特殊需求:(秒级别)crond服务搞不定了,工作中一般写脚本守护程序执行. 1.

【Linux】定时任务-crontab

目录 1.1 定时任务crond介绍 1.2 Linux系统的定时任务 1.2.2 Linux系统下的定时任务软件的种类 1.3 定时任务crond使用说明 1.3.1 指令语法 1.3.2 指令说明 1.3.3 使用者权限及定时任务文件 1.3.4 指令选项说明含义表 1.3.5 定时任务指令的使用格式 1.3.6 crontab语法格式中时间段的含义如下表 1.3.7 crontab语法格式中特殊符号含义如下表 1.3.8 图片说明crontab使用方法 1.3.9 用户定时任务实例 1.4

Linux操作系统基础

1.Linux概述        Linux是一种自由和开放源代码的类UNIX操作系统.该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布,在加上用户空间的应用程序之后,成为Linux操作系统.Linux也是自由软件和开放源代码软件发展中最著名的例子.只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布.Linux操作系统的诞生.发展和成长过程始终依赖几个重要的支柱,即unix操作系统.minix操作系统.GNU计划.POS

Linux操作系统基础知识

继续补充一点vim指令的一些知识点,当需要同时操作多个文件时,使用vim指令可同时打开几个文件加载至内存中.命令格式为vim file1 file2 file3,其中不同文件用空白字符隔开,默认操作第一个文件,当需要操作其他文件时,在末行模式下输入:next/:prev/:first/:last分别对应为下一个.前一个.第一个.最后一个文档的内容.当需要同时查看不同文件内容时,使用选项-o/O为竖屏/横屏分屏显示文件内容.在分屏情况下切换当前操作文件使用ctrl+w+左右键,ctrl前可加数字以

Linux还是亲生的好,实战自制Linux操作系统

实战自制Linux操作系统 本文主要通过裁剪现有Linux系统,打造一个属于自己的Linux小系统,让其能够装载网卡驱动,并配置IP地址,实现网络功能. 自制linux系统 步骤概述: 1.新建一个硬盘2.在该新硬盘上新建两个分区,一个当boot分区,一个当/分区3.格式化并且挂载两个分区4.安装grub至目标磁盘5.为grub提供配置文件6.复制内核文件和initrd文件7.创建目标主机根文件系统8.移植bash命令和其库文件到根文件系统9.装载模块,实现网络功能10.启动测试 特别提醒 如果

linux操作系统-给文本添加 ' -单引号,一般转成CSV格式时使用

[[email protected] ~]# cat 1.txt1ms2ms3ms4ms5ms [[email protected] ~]# cat 1.txt | awk '{print $1"\047"}'1ms'2ms'3ms'4ms'5ms' [[email protected] ~]# cat 1.txt | awk '{print $1"\047"}' > 2.txt[[email protected] ~]# cat 2.txt1ms'2ms'3