利用 linux 定時任務,重啟服務,切割日誌

2021-10-23 07:16:41 字數 1575 閱讀 6336

1. 編輯定時任務

# 編輯定時任務

crontab -e

# 檢視當前使用者的定時任務

crontab -l

2.在開啟的檔案中新增你的任務

# 內容 就是 每1分鐘 執行一次 redis_cron.sh 日誌輸出到 redis.log 中

*/1 * * * * /bin/bash -x /root/redis_cron.sh >> /root/redis.log

3.指令碼 redis_cron.sh

#!/bin/bash

starttime=

$(date +%y-%m-%d\ %h:%m:%s)

echo

"$starttime 定時任務開始:"

count=

`ps -ef |

grep redis |

grep -v grep

|wc -l`

echo

$count

;# 如果redis 程序 小於等於 3 ,就啟動redis,因為我的 redis_cron.sh,redis.log,grep redis 佔了3個程序if[

$count -le 3 ]

then

echo

"啟動redis。。。"

docker start redis

fi

4.啟動定時任務

systemctl start crond.service
因為,這個指令碼切割實際上的io操作是非常多的,容易引起io阻塞,推薦日誌框架

1.切割指令碼 log_rotate.sh

#!/bin/sh

function rotate()$

.$(date -d "yesterday" +"%y-%m-%d"

)>

$# 下面是刪除 7天之前的日誌檔案,看自己需求

# rm -f $.$(date -d "7 days ago" +"%y-%m-%d")

}for i in

$*do

rotate $i

done

2.手動切割

find ./ -size +0 -name '*.log'

|xargs ./log_rotate.sh

3.定時任務切割

# 每天 凌晨 00:00 執行 log_rotate.sh  引數:find /root/ -size +0 -name '*.log'匹配的檔案

0 0 * * * find /root/ -size +0 -name '*.log'

|xargs /root/log_rotate.sh

關於定時任務重置序列

前兩天擼 寫了pdf套打,今天發現還有乙個東西沒有實現就是需要重置序列,在每年的1月1日0點0時0分重置序列。雖然超級簡單,但是依然感覺好多坑,不知道是不是oracle版本問題導致的。首先我找了萬能的度娘,結果度娘給出了好幾個答案,首先是重置序列。很多大神給出了答案,就是反向生成,然後再設定成1的。...

linux定時任務 at定時任務

at命令是一次性定時計畫任務,at的守護程序atd會以後臺模式執行,檢查作業佇列來執行作業。atd守護程序會檢查系統上的乙個特殊目錄來獲取at命令的提交的作業,預設情況下,atd守護程序每60秒檢查一次目錄,有作業時,會檢查作業執行時間,如果時間與當前時間匹配,則執行此作業。注意 at命令是一次性定...

防止 crontab 定時任務重複執行

前言 crontab 定時任務很好使用,它的定時是很強硬的,直接跟系統時間打交道,不會去管程式本身執行是否需要時間。舉個栗子 乙個指令碼執行需要 1 小時,使用 crontab 每隔2小時執行一次,一般情況下下次執行指令碼時上次指令碼執行肯定是跑完了的 但是,假如,程式卡住了呢?下次執行時上次指令碼...