今天因為業務需求,需要在伺服器上配置定時任務執行資料庫的sql語句,所以使用到了linux 的crontab。特此記錄,分享一下自己的過程。
首先呢,我們知道crontab是在linux中用於設定在某些時間可以自動執行某些命令的功能。
在linux中使用crontab -e
可以直接到達編輯定時任務的介面。像編輯文字一樣。編輯的是/var/spool/cron下對應使用者的cron檔案,也可以直接修改/etc/crontab檔案。
我們先來看看標準的一條crontab配置是什麼樣的。
0 0 * * * /home/workspace/test/drop_cache.sh
而裡面的語法是這樣的:
分鐘 小時 天 月 天每星期 命令
每個字段代表的含義如下:
minute 每個小時的第幾分鐘執行該任務
hour 每天的第幾個小時執行該任務
day 每月的第幾天執行該任務
month 每年的第幾個月執行該任務
dayofweek 每週的第幾天執行該任務
command 指定要執行的程式
所以上面的這個命令的意思就是在每天的零點零分的時候執行這個drop_cache.sh指令碼。
我們再給一些例子
1 1,2 * * * reboot 其中的1,2代表每天的1點和2點的第一分鐘的時候執行reboot命令,中間的逗號表示不同的時間點
1 1-3 * * * reboot 其中的1-3表示每天的1點到3點的第一分鐘的時候執行reboot命令。「-」可以表示乙個時間的範圍
*/1 * * * * reboot 這裡的*/1表示每隔一分鐘就執行reboot命令了
那大概搞明白了以後,就可以開始了,我要做的是把要執行的sql語句寫進指令碼檔案裡面。因為我使用的是postgresql的資料庫所以在這裡的示例就是關於postgresql的了。
export pgpassword="123456"
echo $pgpassword
psql -u postgres -d databasename <<_eot
update t_sys_name set name=1 where id=1;
_eot
這裡的databasename就是你的資料庫的名稱,上面的password也就是密碼了。然後寫好以後呢。我們儲存為update.sh。放在某個目錄下,然後crontab -e 編輯配置檔案,加上:
*/5 * * * * /home/workspace/test/update.sh
然後儲存退出。這個的意思就是每隔5分鐘就執行一次這個update.sh指令碼了。
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
但是後面我還是發現沒生效。結果是因為我沒有對這個指令碼檔案進行許可權的分配。
chomd 755 /home/workspace/test/update.sh
按照慣例分享歌詞。
曾夢想仗劍走天涯 看一看世界的繁華
--曾經的你
Linux定時工具crontab
一.crontab工具 crontab u 設定某個使用者的cron服務 crontab e 編輯root使用者的cron服務,加上 u可編輯指定使用者的定時任務,例如 crontab u www e crontab l 列出root使用者cron服務的詳細內容,加上 u可檢視指定使用者的定時任務,...
linux 定時程式 crontab
1.作用 使用crontab命令可以修改crontab配置檔案,然後該配置由cron公用程式在適當的時間執行,該命令使用許可權是所有使用者。2.格式 crontab u user 3.主要引數 e 執行文字編輯器來設定時程表,內空的文字編輯器是vi r 刪除目前的時程表 l列出目前的時程表。cron...
linux的crontab定時器
安裝服務的命令 yum install crontabs 服務操作說明 service crond start 啟動服務 service crond stop 關閉服務 service crond restart 重啟服務 service crond reload 重新載入配置 service cr...