Linux配置定時執行指定指令碼
阿新 • • 發佈:2019-01-10
在Linux下,有時需要定時執行一些任務,如定時檢測系統資源資訊、定時備份資料庫等操作,可以藉助crontab命令,其基本命令格式如下:
* * * * * {命令}
第一個*表示每xx(1-59)分鐘,每分鐘用*或*/1表示
第二個*表示每xx(0-23)小時
第三個*表示日期,1-31
第四個*表示月份,1-12
第五個*表示星期x(0-6, 0為星期日)
{命令}為要執行的命令或指令碼
crontab有如下幾個常用引數:
-l: 列出使用者目前的crontab
-e: 編輯當前使用者的crontab
-d: 刪除當前使用者的crontab
在CentOS系統下,crontab命令的檔案存放在目錄/var/spool/cron下,每個使用者的crontab一個檔案,如下所示:
使用-e編輯任務儲存後,檢視當前使用者的定時任務列表如下:
表示每天的3點45分執行shell指令碼來備份資料庫,指令碼大致內容如下:
#!/bin/bash date_now=$(date +%Y%m%d%H%M) db_user=xxx db_port=xxx db_host=xxx db_pwd=xxx db_name=xxx echo "Starting ..." start=`date +%s` /usr/local/mysql/bin/mysqldump -u${db_user} -h${db_host} -P${db_port} -p${db_pwd} --hex-blob -R -E --single-transaction -B ${db_name}|gzip > /backup_path/${db_name}_${date_now}.sql.gz end=`date +%s` dif=$[ end - start ] echo "備份時間: " ${date_now} " 備份的資料庫名: " ${db_name} " ,耗時: " ${dif} "s" >> /xx/xxx/backup_db_info.txt
儲存shell指令碼增加x可執行許可權後即可。
改進點:
1. 備份多個數據庫,可以考慮用for迴圈
2. 如上是全庫結構加資料庫備份(可加-d引數只備份結構),資料量大的話時間會長,可以修改只備份重要資料表,其他小表可以另外時間備份,修改指令碼或增加多一個定時任務即可。