1. 程式人生 > >Linux配置定時執行指定指令碼

Linux配置定時執行指定指令碼

    在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引數只備份結構),資料量大的話時間會長,可以修改只備份重要資料表,其他小表可以另外時間備份,修改指令碼或增加多一個定時任務即可。