系统学习----Linux计划任务

Linux计划任务:

计划任务分为两类:

  1. 未来某个时间执行一次任务: at batch
  2. 周期性运行某个任务: crond

at命令

[root@test ~]# at --help
at: invalid option -- '-'
Usage: at [-V] [-q x] [-f file] [-mMlbv] timespec ...
       at [-V] [-q x] [-f file] [-mMlbv] -t time
       at -c job ...
       atq [-V] [-q x]
       at [ -rd ] job ...
       atrm [-V] job ...
       batch

用法说明: at [options] [time|batch] [job]

options:
-f : 指定执行文件

times:
HH:MM [YY-mm-dd]
moon,midnight…
tomorrow
now+#[min,hours,seconds…]

batch命令:

让系统自动选择空间时间去执行指定任务

实例:

cat 1.sh
echo “hello”
at now +1 minutes -f 1.sh # 在1分钟后执行1.sh文件里的内容

atq命令: 可以去查看当前的任务队列
3 Thu Feb 13 03:16:00 2020 a root


crond服务

Linux系统则是由crond服务来控制的;在Linux系统上面非常多的计划任务
都基本采用crond方式,因此crond服务默认是开机自启的;另外,由于用户可以自定义计划任务,所以提供了crontab命令

Linux下的任务调度分为两类:
系统任务调度
用户任务调度

系统任务调度:

系统周期性要执行的工作,比如定期写系统数据到磁盘中

[root@test ~]# systemctl status crond 	# 查看crond服务是正常运行的
[root@test ~]# cat /etc/crontab 就是系统任何调度的配置文件
SHELL=/bin/bash	# 默认系统调度任务采用的shell程序
PATH=/sbin:/bin:/usr/sbin:/usr/bin	# 默认系统调度任务采用的命令路径
MAILTO=root	# 默认本地邮件服务用户

# 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
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

举例: 执行用户root 执行任务: echo “hello”
时间表示法:

  1. 特定值
    给定时间有效取值范围的值

  1. *
    给定时间上有效取值范围的所有值,表示“每…”

实例1: root用户在每天晚上9.30执行指定任务
30 21 * * * root echo “hello”


  1. 离散取值
    #,#,# …

实例2: root用户在每周一周五晚上8点执行执行任务

0 20 * * mon,fri root echo “hello”


  1. 连续取值
    实例3: zhangsan用户在每个月1-9晚上8点执行任务

0 20 1-9 * * zhangsan echo “准备还花呗”


  1. 在执行时间范围上,定义步长
    /# : 指定步长

实例4: zhangsan每5分钟执行指定任务

*/5 * * * * zhangsan echo “hi”
* */3 * * * zhangsan echo.sh # 每3小时执行一次

用户任务调度:

crontab命令定义:每个用户都有专用的crontab文件: /var/spool/crond/Username

crontab命令:

[root@test cron]# crontab --help
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
Usage:
 crontab [options] file
 crontab [options]
 crontab -n [hostname]

常用参数:
-u user: 指定执行用户,默认是root
-l: 列出任务列表
-e: 便器任务
-r: 移除任务
-i: 同-r参数,交互式

实例:

[root@test cron]# crontab -e 		# 将计划任务写到指定文件中
[root@test cron]# cat /var/spool/cron/root
* * * * * echo "hello"

计划任务场景:
日志: 只保留7天内的日志(使用计划任务在每天0点删除7天前的日志即可)
* * * * * find /var/log/java/*.log -atime 7 -delete | -exec rm -rf {};


备份: 备份指定数据/mydata/
10 0 * * * tar -czxf /backup/mydata.zip.tar /mydata/

发布了25 篇原创文章 · 获赞 3 · 访问量 2298

猜你喜欢

转载自blog.csdn.net/weixin_46097280/article/details/104348306