使用crond 在linux中定时执行任务

定期运行程序或者脚本是管理员要面临一个很普遍的问题

一、 使用crond监控程序运行程序 1. 使用cron来定期执行任务 使用crond (cron监控程序)来定期运行一些任务,比如备份日志、数据库、把日志发送到自己邮箱等等操作都可以又定期运行程序来完成。 crond是个脚本,每次Linux启动的时候都自动起到该脚本,该脚本是 /etc/rc.d/init.d 下面的,每次系统启动的时候就自动会启动该目录下的脚本。

cron有两个配置文件,一个/etc/crontab,是一个全局配置文件,一组是crontab命令生成生成的配置文件,是属于用户级的。

一般对管理员来说,只要使用全局配置的/etc/crontab就配置文件就可以了,我们去打开配置文件看看:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# run-parts

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

我们稍微来分析一下这个文件:

/* 设置基于什么shell来运行,我们这里是基于bash shell */ SHELL=/bin/bash /* 指定目录中有次文件的命令时,不需要完整目录路经 */ PATH=/sbin:/bin:/usr/sbin:/usr/bin /* 使用cron实际工作时,见通过邮件来同志root用户 */ MAILTO=root /* 与/etc/crontab配置文件相关的主目录为根目录 */ HOME=/ /* 好了,这里是关键是,下面的是要指定什么时间运行什么目录下的任务,run-parts命令是运行指定目录下的每个脚本 */ # run-parts /*

这一句是在每天每小时过后一分钟运行/etc/cron.hourly目录中的每个脚本文件 */ 01 * * * * root run-parts /etc/cron.hourly /*

在每天凌晨4点2分运行/etc/cron.daily目录中的每个脚本文件 */ 02 4 * * * root run-parts /etc/cron.daily /*

在每个星期天凌晨4点22分运行/etc/cron.weekly目录中的每个脚本文件 */ 22 4 * * 0 root run-parts /etc/cron.weekly /*

在每个月的第一天凌晨4点42分运行/etc/cron.monthly目录中的每个脚本文件 */ 42 4 1 * * root run-parts /etc/cron.monthly

大家看到里面的"*"一定觉得很奇怪,下面我们句稍微来了解一下cron的语法: 上面脚本中的时间是从左到右的,分别列出了五个字段,我们看下面的表: ------------------------------------------------ 字段 取值范围 ------------------------------------------------ Minute 0 ~ 59 Hour 0 ~ 23,其中0是午夜,20是晚上8点 Day 1 ~ 31 Month 1 ~ 12 Day of week 0 ~ 7,其中0和7是表示星期天 ------------------------------------------------ 任何字段中的星号是通配符,例如,如果第一个字段包括星号,则特定若无其事在可能的每一分钟运行。如果要指定时间范围,比如上午8点到 下午4点,则可以见第二个字段设置为8~16。如果要隔一天运行任务,则可以将第三个字段设置为*/2。可以看出,如果五个字段(minute、hour 、day、month、day of week) 之后,cron中的每个字段就没什么神秘之处了。

2. 用户自己的cron 用户也可以计划用户自己的cron任务,比如他想要在半夜整理他的文件,然后发送邮件给自己,只要这个用户他没有在/etc/cron.deny表中, 就可以使用crontab -e命令来启动自己的cron文件。 3. 对cron的访问控制 默认情况下,所有用户都能访问cron工具,要对cron进行访问控制,则可以生成/etc/cron.allow与/etc/cron.deny文件。 (1)这两个文件都不存在时,每个用户都可以访问cron工具] (2)存在/etc/cron.allow文件时,则只有cron.allow文件中允许的用户才能访问cron工具,如果也有/etc/cron.deny文件,则忽略cron.deny文 件

二、 使用at命令定期运行程序 1. 使用cron运行任务 cron任务的缺点是计划要经常运行,假如我们只是想要让特定任务运行一次呢?那么,这时候就要用到at监控程序了。 设置at命令很简单,指示定运行的时间,那么就会在哪个时候运行。at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。at now + time命令可以在指示任务。 假设处理一个大型数据库,要在别人不用系统时去处理数据,比如凌晨2点5分。那么我们就应该先建立/home/mj/airplane脚本管理数据库,计 划处理/home/mj/air-safe文件中的结果。正常方式是这样启动下列命令: # at 2:05 tomorrow at> /home/mj/airplane > /home/mj/air-safe at> Ctrl+D AT Time中的时间表示方法 ----------------------------------------------------------------------- 时间 例子 说明 ----------------------------------------------------------------------- Minute at now + 5 minutes 任务在5分钟后运行 Hour at now + 1 hour 任务在1小时后运行 Days at now + 3 days 任务在3天后运行 Weeks at now + 2 weeks 任务在两周后运行 Fixed at midnight 任务在午夜运行 Fixed at 10:30pm 任务在晚上10点3

Linux定时程序没有之行完,如何在linux上定时执行程序相关推荐

  1. 《从实践中学嵌入式Linux应用程序开发》pdf完整版资源分享

    <从实践中学嵌入式Linux应用程序开发> 内容简介: <从实践中学嵌入式linux应用程序开发>结合大量实例,讲解了嵌入式linux应用程序设计各个方面的基本方法及必要的核心 ...

  2. linux系统下c语言程序需要改动的地方,如何在Linux系统环境下进行C语言开发

    描述 对于程序设计员来说,makefile是我们绕不过去的一个坎.可能对于习惯Visual C++的用户来说,是否会编写makefile无所谓.毕竟工具本身已经帮我们做好了全部的编译流程.但是在Lin ...

  3. linux 定时运行脚本_教你如何在Linux下让Python脚本自启动和定时启动

    本文简单介绍如何在Linux下设置Python脚本自启动和定时启动. 一.Python开机自动运行 假如Python自启动脚本为auto.py.那么用root权限编辑以下文件: sudo vim /e ...

  4. linux ntp时间立即同步命令_如何在 Linux 下确认 NTP 是否同步?

    我假设我你经使用上述链接设置了 NTP 服务器和 NTP 客户端.现在,如何验证 NTP 设置是否正常工作? -- Magesh Maruthamuthu(作者) NTP 意即 网络时间协议(Netw ...

  5. linux强制移除pdf密码,分享|如何在 Linux 中从一个 PDF 文件中移除密码

    今天,我碰巧分享一个受密码保护的 PDF 文件给我的一个朋友.我知道这个 PDF 文件的密码,但是我不想透露密码.作为代替,我只想移除密码并发送文件给他.我开始在因特网上查找一些简单的方法来从 PDF ...

  6. linux下刻录光盘读取不了_如何在Linux下刻录数据光盘

    caoshun(原作) 本着让Linux精神发扬光大宗旨,我将部门原来的Windows2000服务器上所有的数据与提供的服务全部迁移到新建的Linux服务器上.在我即将要把这台老Windows2000 ...

  7. linux 修改java版本_Linux 有问必答:如何在 Linux 中改变默认的 Java 版本

    提问:当我尝试在Linux中运行一个Java程序时,我遇到了一个错误.看上去像程序编译所使用的Java版本与我本地的不同.我该如何在Linux上切换默认的Java版本? 当Java程序编译时,编译环境 ...

  8. 如何在linux系统下修改mysql密码_如何在linux下修改mysql数据库密码?linux修改数据库密码的方法...

    本篇文章给大家带来的内容是介绍如何在linux下修改mysql数据库密码?linux修改数据库密码的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. Linux下修改Mysql的 ...

  9. linux下Qt编写串口调试助手,如何在linux下用QT写一个简单的串口调试助手

    如何在linux下用QT写一个简单的串口调试助手 QT5串口类 在QT5以前,编写串口一般使用的是qextserialport类,但在QT5之后有了QT自带的串口类SerialPort(串口基础类)和 ...

最新文章

  1. uva-10400-搜索
  2. [导入]决定进入J2EE一探究竟
  3. Ubuntu下查看命令的源码
  4. webwork2.2.4+spring配制方式总结
  5. 2021年备考信息系统项目管理师心路历程
  6. Arrays和Collection之间的转换
  7. JVM系列之:详解java object对象在heap中的结构
  8. 深度学习之迁移学习实现神奇宝贝识别
  9. hql取满足条件最新一条记录_MySql 之一条查询sql的执行过程
  10. C语言指针作为参数的传递问题
  11. 常量表达式不允许函数调用_SQLite特殊索引之表达式索引
  12. 深度学习基础(十)—— 稀疏编码(二)
  13. 想自学python看哪位的视频比较好-Python入门视频看哪个好?适合初学者的教学视频推荐...
  14. 排错技能:任务管理器中追踪某w3wp.exe是哪个IIS站点的application pool
  15. python高通滤波_图像处理之高通滤波及低通滤波
  16. pyton 编写脚本检测两台主机之间的通信状态,异常邮件通知
  17. Java之 OOP编程思想理解1
  18. word修订模式怎么彻底关闭_如何去掉word修订模式
  19. 【每天听见吴晓波-2016-07-04】上海房价未来五年还会翻番
  20. 读书笔记《硬件十万个为什么——开发流程篇》

热门文章

  1. 实战篇:如何用Keras建立神经网络(附全部代码)
  2. Active Directory操作主机的转移 —图形操作
  3. 解决Windows Git Bash中文乱码问题
  4. 在fvwm中将右手习惯改为左手习惯的简单办法
  5. Linux无盘教程,如何无盘启动Linux
  6. c语言程序设计 中南大学,中南大学-C语言程序设计试卷.docx
  7. float gpu 加速_tensorflow - GPU 加速
  8. 推荐系统算法_机器学习和推荐系统(二)推荐算法简介
  9. linux命令下怎么保存python_Linux 环境下安装 Python3 的操作方法
  10. PrintWriter用法简析