我的linux学习之入门到入坟 (十九)-计划任务管理

交流群:692356620,有不同的问题或见解可以来群里讨论,或者私聊我
qq:1251611916

1. crond计划任务概述

什么是计划任务,计划任务类似于我们平时生活中的闹钟。
Linux系统的计划任务服务crond可以满足周期性执行任务的需求。
crond进程每分钟会处理一次计划任务, 计划任务主要是做一些周期性的任务目前最主要的用途是定时备份数据

Schedule one-time tasks with at.   一次性调度执行 at
Schedule recurring jobs with cron. 循环调度执行 cron
Schedule recurring system jobs. 所有计划任务执行中的输出都会以邮件的方式发送给指定用户, 除非重定向


//循环调度执行cron 进程每分钟会处理一次计划任务
[root@wangqing ~]# systemctl status crond
[root@wangqing ~]# ps aux |grep crond
root      1201  0.0  0.0 126264  1640 ?        Ss   11:15   0:00 /usr/sbin/crond -n

计划任务分为以下两种情况:

  • 系统级别的定时任务:

    清理系统缓存
    临时文件清理
    系统信息采集
    日志文件切割

  • 用户级别的定时任务:

    定时同步互联网时间
    定时备份系统配置文件
    定时备份数据库文件

2. crond配置文件详解

文件              说明
/etc/crontab        //crontab配置文件
/etc/cron.deny      //该文件中所列用户不允许使用crontab命令
/var/spool/cron/*   //所有用户定时文件都存放此目录,文件以用户名命名
/var/log/cron       //定时任务执行后的日志文件,可用来回溯

3. crond计划任务管理

crond任务管理

参数          含义                指定示例
[root@wangqing ~]# crontab --help
-e      编辑crontab文件内容       crontab -e
-l      查看crontab文件内容       crontab -l
-r      删除crontab文件内容       crontab -r
-u      管理其他用户的计划任务 crontab -u wangqing -l
注意: crontab {-l -e}实际上就是在操作/var/spool/cron/username

//如何进行计划任务的备份?

crond时间含义

# 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) OR sun,mon,tue,wed,thu,fri,sat  //星期
# |  |  |  |  |
# *  *  *  *  *   command to be executed

// *    表示任意的(分、时、日、月、周)时间都执行
// -    表示一个时间范围段, 如5-7点
// ,    表示分隔时段, 如6,0,4表示周六、日、四
// */n  表示每隔n单位时间, 如*/10 每10分钟

crond编写示例

00 02 * * * command
00 02 1 * * command
00 02 14 2 * command
00 02 * * 7 command
00 02 * 6 5 command
00 02 14 * 7 command
00 02 14 2 7 command
00 02 * * * command
*  02 * * * command
* * * * *  command
* * 14 2 *  command
*/5 * * * *  command
00 02 * 1,5,8 * command
00 02 1-8 * *  command

crond书写规范

//1.为计划任务增加必要的注释
[root@wangqing ~]# crontab -l
##time sync
*/5 * * * * /usr/sbin/ntpdate time1.aliyun.com &>/dev/null

//2.规范计划任务执行脚本存放的路径/scripts/
[root@wangqing ~]# crontab -l
##backup www to /backup
30 01 * * * /bin/sh /scripts/www_backup.sh &>/dev/null

//3.执行shell脚本任务前加/bin/sh, 脚本结尾加&>/dev/null
//调试好后应屏蔽debug输出信息,避免产生系统垃圾占用过多inode, 如需输出日志, 可重定向至日志文件
[root@wangqing ~]# crontab -l
####backup www to /backup
30 01 * * * /bin/sh /scripts/www_backup.sh &>/tmp/www_backup.log

4. crond配置编写实例

[root@wangqing ~]# crontab -e

#每天凌晨切割nginx日志
05 00 * * * /bin/bash -x /scripts/cut_nginx.sh &> /scripts/log/nginx.log

#每天5点备份数据库
00 05 * * * /bin/bash -x /scripts/dump_sql.sh &>/scripts/log/mysql.log



//注意:
1.我们所有的crond服务是运行的程序。而crontab命令用户用来设置定时规则的命令。
2.crond服务是企业生产工作中常用的重要服务,at很少使用,可以忽略。
3.几乎每个服务器都会用到crond服务。

5. crond计划任务调试

  1. 调整任务每分钟执行, 检测是否是否正常, 有些任务不要频繁执行
  2. 调整系统时间然后在检测任务, 生产不建议直接使用此方式
  3. 执行脚本, 将脚本执行输出写入指定日志文件, 观察日志内容是否正常
  4. 注意一些任务命令带来的问题echo “wangqing” >>/tmp/test.log &>/dev/null
  5. 命令使用绝对路径, 防止无法找到命令导致定时任务执行故障
  6. 查看/var/log/cron日志进行调试

建议: 将需要定期执行的任务写入脚本中, 建立/scripts目录统一存放脚本, 脚本中命令必须使用绝对路径,手动执行脚本检测输出是否正常, 然后将脚本加入计划任务测试, 测试后无问题将脚本输出写入对应的日志文件中即可。

计划任务添加步骤:

  1. 手动执行保留执行命令的正确结果
  2. 编写脚本
    • 脚本需要统一路径/scripts
    • 脚本开头建议填写注释信息, 包括执行时间、周期、任务
    • 脚本内容复制执行成功的命令至脚本文件中(减少每个环节出错几率)
    • 脚本内容尽可能的优化, 使用一些变量或使用简单的判断语句
    • 脚本执行的输出信息不要随意打印, 可以重定向至其他位置保留或丢入黑洞
  3. 执行脚本
    • 使用bash执行, 防止脚本没有增加执行权限(/bin/bash)
    • 执行命令以及脚本成功后并复制该命令
  4. 编写计划任务
    • 加上必要的注释信息, 人、时间、任务
    • 设定计划任务执行的周期
    • 加入执行脚本的命令
  5. 调试计划任务
    • 增加任务频率测试、调整系统时间测试(不能用于生产)
    • 检查环境变量问题、检查crond服务产生日志进行排查
1. 基础概念 汇编语言是一种低级语言,它是计算机硬件指令的助记符。汇编语言直接反映了计算机的硬件结构,可以直接操作计算机的硬件资源。 汇编语言的基本单位是汇编指令,它由操作码和操作数两部分组成。操作码表示要执行的操作,操作数表示操作的对象或数据。 汇编语言的程序由若干条汇编指令组成,程序的执行顺序由程序中的指令顺序决定。 2. 寄存器 寄存器是计算机中用来暂时存储数据的高速存储器件,是汇编语言中最常用的数据存储方式。 常用的寄存器有通用寄存器、段寄存器、指针寄存器、标志寄存器等。 通用寄存器包括AX、BX、CX、DX等,可以用来存储数据、地址、偏移量等。 段寄存器包括CS、DS、SS、ES等,用来存储段地址。 指针寄存器包括SP、BP、SI、DI等,用来存储栈指针、基址指针、源地址指针、目的地址指针等。 标志寄存器包括CF、PF、AF、ZF、SF、OF等,用来存储运算结果的状态信息。 3. 指令集 汇编语言的指令集包括数据传送指令、算术指令、逻辑指令、比较指令、跳转指令、循环指令等。 数据传送指令用来把数据从一个地方传送到另一个地方,包括MOV、XCHG、LEA等。 算术指令用来进行加、减、乘、除等运算,包括ADD、SUB、MUL、DIV等。 逻辑指令用来进行位运算,包括AND、OR、NOT、XOR等。 比较指令用来比较两个数据的大小关系,包括CMP、TEST等。 跳转指令用来改变程序的执行顺序,包括JMP、JZ、JNZ、JE、JNE等。 循环指令用来重复执行一段程序,包括LOOP、LOOPE、LOOPZ、LOOPNE、LOOPNZ等。 4. 程序设计 汇编语言的程序设计需要掌握一定的技巧和方法,包括程序的结构、数据的处理、流程控制等。 程序的结构包括程序的头部、数据段、代码段、堆栈段等。 数据的处理包括数据类型、数据的存储和读取、数据的转换等。 流程控制包括条件判断、循环控制、函数调用等。 5. 汇编器和调试器 汇编器是将汇编语言程序翻译成机器语言程序的工具,可以将汇编语言程序转换成目标代码或可执行文件。 调试器是用来调试程序的工具,可以帮助程序员查找程序中的错误、调试程序的执行流程等。 6. 总结 学习汇编语言需要掌握基本概念、寄存器、指令集、程序设计、汇编器和调试器等知识,需要进行大量的实践和练习,才能掌握汇编语言的编程技巧和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值