当前位置:首页 > 技术分析 > 正文内容

linux定时任务,让你更深入的了解系统

ruisui882个月前 (04-26)技术分析29

cron的软件包cronie

rpm -ql cronie

rpm –ql crontabs

最关键的是一个叫做crontab的命令,我们要书写的非系统定时任务就是通过此程序来编写的;

要保证crond.service服务有启动,cron定时任务才会生效:

systemctl status crond.service 查看crond服务状态;

systemctl enable crond.service 开机自动启动crond服务;

systemctl disable crond.service 开机禁止启动crond服务;

systemctl start crond.service 启动crond服务;

systemctl stop crond.service 停止crond服务;

systemctl restart crond.service 重启crond服务;

crontabs软件包提供了系统级别的定时任务的配置文件和一些初始状态的脚本,正常情况,我们不应该

去动这些脚本。特别是系统默认自带的东西,不要去修改他们,如果一定要用系统的定时任务,无非

是我们自己去按照规定去添加。

提交cron定时任务说明

向crond提交作业的方式不同于at,它需要使用专用的配置文件,此文件有固定格式,

不建议使用文本编辑器直接编辑此文件;要使用crontab命令;

cron任务分为两类:

1、系统cron任务

主要用来实现系统自身的维护;可以手动编辑修改/etc/crontab文件

2、用户cron任务

通过crontab命令(一个带有SUID权限的工具)增删改查;

系统定时任务配置文件

查看配置文件/etc/crontab

说明:

1. 如果定义的cron任务有多个,每行写一个,共7个字段;字段分别为,

分 时 日 月 周 user-name表示用户名, 后边表示要执行的命令或脚本;

2. 由于这里的环境变量PATH定义的可选值与系统bash接口略有差别,这里范围更小,

所以建议,定义定时任务中用到的命令建议使用绝对路径,或者自定义PATH环境变量;

crontab命令选项和说明

crontab的常建语法结构和选项:

crontab [-u user] [-l | -r | -e] [-i]

-e:编辑当前用户的或者指定用户的crontab,如果没有定时任务,会作为一个新的文件编辑,编辑默认是以vi编辑

器来编辑,可以通过显式设定VISUAL或EDITOR环境变量来修改使用指定的编辑器来编辑。一但编辑的crontab保

存退出后,crontab会自动被安装成定时任务计划。

比如:

export EDITOR="/usr/bin/nano" 或 export EDITOR="/usr/bin/emasc",然后再去crontab -e

nano和emacs都是文本编辑器,默认都是没有安装的,需要自己手动指定安装。

-l:列出当前用户或者指定用户的crontab到标准输出。

-r:移除当前用户或者指定用户的所有定时任务,即删除/var/spool/cron/USERNAME文件;(危险,没有交互式

操作提示)

-i:在使用-r选项移除所有任务时提示用户确认信息;

-u user:指定管理给定用户的crontab,只有超级管理员用户才能管理,普通用户不能使用此选项;

小技巧和注意事项:

1、如果不想把定时任务运行结果通知给指定用户

COMMAND > /dev/null 标准错误信息还是会以邮件的形式通知给用户;

COMMAND &> /dev/null 所有输出信息都不会以邮件的形式通知用户;

2.定义COMMAND时,如果命令需要用到%,需要对其转义;但放置于单引号中的%不用转义亦可;

3.某任务在指定的时间因关机未能执行,下次开机不会自动执行;

4.如果期望某时间因故未能按时执行,下次开机后无论是否到了相应时间点都要执行一次,可使用anacron实现;

crontab配置定时任务时候的时间表示

时间格式一共5位,分别对应:

* * * * *

分 时 日 月 周

分钟有效值:0 - 59;

时的有效值:0 - 23;

日的有效值: 1 - 31;

月的有效值:1 - 12 或 jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec;

周的有效值:0 - 6 ,星期天可以用0或7表示,这个是个特例,也可以用周的英文缩写,

sun,mon,tue,wed,thu,fri,sat

· 指定特定值

给定时间点有效取值范围内的值;

注意:day of week和day of month一般不同时使用;

例如:

3 * * * *:执行频率为 每小时执行一次;每小时的第3分钟执行;

3 4 * * 5:执行频率为 每周执行一次;每周5的4点3分执行;

5 6 7 * *:执行频率为 每月执行一次;每月的7号的6点5分执行;

7 8 9 10 *:执行频率为 每年执行一次;每年的10月9号8点7分执行;

· 取所有值

给定时间点上有效取值范围内的所有值;表示"每xxx"的含义;

· 离散取值

在时间点上使用逗号分隔的多个值;

x,y,z

例如:

0 8,20 * * 3,7:这种不建议;(出现了20号,又出现了每周3,周天);

9 8 * * 3,7:每周三和周日执行的8点9分执行;

· 连续取值

在时间点上使用符号短破折号"-"连接开头和结束

x-y

例如:

0 9-18 * * 1-5:周1到周5,每天的9点到18点,执行;(假设上午9点上班,下午18点下班,双休,这就是

工作日执行要执行的任务)

· 步长取值

在指定时间点上,定义步长:

/number :其中number表示步长;

指定的时间点不能被步长整除时,其意义将不复存在;

最小时间单位为"分钟",想要完成"秒"级别任务,需要额外借助于其他机制,例如

可以定义每分钟定时计划任务,再利用脚本实现在每分钟之内,循环执行多次;

例如:

*/5 * * * *:每5分钟执行一次;

* */1 * * *:每1小时执行一次;

* * */5 * *:每5天执行一次;

*/7 * * * *:这个并不完全是每7分钟执行一次,这种不整除的现象,不建议使用。

cron定时任务示例

1、每12小时备份一次/etc目录至/backups目录中,保存文件 名称格式为"etc-yyyy-mm-dd-hh.tar.xz"要添加的任务计划为:

* */12 * * * /usr/bin/mkdir -p /backups >/dev/null && /usr/bin/tar -JPcvf /backups/etc-`date '+%Y-%m-%d-%H'`.tar.xz /etc >/dev/null

*

2、每周2、4、7备份/var/log/secure文件至/logs目录中,文件名格式为"secure-yyyymmdd";

要添加的任务计划为:

* * * * 2,4,7 /usr/bin/mkdir -p /logs >/dev/null && tar -JcvfP /logs/secure-`date +%Y%m%d`.tar.xz /var/log/secure >/dev/null

3、每两小时取出当前系统/proc/meminfo文件中以S或M开头的行信息追加至/tmp/meminfo.txt文件中;

* */2 * * * /usr/bin/grep -E '^(S|M)' /proc/meminfo >> /tmp/meminfo.txt

4、制定每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00;

我的脚本内容为:

[root@node2 ~]# cat /var/tmp/print_dtime.sh

#! /bin/bash

PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

LANG="en_US.UTF-8"

export PATH LANG

source /etc/profile

shopt -u expand_aliases #关闭 bash alias 扩展

echo `date +'%Y-%m-%d %H:%M:%S'`

[root@node2 ~]#

定时任务计划为:

10 3,5 * * 3 bash /var/tmp/print_dtime.sh

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3621.html

分享给朋友:

“linux定时任务,让你更深入的了解系统” 的相关文章

Linux Lite 6.6发行版正式发布:添加简体中文及AI工具支持

IT之家 9 月 8 日消息,Linux Lite 是一个对新手友好的 Linux 发行版,它基于 Ubuntu LTS,并以 Xfce 桌面为特色,主要针对 Windows 用户而设计,也被认为是从 Windows 过渡到 Linux 的友好方案。目前 Linux Lite 6.6 版本已经正式发...

基于archlinux的发行版有哪些?

Arch Linux 是一个 Linux 发行版,采用滚动更新的模型,这意味着 Arch Linux 不会定期发布新版本,而是持续接收更新和升级,保持系统与最新软件版本的同步。Arch Linux 以其极简主义、简单性和用户定制为中心的特点而闻名,专注于让用户对其系统配置具有完全控制权。然而,它也以...

「云原生」Containerd ctr,crictl 和 nerdctl 命令介绍与实战操作

一、概述作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使用,只是大部分时候我们因熟悉Docker,在部署集群时采用了默认的dockershim。在V1.24起的版本的kubelet就彻底移除了dockershim,改为默认使用Conta...

html5+css3做的响应式企业网站前端源码

大家好,今天给大家介绍一款,html5+css3做的响应式企业网站前端源码 (图1)。送给大家哦,获取方式在本文末尾。首页banner幻灯片切换特效(图2)首页布局简约合理(图3)关于我们页面(图4)商品列表(图5)商品详情(图6)服务介绍(图7)新闻列表(图8)联系我们(图9)源码完整,需要的朋友...

双子座应用程序推出模型切换器以在Android上访问2.0

#头条精品计划# 快速导读谷歌推出了Gemini 2.0 Flash实验版,现已在其安卓应用中可用,之前仅在gemini.google.com网站上提供。新版本的15.50包含模型切换器,用户可以在设置中选择不同模型,包括1.5 Pro、1.5 Flash和2.0 Flash实验版。谷歌提醒,2.0...

Vue学习笔记之动态路由的参数传递应用及技巧

路由的参数传递:①通过params的类型· 配置路由格式:/router/:id· 传递的方式:在path后面跟上对应的值· 传递后形成的路径:/router/list,/router/profile这个就是前两篇中提到的"动态路由"中有应用过这个方法:②通过query的类型(对象方...