ubuntu crontab 在時間段內隨機執行一次


crontab 在linux下做定時任務的命令,

1. 基本格式

* * * * * cmd

第一個表示:分鍾 1-59, 每分鍾用 */1

第二個表示:小時 023

第三個表示:日期1-31

第四個表示:月份1-12

第五個表示:星期幾0-6(0表示星期日)

幾個說明例子

*/1 * * * * /path/xx.sh  每分鍾執行一次腳本

0 3 * * 5-6 /path/xx.sh 每周五,周六早上3點執行一次腳本

可以使用在線的工具來模擬測試寫的crontab任務 

2. crontab 命令

NAME
     crontab -- maintain crontab files for individual users (V3)
 
SYNOPSIS
     crontab [-u user] file
     crontab [-u user] { -l | -r | -e }

基本用法:

crontab -h 查看幫助

crontab -l 查看當前定時任務列表

crontab -r 刪除當前用戶下的定時任務

crontab -e 進入編輯模式添加定時任務

 

crontab file 添加指定配置文件到定時任務(上面使用-e命令,會在/var/spool/cron/crontabs/user 下生成當前用戶名的文件)

可以此命令預先腳本生成配置文件然后添加到定時任務;

示例,測試使用的ubuntu server 14

echo "0 3 * * 1-5 /path/xx.sh" >/var/spool/cron/crontabs/user
chmod 777 /var/spool/cron/crontabs/user
crontab /var/spool/cron/crontabs/user
service crontab restart

3. 關於定時任務在某一個時間段隨機執行一次

crontab 只能設定定時任務,不能直接設定隨機(有知道直接的留言告訴我)

於是想到了一個 shell腳本隨機,然后生成一個隨機數,把這個隨機數設定在定時任務的時間上,這樣每次執行一次,隨機一次時間,並重新設定定時任務;任務執行完成刪除當前任務,隨機一數,並重新配置任務

這樣就達到了在某一個時間段隨執行一次任務的想法。

如下腳本邏輯

#!/bin/bash

#隨機數,表示隨機一個30以內的數
randNum=$(($RANDOM%30))

#user 表示當前登陸的用戶
#path /var/spool/cron/crontabs
#生成crontab 任務配置文件
#表示在 每周一到周五早上3點到3點30之間,隨機一個時間執行一次數據備份
echo $[randNum]" 3 * * 1-5 /path/backdb.sh" > /path/user

#設置可執行權限
sudo chmod 777 /path/user
#使用crontab 命令添加到定時任務
sudo crontab /path/user
#重啟服務
sudo service cron restart

  

參考:http://www.jb51.net/LINUXjishu/151805.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM