linux的crond服务可以为我们设定定时任务,即在指定时间执行脚本
直接上demo
以下操作实现每晚23:30执行数据库备份
#编辑定时任务
crontab -e #进入编辑界面
30 23 * * * /shell/backup.sh #任务内容 即每晚23:30执行数据库备份
:wq #保存退出
crontab -l #查看定时任务列表
service crond status #查看定时任务服务状态 如果服务没有活动 可以
service crond restart #重启服务 有些系统是/bin/systemctl restart crond.service
定时任务命令格式 f1 f2 f3 f4 f5 program
- f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
- 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
- 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
- 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
- 当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推
- program 是执行的shell脚本 可以写在一个文件里 我的就是写在/shell/back.sh脚本文件内容如下
pass='数据库密码' #用变量保存数据库密码 避免shell命令行特殊字符不兼容
nowTime=`date '+%Y%m'` #格式化当前时间 年月 如 201908
newDir=/backup/$nowTime
if [ ! -d $newDir ];then
mkdir -p $newDir #创建年月目录,方便以后管理
else
echo "文件夹已经存在"
fi
mysqldump -uroot -p$pass tourism >> /backup/$nowTime/tourism_$(date "+%F").sql#导出数据库到指定文件