linux任务调度
Linux任务调度
任务调度:是指系统在某个时间执行的特定的命令或程序
linx系统任务调度分为两类:系统任务调度,用户任务调度
- 系统任务调度:系统周期性所要执行的工作,比如系统数据备份、临时文件清理、缓存清理等。
- 用户任务调度:某个用户定期要执行的工作,比如用户数据备份、定时邮件提醒等,这些工作可由每个用户自行设置。
crond 是 Linux 下用来周期地执行某种任务或等待处理某些事件的一个守护进程,和 Windows 中的计划任务有些类似。
当安装完操作系统会默认开启任务调度命令
crontab :进行定时任务的调度
参数:
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
系统任务调度文件: /etc/crontab
用户任务调度文件:/var/spool/cron
新增用户任务调度文件:
执行crontab -e命令
添加任务
如: */1 * * * * ls -l /etc/ > /tmp/to.txt
意思是说每小时的每分钟执行ls -l /etc/>/tmp/to.txt
crontab 服务
service cron start //启动服务
service cron stop //关闭服务
service cron restart //重启服务
service cron reload //重新载入配置
service cron status //查看服务状态
查看服务是否已经运行用 ps -ax | grep cron
占位符含义
特殊符号说明
星号(*):代表所有可能的值,比如第一个"*“就代表一小时中每分钟都执行一次
逗号(,):代表不连续的时间,比如"0 8,12,16 * * * 命令"代表每天的8点0分,12点0分,16点0分都执行一次命令
中杠(-):代表连续的时间,比如"0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令
*/n:代表每隔多久执行一次,比如"*/10 * * * * 命令",代表每隔10分钟就执行一次命令
应用案例
实例1:每隔1分钟,就将当前的日期信息,追加到/tmp/mydate文件
*/1 * * * * date >>/tmp/mydate
实例2:每隔一分钟,将当前日期和日历都追加到/home/mycal文件
步骤1:vim /home/my.sh 写入内容 date >> /home/mycal 和 cal >>/home/mycal
步骤2:给my.sh增加执行权限
chmod u+x /home/my.sh
步骤3:crontab -e
*/1 * * * * /home/my.sh
案例3:每天凌晨2:00将Mysql数据库testdb,备份到文件中。
步骤1: crontab -e
步骤2:
0 2 * * * mysqldump -u root -proot testdb > /home/db.bak
at命令是一次性定时命令,at的守护进程会以后台模式进行,检查作业列表来运行
默认情况下,atd守护进程会每60秒检查作业列表,有作业时,会检查作业运行时间,如果时间于当前时间匹配,则运行此作业
at命令时一次性定时任务作业,执行完一个任务后不再执行此任务了
在使用at命令的时候,一定要保证atd进程的启动,可以使用指令来查看:ps -ef |gerp atd //可以检测atd是否运行
at命令格式
at [选项] [时间]
按ctrl+d结束命令
参数:
-m 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
-l 显示待执行任务的列表,等同于atq
-d 删除指定的待执行任务,等同于atrm
-c 将命令行中列出的作业标记为标准输出
at时间定义
- 以hh:mm(小时:分钟)定义,例如:04:00
- 采用12小时制,即在时间后面加上AM(上午)或PM(下午),例如:12PM
- 指定具体日期,例如:04:00 2021-03-1
- 使用相对计时法,格式:now + count time-units(时间单元),时间单元可以时minutes(分钟),hour(小时),days(天),weeks(星期)
应用案例
实例1:2天后的下午5点执行命令
at 5pm +2 days
at> echo"hello world">1.txt
at> <EOT>
实例2:查看at作业列表
atq
实例3:删除作业
atrm 编号
实例4:查看作业内容
at -c 编号
说明:at命令尚未执行的任务都存在/var/spool/at/目录下,也可以直接查看该文件
摘自:https://www.bilibili.com/video/BV1Sv411r7vd?p=57
Linux任务调度
任务调度:是指系统在某个时间执行的特定的命令或程序
linx系统任务调度分为两类:系统任务调度,用户任务调度
- 系统任务调度:系统周期性所要执行的工作,比如系统数据备份、临时文件清理、缓存清理等。
- 用户任务调度:某个用户定期要执行的工作,比如用户数据备份、定时邮件提醒等,这些工作可由每个用户自行设置。
crond 是 Linux 下用来周期地执行某种任务或等待处理某些事件的一个守护进程,和 Windows 中的计划任务有些类似。
当安装完操作系统会默认开启任务调度命令
crontab :进行定时任务的调度
参数:
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
系统任务调度文件: /etc/crontab
用户任务调度文件:/var/spool/cron
新增用户任务调度文件:
执行crontab -e命令
添加任务
如: */1 * * * * ls -l /etc/ > /tmp/to.txt
意思是说每小时的每分钟执行ls -l /etc/>/tmp/to.txt
crontab 服务
service cron start //启动服务
service cron stop //关闭服务
service cron restart //重启服务
service cron reload //重新载入配置
service cron status //查看服务状态
查看服务是否已经运行用 ps -ax | grep cron
占位符含义
特殊符号说明
星号(*):代表所有可能的值,比如第一个"*“就代表一小时中每分钟都执行一次
逗号(,):代表不连续的时间,比如"0 8,12,16 * * * 命令"代表每天的8点0分,12点0分,16点0分都执行一次命令
中杠(-):代表连续的时间,比如"0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令
*/n:代表每隔多久执行一次,比如"*/10 * * * * 命令",代表每隔10分钟就执行一次命令
应用案例
实例1:每隔1分钟,就将当前的日期信息,追加到/tmp/mydate文件
*/1 * * * * date >>/tmp/mydate
实例2:每隔一分钟,将当前日期和日历都追加到/home/mycal文件
步骤1:vim /home/my.sh 写入内容 date >> /home/mycal 和 cal >>/home/mycal
步骤2:给my.sh增加执行权限
chmod u+x /home/my.sh
步骤3:crontab -e
*/1 * * * * /home/my.sh
案例3:每天凌晨2:00将Mysql数据库testdb,备份到文件中。
步骤1: crontab -e
步骤2:
0 2 * * * mysqldump -u root -proot testdb > /home/db.bak
at命令是一次性定时命令,at的守护进程会以后台模式进行,检查作业列表来运行
默认情况下,atd守护进程会每60秒检查作业列表,有作业时,会检查作业运行时间,如果时间于当前时间匹配,则运行此作业
at命令时一次性定时任务作业,执行完一个任务后不再执行此任务了
在使用at命令的时候,一定要保证atd进程的启动,可以使用指令来查看:ps -ef |gerp atd //可以检测atd是否运行
at命令格式
at [选项] [时间]
按ctrl+d结束命令
参数:
-m 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
-l 显示待执行任务的列表,等同于atq
-d 删除指定的待执行任务,等同于atrm
-c 将命令行中列出的作业标记为标准输出
at时间定义
- 以hh:mm(小时:分钟)定义,例如:04:00
- 采用12小时制,即在时间后面加上AM(上午)或PM(下午),例如:12PM
- 指定具体日期,例如:04:00 2021-03-1
- 使用相对计时法,格式:now + count time-units(时间单元),时间单元可以时minutes(分钟),hour(小时),days(天),weeks(星期)
应用案例
实例1:2天后的下午5点执行命令
at 5pm +2 days
at> echo"hello world">1.txt
at> <EOT>
实例2:查看at作业列表
atq
实例3:删除作业
atrm 编号
实例4:查看作业内容
at -c 编号
说明:at命令尚未执行的任务都存在/var/spool/at/目录下,也可以直接查看该文件