linux计划任务管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux计划任务管理相关的知识,希望对你有一定的参考价值。

参考技术A

什么是计划任务,计划任务类似于我们平时生活中的闹钟。
在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

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

系统级别的定时任务:

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

用户级别的定时任务:

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

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

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 * * * * /u sr/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

[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服务。

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

计划任务添加步骤:

作业:

a. 00 13,20 * 1-5 * backup.sh
b. 0 13,20 1,5 * * backup.sh
c. * 13,20 * * 1-5 backup.sh
d. 00 13,20 * * 1-5 backup.sh

说明以上答案每一行是什么含义

2.新建/scripts/httpd.sh文件,并让/scripts/httpd.sh脚本在每天的00:10分执行

3.新建/backup目录,每周一下午5:50将/backup目录下的所有文件打包成 backup.tar.gz

4.写一个定时任务,每天0点5分把/var/log/nginx下7天前的文件转移到/backup/2018_xx_xx的目录中

5.系统脚本/scripts/which.sh,如何定时每隔7分钟执行一次?

6.如何不小心删除了/var/spool/cron/root文件,该如何恢复。

/p3.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/49da2da0342544a6a4c02f2aa442d537","uri":"","width":323,"height":27,"darkImgUrl":"https://p3.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/d8ccdb213b9b46a183e7cda418c5360b","darkImgUri":"","formulaImgStatus":"succeed"" class="syl-plugin-formula">

linux中计划任务管理

在linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务(如定期备份数据、定期开启服务等)。

RedHat 6.5系统中的计划任务是由at、crontab命令进行计划任务的设置,其中at命令为一次性计划任务,crontab命令是周期性的计划任务。
(1) at命令(一次性的执行任务)
使用at命令设置的计划任务只在指定的时间点执行一次,前提是需要开启atd系统服务,需要设置计划任务的时间、日期必须在当前系统的时间之后,否则将无法正确设置计划任务。
设置一次性计划任务时,在at命令行中一次指定计划执行任务的时间、日期作为参数(若只指定时间则表示当天的时间,若只指定日期则表示该日期的当前时间),确认后将进入带“at>”提示符的任务编辑界面,每行设置一条执行命令,可以依次设置多条语句,最后按Ctrl+D组合键提交任务即可。

示例:计划明天22:00时自动关闭当前系统
技术分享图片
对于已经设置计划任务但是并未执行的计划任务,可以通过atq命令进行查询
技术分享图片
若要删除at任务,可以使用atrm命令,删除后的at任务将不会被执行,并且不会显示在atq命令的显示结果中
技术分享图片

(2) crontab命令(周期性重复执行任务)
使用crontab命令设置的计划任务可以按预设的周期重复执行,可以大大减轻设置重复性系统管理任务的操作,由软件包cronie提供crontab工具、系统服务crond和配置文件/etc/crontab.
crotab命令常用选项如下:
-e:编辑计划任务列表
-u:指定所管理的计划任务属于哪个用户,默认时针对当前用户,一般只有root用户有权限使用此选项(用于编辑、删除其他用户的计划任务)
-l:列表显示计划任务
-r:删除计划任务列表

每一行仍无配置记录都包括六个数据字段,分别表示不同的含义,每个字段必须定义,如下图
技术分享图片
其中前五个数据字段可以使用下列符号表示
星号“*”:表示取值范围中的任意时间
减号“-”:表示一个连续的时间范围
逗号“,”:表示一个间隔的不连续范围

示例:每天0:00使用tar命令自动备份/etc/httpd目录

技术分享图片
查看当前用户的计划任务列表
技术分享图片
删除当前用户的计划任务列表
删除某一条计划任务时,可以通过crontab –e进行编辑;若要清空当前用户的所有计划任务时,执行crontab –r命令
技术分享图片


注意事项:
定时任务(一般指脚本任务)规则的结尾最好加上“>/dev/null 2>&1”,即不输出任何信息,若不加,时间长了,会产生大量文件占用大量磁盘inode节点,以至于磁盘inode满而无法写入正常数据。

以上是关于linux计划任务管理的主要内容,如果未能解决你的问题,请参考以下文章

linux中计划任务管理

Linux 任务计划管理

Linux计划任务管理

Linux计划任务管理

Linux常用命令计划任务管理

Linux中计划任务管理的设置与删除 必看!必看!必看!!!