Linux中定时任务和任务调度
修改时间
自定义时间
# 设置时间为 23年的8月7号
date -s 09/09/23
#设置时间为 14:20:50
date -s 14:20:50
自动更新时间
yum -y install ntp
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
/usr/sbin/ntpdate -u pool.ntp.org
crond 任务调度
是指系统某个时间执行的特定命令或程序
- 任务调度分类:
- 系统工作:有些重要的工作必须周而复始的运行
- 个别用户工作
命令介绍
crontab [选项]
选项 | 含义 |
---|---|
-e | 编辑定时任务 |
-l | 查询任务 |
快速入门
# 设置任务调度文件
/etc/crontab
# 设置个人任务调度
crontab -e
# 例如:每隔一分钟执行一次
*/1* * * * ls -l /etc/ > /temp/to.txt
参数细节说明
序号 | 含义 | 范围 |
---|---|---|
第一个 *
|
一小时中的第几分钟 | 0-59 |
第二个 *
|
一天中的第几小时 | 0-23 |
第三个 *
|
一月当中的第几天 | 1-31 |
第四个 *
|
一年当中第几月 | 1-12 |
第五个 *
|
一周当中的星期几 | 0-7(0和7都代表星期日) |
特殊符号说明
符号 | 含义 |
---|---|
* | 表示任何时间,一个 * 表示一小时中每分钟都执行一次 |
, | 代表不连续的时间如:0 8,10,12 * * * 表示每天8:00 ,10:00 ,12:00 执行一次 |
- | 连续的时间比如,0 5 * * 1-6 表示周一到周六执行 |
*/n | 代表每隔多久执行一次,比如*/10 * * * * ,每隔十分钟执行一次 |
crontab 相关指令
# 终止任务调度
crontab -r
# 列出当前任务调度
crontab -l
# 重启任务调度
service crond restart
at定时任务
at
命令是一次性定时计划任务,at
守护进程atd
会以后台模式运行,检查作业队列运行
默认情况下。atd
守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行作业。
执行完一个任务后就不在执行了
早使用命令时,一定要保证进程的启动,可以使用相关指令来查看
# 查看atd进程是否启动
ps -ef | grep atd
命令介绍
at [选项] [时间]
选项 | 含义 |
---|---|
-m | 当任务完成后,给用户发邮件 |
-d | atq别名 |
-v | 现实任务将被执行的时间 |
-c | 打印任务的内容到标准输出 |
-v | 现实版本信息 |
-q<队列> | 使用指定的队列 |
-f<文件> | 从指定文件读入任务不是从标准输入读入 |
-t<时间参数> | 以时间参数形式提交运行任务 |
输入完成后需要按两次
ctrl + D
两次
at时间定义
接受当天的hh:mm
(小时:分钟)置顶,假如改时间已过去,那么就放在第二天执行,例如04:00
使用midnight
(深夜),noon
(中午),teatime
(下午茶),模糊词语指定时间
采用12小时计时制,在后面加上am
或者pm
下午来说明上午还是下午
置顶命令执行的具体日期,置顶格式为month day
(月 日)或mm/dd/yy
(月/日/年)或者dd.mm.yy
(日.月.年)。指定格式为:now + count time-units
,now就是当前时间,time-units
就是时间单位,几天,几小时。例如:
now + 5 minutes
直接使用today
、tomorrw
来制定完成命令的时间。
删除任务
atrm [任务编号]
定时备份数据库
mysql备份格式
mysqldump -uroot -p密码 数据库名 >> /wwww/mysql-backups/db.sql
定时备份
执行写好的sh
脚本文件文章来源:https://www.toymoban.com/news/detail-704041.html
# 进入任务调度文件
crontab -e
# 每隔一分钟执行一次,并出日志
*/1 * * * * /root/Documents/test.sh >> /root/Documents/test-sh.log
# 每天1点06分备份
6 1 * * * /www/backup/database/mysql.sh >> /www/backup/database/mysql/backup.log
备份脚本文件
sh
配置文件文章来源地址https://www.toymoban.com/news/detail-704041.html
#!/bin/bash
# 备份目录
BACKUP=/root/Documents/db
# 当前时间
DATETIME=$(date +%Y-%m-%d_%H\:%M\:%S)
# 当前日期
DIR_DATE=$(date +%Y-%m-%d)
# 数据库名称
DATABASE_NAME=easybbs
# 数据库地址
HOST=localhost
# 数据库用户名
DATABAS_USERNAME=root
#数据库密码
DATABAS_PASSWORD=你的密码
# 文件目录名=[备份目录]+[数据库名称]+[当前日期]
DIR_NAME=${BACKUP}/${DATABASE_NAME}/${DIR_DATE}
# 数据库备份目录=[备份目录]+[数据库名称]
EASYBBS_DIR=${BACKUP}/${DATABASE_NAME}
# SQL文件名
SQL_FILENAME=$DATETIME.sql.gz
echo "目录:$DIR_NAME"
echo "SQL文件名:$SQL_FILENAME"
# 创建备份目录,如果不存在,就创建,注意要加空格!!!
[ ! -d "${DIR_NAME}" ] && mkdir -p "${DIR_NAME}"
# 备份数据库
mysqldump -u${DATABAS_USERNAME} -p${DATABAS_PASSWORD} --host=${HOST} -q -R --databases ${DATABASE_NAME} | gzip > ${DIR_NAME}/${SQL_FILENAME}
# 将文件处理成压缩包-tar.gz
cd ${DIR_NAME}
tar -zcvf ${EASYBBS_DIR}/$DIR_DATE.tar.gz *
# 删除超过1天的文件夹 -atime是最后一次访问 -ctime是最后一次修改
DAYS_AGO=$(date -d "1 days ago" +%Y-%m-%d)
[ -d "${DAYS_AGO}" ] && mkdir -p "${DAYS_AGO}"
# find ${BACKUP}/${DATABASE_NAME} -ctime +1 -name "${DAYS_AGO}" -exec rm {} \;
# 或者删除 tar压缩包文件
# find ${BACKUP}/${DATABASE_NAME} -ctime +10 -name "*.tar.gz" -exec rm -rf {} \;
到了这里,关于Linux中定时任务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!