热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux之定时任务吗,Linux之定时任务Crond解析

定时任务Crond介绍Crond是linux系统中用来定期执行命令脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos56linux操

定时任务Crond介绍

Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务。

Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。

必须保留的启动服务:

crond:定时任务服务

network:网络服务

rsyslog:日志服务

sshd:远程链接服务

sysstat:系统监控服务(涉及一系列监控工具)

a240bed99b65d05b8df70dafe40a4549.png

为什么要使用定时任务呢?

我们举个例子说明:例如,我们的数据库或者代码程序需要每天晚上0点做一次全备份,这样每天夜里都需要执行的周期性工作,如果要让人操作的话,就得每天半夜爬起来,然后登录系统执行任务,执行完接着睡觉。另外,执行任务的过程也可能持续几个小时,这样一来,一个晚上我们就都不用睡觉了,这样显然是不行的。那么有什么办法来解决这个周期性的执行任务需求呢?

这就是linux系统的定时任务Crond,这相当于我们平时生活中的闹钟功能,每天晚上提前设置定时,早晨按时叫醒你。

ls -l /var/log/messages* #系统的日志

ls -l /var/log/secure* #用户登录日志

用户执行的任务工作:某个用户或系统管理员定期要做的任务工作,例如每隔5分钟和互联网上时间服务器进行时间同步(这是安装系统基础优化部分的内容),每天晚上0点备份网站站点数据及数据库数据,一般这些工作需要由每个运维自行设置才行。

服务器时间同步

代码如下:

echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov > /dev/null 2>&1" >> /var/spool/cron/root

可通过上面的命令设置每5分钟执行一次。每次将互联网时间同步到本地Linux系统。

crontab -l 查看当前用户的定时任务配置。*号 下面会详讲~~

time.nist.gov是NTP服务器地址 time.windows.com,微软自家的时间服务器。 更多请参考 ==> 国内常用NTP服务器地址及IP

c585f3790f21e898ea1d5e82edd698e2.png

crontab(命令):正如前面所说的这个命令可以周期性的执行任务工作,例如:每五分钟做一次服务器时间同步。要执行crontab这个命令,也需要启动一个服务crond才行。这个crontab命令是生产工作中最常用到的命令,请大家务必掌握。

1、开机自启动crond服务

da0e056f4248c174b4e0d27797f3ec59.png

2、此时此刻服务的状态(查看,开启,关闭)

084d78641c9ab970d1c98c236728ae2e.png

3、如何查看进程

ps -ef | grep crond

f1011ec019e534c2c4386557b3635870.png

小结提示:

我们所说的crond服务是运行的程序,而crontab是用来管理用户的定时任务(规则)的命令

crond服务是企业生产工作中常用的重要服务,at和anacron很少用,可以忽略

几乎每个服务器都会用到crond服务

上千服务器可以开发分布式定时任务项目方案(批量管理ansible/saltstack)

定时任务Crond使用说明

[root@chengliang ~]# crontab --help

crontab: invalid option -- '-'

crontab: usage error: unrecognized option

usage: crontab [-u user] file

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

(default operation is replace, per 1003.2)

-e (edit user's crontab)

-l (list user's crontab)

-r (delete user's crontab)

-i (prompt before deleting user's crontab)

-s (selinux context)

[root@chengliang ~]#

crontab -l 查看当前用户的定时任务配置

crontab -e 进入当前用户的定时任务vim编辑模式

crontab -u 用户名 -l 查看指定用户的定时任务设置

55b6f7d68c8dc348337739b015172cd4.png

重点

通过crontab我们可以在固定的间隔时间执行指定的系统指令或script脚本。时间间隔的单位可以是分钟,小时,日,月,周及以上的任意组合(注意:日和周不要组合)。crond服务通过crontab命令可以很容易的实现周期性的日志分析或数据备份等企业运维场景工作

f68fa8b3488c598a055722617307ea5a.png

使用者权限及定时任务文件

文件

说明

/etc/cron.deny(拒绝)

该文件中所列用户不允许使用crontab

/etc/cron.allow(允许)

该文件优先级高于cron.deny(默认不存在,一般不用)

/var/spool/cron/

所有用户crontab配置文件默认都存在此目录,文件名以用户名命名

[root@chengliang ~]# cat /etc/cron.deny

zcl

[root@chengliang~]# su - zcl

[chensiqi@chengliang~]$ crontab -l

You (chensiqi) are not allowed to use this program (crontab)

See crontab(1) for more information

[zcl@chengliang~]$ crontab -e

You (chensiqi) are not allowed to use this program (crontab)

See crontab(1) for more information

crontab { -l | -e } 实际上就是在操作/var/spool/cron/当前用户这样的文件

默认情况下,当用户建立定时任务规则后,该规则记录对应的配置文件会存在于/var/spool/cron中,其crontab配置文件对应的文件名与登录的用户名一致,如:root用户的定时任务配置文件为/var/spool/cron/root

[root@chengliang ~]# ls /var/spool/cron/

root #默认是没有的,只有创建了定时任务才有

[root@chengliang ~]# cat /var/spool/cron/root

*/5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1

Crontab定时任务的书写格式很简单,用户的定时任务规则一般分为6个段(每个段通过空格来分隔,系统的定时任务为/etc/crontab,分为7个段,空格来分隔),前五段为时间的设定段,第六段为所要执行的命令或脚本任务段

e4f967283dc694e3f5353d32bde42aaa.png

用户定时任务实例:

01 * * * * cmd #每小时的01分钟执行

02 04 * * * cmd #每天4点的02分钟执行

22 14 * * 00 cmd #每周日的14点22分执行

42 04 01 * * cmd #每月1日的4点42分执行

提示:

1、cmd为要执行的命令或脚本,例如:/bin/sh /server/scripts/chensiqi.sh

2、每个列之间必须要有一个空格。多个空格可以么?自己实践 ==> 经我本人测试有多个空格也可以执行!!

时间记忆口诀:分时日月周

crontab 语法格式中特殊符号含义如下表

特殊符号

含义

*

*号,表示任意时间都,实际就是“每”的意思

-

减号表示分隔符,表示一个时间范围,区间段,如17-19点,例如:每天的17,18,19点的00分执行任务。00 17-19 * * * cmd

逗号,表示分隔时段的意思例如每天的5点10点00分执行任务,00 5,10 * * * cmd

/n

n代表数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成/*10* * * * cmd,其中,/10,的范围是0-59,因此也可以写成0-59/10

e7734807952e982c6279b26f73792e41.png



推荐阅读
  • 本文介绍了在Linux环境下如何有效返回命令行状态、上一级目录及快速查找头文件和函数定义的方法。包括处理长时间运行命令、编辑器退出技巧、目录导航以及文件搜索策略。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 在项目开发过程中,掌握一些关键的Linux命令至关重要。例如,使用 `Ctrl+C` 可以立即终止当前正在执行的命令;通过 `ps -ef | grep ias` 可以查看特定服务的进程信息,包括进程ID(PID)和JVM参数(如内存分配和远程连接端口);而 `netstat -apn | more` 则用于显示网络连接状态,帮助开发者监控和调试网络服务。这些命令不仅提高了开发效率,还能有效解决运行时的各种问题。 ... [详细]
  • 本文详细介绍了如何利用Xshell配合Xftp实现文件传输,以及如何使用Pure-FTPd构建FTP服务,并探讨了VSFTP与MySQL结合存储虚拟用户的方法。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 在 CentOS 6.7 系统维护中,常用的巡检命令包括:`uname -a` 用于查看内核、操作系统和 CPU 信息;`head -n 1 /etc/issue` 用于查看操作系统的版本;`cat /proc/cpuinfo` 用于获取详细的 CPU 信息;`hostname` 用于显示当前主机名;`ls` 命令则用于列出目录内容。这些命令可以帮助系统管理员快速了解系统的运行状态和配置信息,确保系统的稳定性和安全性。 ... [详细]
  • 本文深入解析了Linux系统中常用的文件和目录操作命令,包括但不限于`ls`、`cd`等。通过详细讲解每个命令的功能、语法及应用场景,帮助读者掌握这些基本工具的使用方法,提升在Linux环境下的操作效率。此外,文章还介绍了如何结合选项和参数来实现更复杂的文件管理任务,为初学者提供了丰富的实践示例和技巧。 ... [详细]
  • `chkconfig` 命令主要用于管理和查询系统服务在不同运行级别中的启动状态。该命令不仅能够更新服务的启动配置,还能检查特定服务的当前状态。通过 `chkconfig`,管理员可以轻松地控制服务在系统启动时的行为,确保关键服务正常运行,同时禁用不必要的服务以提高系统性能和安全性。本文将详细介绍 `chkconfig` 的各项参数及其使用方法,帮助读者更好地理解和应用这一强大的系统管理工具。 ... [详细]
author-avatar
青末老大_660
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有