定时任务程总结

定时任务程总结

程序的概念
程序是为决解一个信息处理任务而预先编制的工作执行方案
简单的说:我们使用的命令就是程序;QQ程序;听歌MP34软件;linux系统也是程序
基本特征:一堆代码,一个文件,一个命令。程序静态的,放在电脑中没有没有运行
程序:放在磁盘里
进程概念
简单的说,把系统的程序运行起来就是进程,进程放在内存中
所谓进程就是指正在运行的程序,每当输入一个命令时,shell也会同时启动一个守护进程
每个进程启动时,系统会指定一个唯一的数字给每个进程,这个数字称为进程(ID)或者PID
每个进程都可能以两种方式存在:一个前台和一个后台
一般的系统网络服务都是以后台方式存在,且都会常驻在系统中,直到关机或者主动杀死时

[[email protected] ~]# netstat -tunlp |grep sshd
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1286/sshd
tcp        0      0 :::22                       :::*                        LISTEN      1286/sshd

第一个带有进程或者守护进程的服务
第1章 Crond定时任务服务
Linux的定时任务服务crond(crontab)
Crond是linux系统中用来定期执行命令和指定程序任务的一种服务或软件
安装系统默认存在,在优化开机自启动是一个服务
Crond服务默认情况(每分钟),会检查系统中是否需要执行的定时任务,如果有,就会根据事先定义好的规则来执行这个定时任务 【闹钟】

秒级任务:
1) crond无能为力
2) 自己写守护进程shell循环
3) Quartz也可以实现
Crond====闹钟

Linux定时任务分类
1、系统自身的定期执行任务
2、用户执行的任务

1.1 Linux定时任务分类;
1) at适合执行一次就结束的调度任务。 突发性的任务,每天晚上-需要依赖atd服务
2) anacron 适合非7*24小时开机的服务器准备的。开机执行的任务,检测停机期间没有执行任务,开机后一次性执行一遍
3) crond 服务默认情况(每分钟),会检查系统中是否需要执行的定时任务,如果有,就会根据事先定义好的规则来执行这个定时任务 【闹钟】*****
提示:crond是一个定时任务守护进程,而crontab是用户用来设置定时任务规则的命令

1.1.1 定时任务说明
参数:
-l 查看crontab 文件内容
-e 编辑crontab 任务内容

1.1.2 定时任务的格式语法
基本格式如下:

01 * * * * cmd
02 * * * * cmd
03 * * * * cmd
04 * * * * cmd
05 * * * * cmd
06 * * * * cmd
[[email protected] ~]# cat /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) ORsun,mon,tue,wed,thu,fri,sat

| | | | |

user-name command to be executed*

定时任务的写法

[[email protected] ~]# echo ‘time sync by oldboy at 20180205‘ >>/var/spool/cron/root
[[email protected] ~]# echo ‘*/5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1‘ >>/var/spool/cron/root
[[email protected] ~]# crontab -l
time sync by oldboy at 20180205
*/5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1 每5分钟执行一次时间同步
00 09 05 05 * 

[[email protected] log]# echo ‘#print a name‘ >>/var/spool/cron/root
[[email protected] log]# echo ‘* * * * * echo oldboy >>/server/log/oldboy.log‘ >>/var/spool/cron/root
[[email protected] log]# crontab -l
#time sync by oldboy at 20180205
*/5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1
#print a name
* * * * * echo oldboy >>/server/log/oldboy.log

实例

[[email protected] ~]# mkdir /server/scripts/ -p
[[email protected] ~]# echo ‘date +%F‘ >/server/scripts/oldboy.sh
[[email protected] ~]# echo "00 09,14 * * 6,7 /sbin/sh /server/scripts/oldboy.sh" >>/var/spool/cron/root
[[email protected] ~]# crontab -l
#time sync by oldboy at 20180205
*/5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1
#print a name
* * * * * echo oldboy >>/server/log/oldboy.log
#date snyc
00 09,14 * * 6,7 /bin/sh /server/scripts/oldboy.sh >/dev/null 2>&1

注意:脚本中要使用绝对路径

不加/dev/null 2>&1的话会inode会被耗尽
重点:当一个定时任务执行的时候,就会给系统发一份邮件。Sendmail邮件服务,经常是关闭的,所以定时任务发送的邮件就会临时放在/var/spool/clientmqueue/时间长了文件数特别多。Centos5 会存在这个问题

[[email protected] home]# rpm -qa|grep sendmail 查询系统是否安装sendmail服务

[[email protected] ~]# echo 123 >>a.log 2>&1
[[email protected] ~]# cat a.log
123
[[email protected] ~]# ech 123 >>a.log 2>&1
[[email protected] ~]# cat a.log
123
-bash: ech: command not found

让标准错误和标准输出都定向到空

书写的方法-脚本总结:

  1. 为定时任务编写必要的注释描述
  2. Shell任务前加/bin/sh
    1. 定时任务结尾加 >/dev/null 2>&1
  3. 定时任务超过2行的命令执行,最好用脚本
  4. 在指定用户下执行相关定时任务
  5. 生产任务程序不要随意打印输出信息 tar zcf echo 123>
  6. 定时任务执行脚本要规范路径 /server/scripts/
  7. 配置定时任务规范操作过程,防止出错

工作中企业生产场景调试crontab定时任务
1) 增加任务执行频率调试任务
2) 调整系统时间调试任务
3) 通过脚步日志来调试任务
4) 注意一些任务命令带来的问题
5) 注意环境变量导致定时任务失败
6) 通过查询定时任务日志分析成功与否

原文地址:http://blog.51cto.com/jungiewolf/2095635

时间: 2024-10-19 00:31:18

定时任务程总结的相关文章

在非主线程里面使用NSTimer创建和取消定时任务

为什么要在非主线程创建NSTimer 将 timer 添加到主线程的Runloop里面本身会增加线程负荷 如果主线程因为某些原因阻塞卡顿了,timer 定时任务触发的时间精度肯定也会受到影响 有些定时任务不是UI相关的,本来就没必要在主线程执行,给主线程增加不必要的负担.当然也可以在定时任务执行时,手动将任务指派到非主线程上,但这也是有额外开销的. NSTimer的重要特性 NSTimer上的定时任务是在创建NSTimer的线程上执行的.NSTimer的销毁和创建必须在同一个线程上操作 NSTi

android开发步步为营之59:android定时任务之ScheduledThreadPoolExecutor

android定时任务有多种,1.Timer+TimerTask 2.Handler.postDelay   3.AlarmManager  4.ScheduledThreadPoolExecutor,前面3种比较常见,相信大家也经常使用,本文介绍采用多线程的ScheduledThreadPoolExecutor,它相比jdk 1.5的Timer的优点有几点:1.采用多线程,Timer是单线程,一旦Timer里面任何一个TimerTask异常的话,整个Timer线程就会停止 2.Timer依赖计

[NIO]从300万到700万——dawn的协程优化

dawn的协程库,使用的是kilim,不过已经远非kilim的原有代码,主要保留了协程的两个基本原语,再往上层,已经全部被替换了. 协程库,我学习过boost asio中的协程,也在我的机器上测试过单纯上下文切换的速度.这个速度在不同的机器之间没有可比性,因为彼此的cpu可能不同.但是在同一台机器上的不同库的对比,具有一定的参照性. 我记得,当时asio协程单线程情况下,协程切换的最高持续吞吐量大概是400万次每秒. 我当时是准备使用kilim,所以在同一时间也测试了kilim,我记得当时测试出

原!总结 quartz集群 定时任务 测试运行ok

由于项目优化重构,想将定时任务从quartz单机模式变成集群或分布式的方式.于是,百度了一圈....修修改改...用集群的方式部署定时任务,测试可以... 集群?分布式?什么区别? 集群:同一个业务,部署在多个服务器上 分布式:一个业务分拆多个子业务,部署在不同的服务器上 或者说 集群:是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务. 分布式:是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务. 平时常用的quartz单机模

Linux定时任务—crond,crontab

1.Linux 工作排程的种类: at, crontab 种类 依赖服务 描述 at atd 是个处理仅执行一次就结束排程的命令,不过要执行 at 时,必须要启动 atd 这个服务 crontab crond 这个指令所设定的工作将会循环的一直进行下去,必须要启动 crond 这个服务. 2.使用者的设定:可以限制使用 crontab 的使用者账号: /etc/cron.deny 将不可使用crontab的账号写入其中,一个账号一行 /etc/cron.allow 将允许的账号写入其中 3. /

java实现定时任务 Schedule

1.java定时任务可以借助 java.util.Timer 来实现 [java] view plain copy import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class Test { public static void main(String[] args) { //timer1(); timer2(); //timer

定时任务 Crontab命令 详解

摘自:http://www.centoscn.com/CentOS/help/2014/1030/4025.html 前言 crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比较高,一个要求你的程序是24X7小时不宕机,一个是 要求你的调度程序比较可靠,实际工作中,90%的程序都没有必要花这么多时间和精力去解决上面的两个问题的,只需要写好自己的业务逻辑,通

FastRPC 3.2 发布,高性能 C++ 协程 RPC 框架

用过go erlang gevent的亲们应该都会知道协程在应用中带来的方便. 如果对协程不理解的同学,通过阅读下面例子可以快速了解我们框架的协程的意义,已了解的可以跳过这部分. 协程例子:假设我们要发个Get请求获取百度首页内容: php同步方式:$result = file_get_contents("http://www.baidu.com"), php果然是世界上最好的语言,多么简洁. 然后java和c++的同学开始不屑了: "呵呵, 同步,鄙视你不解释."

Spring+Quartz 整合二:调度管理与定时任务分离

新的应用场景:很多时候,我们常常会遇到需要动态的添加或修改任务,而spring中所提供的定时任务组件却只能够通过修改xml中trigger的配置才能控制定时任务的时间以及任务的启用或停止,这在带给我们方便的同时也失去了动态配置任务的灵活性.所有的配置都在xml中完成,包括cronExpression表达式,十分的方便.但是如果我的任务信息是保存在数据库的,想要动态的初始化,而且任务较多的时候不是得有一大堆的xml配置?或者说我要修改一下trigger的表达式,使原来5秒运行一次的任务变成10秒运