Crontab定時(shí)任務(wù)更新SOLO以及備份數(shù)據(jù)庫(kù)
Linux定時(shí)執(zhí)行任務(wù)Crontab
1. 安裝Crontab
1.1 安裝命令
# vixie-cron軟件包是cron的主程序
yum install vixie-cron
# crontabs軟件包是用來安裝、卸裝、或列舉用來驅(qū)動(dòng) cron 守護(hù)進(jìn)程的表格的程序
yum install crontabs
1.2 啟動(dòng)命令
# 啟動(dòng)服務(wù)
/sbin/service crond start
# 關(guān)閉服務(wù)
/sbin/service crond stop
#重啟服務(wù)
/sbin/service crond restart
#重新載入配置
/sbin/service crond reload
1.3 查看相關(guān)狀態(tài)
# 查看服務(wù)狀態(tài)
service crond status
# 手動(dòng)啟動(dòng)服務(wù)
service crond start
1.4 開機(jī)自啟
chkconfig --level 35 crond on
2. crontab使用
2.1 定時(shí)器規(guī)則
以下是一條定時(shí)器的規(guī)則
# 每天0時(shí)0分執(zhí)行`/usr/home/mysql.sh`的文件,并將日志寫入`/usr/home/mysql.log`
0 0 * * * /usr/home/mysql.sh >> /usr/home/mysql.log
crontab 文件的格式:
{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
- minute:分鐘,區(qū)間為0-59
- hour:小時(shí),區(qū)間為0-23
- day-of-month:每月的日,區(qū)間為0–31;
- month:區(qū)間為1–12;1是1月,12是12月;
- day-of-week:區(qū)間為0–6;周日是0。
除了數(shù)字還有以下幾個(gè)特殊的符號(hào)需要特殊說明:
*:代表所有的取值范圍內(nèi)的數(shù)字;/:代表每的意思,”*/5″表示每5個(gè)單位;-:代表從某個(gè)數(shù)字到某個(gè)數(shù)字;,:分開幾個(gè)離散的數(shù)字
以下是部分定時(shí)器示例
# 每五分鐘執(zhí)行
*/5 * * * * /usr/home/mysql.sh
# 每小時(shí)執(zhí)行
0 * * * * /usr/home/mysql.sh
# 每天執(zhí)行
0 0 * * * /usr/home/mysql.sh
# 每周執(zhí)行
0 0 * * 0 /usr/home/mysql.sh
# 每月執(zhí)行
0 0 1 * * /usr/home/mysql.sh
# 每年執(zhí)行
0 0 1 1 * /usr/home/mysql.sh
# 每天早上6點(diǎn)
0 6 * * * /usr/home/mysql.sh
# 每?jī)蓚€(gè)小時(shí)
0 */2 * * * /usr/home/mysql.sh
# 晚上11點(diǎn)到早上8點(diǎn)之間每?jī)蓚€(gè)小時(shí)
0 23-7/2 * * * /usr/home/mysql.sh
# 1月1日早上4點(diǎn)
0 4 1 1 * /usr/home/mysql.sh
3. 定時(shí)更新博客
3.1 編寫更新博客shell
#!/bin/bash
#
# Solo docker 更新重啟腳本
#
# 1. 請(qǐng)注意修改參數(shù)
# 2. 可將該腳本加入 crontab,每日凌晨運(yùn)行來實(shí)現(xiàn)自動(dòng)更新
#
docker pull b3log/solo
docker stop solo
docker rm solo
docker run --detach --name solo --restart=on-failure:10 --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="123456" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:3306/blog?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
b3log/solo --listen_port=8081 --server_scheme=https --server_host=blog.booleandev.xyz --server_port=
在添加定時(shí)任務(wù)之前,可提前執(zhí)行下該文件,看看是否能夠更新成功
如果沒有執(zhí)行權(quán)限 則執(zhí)行以下命令
chmod 777 文件名
3.2 將shell添加到crontab定時(shí)任務(wù)中
# 打開crontab定時(shí)器文件
crontab -e
# 我的shell文件時(shí)放置于`/usr/local/soft/crontab/solo.sh`
# 將日志文件寫于/usr/local/soft/crontab/solo.log
0 0 * * 0 /usr/local/soft/crontab/solo.sh >> /usr/local/soft/crontab/solo.log
# 等到時(shí)間,會(huì)自動(dòng)執(zhí)行,就可以看到solo.log文件內(nèi)容
4. 定時(shí)備份mysql數(shù)據(jù)庫(kù)
4.1 編寫shell文件
#!/bin/bash
#獲取當(dāng)前時(shí)間
date_now=$(date "+%Y%m%d-%H%M%S")
# 備份文件夾目錄
backUpFolder=/usr/local/soft/backup/mysql/blog
username="root"
password="123456"
db_name="solo"
#定義備份文件名
fileName="${db_name}_${date_now}.sql"
#定義備份文件目錄
backUpFileName="${backUpFolder}/${fileName}"
echo "starting backup mysql ${db_name} at ${date_now}."
/usr/bin/mysqldump -u${username} -p${password} --lock-all-tables --flush-logs ${db_name} > ${backUpFileName}
#進(jìn)入到備份文件目錄
cd ${backUpFolder}
#壓縮備份文件
tar zcvf ${fileName}.tar.gz ${fileName}
4.2 將shell添加到crontab定時(shí)任務(wù)中
# 打開crontab定時(shí)器文件
crontab -e
# 我的shell文件時(shí)放置于`/usr/local/soft/crontab/solo.sh`
# 將日志文件寫于/usr/local/soft/crontab/solo.log
0 0 * * * /usr/local/soft/crontab/mysql.sh >> /usr/local/soft/crontab/mysql.log
# 等到時(shí)間,會(huì)自動(dòng)執(zhí)行,就可以看到mysql.log文件內(nèi)容

浙公網(wǎng)安備 33010602011771號(hào)