顯示具有 crontab 標籤的文章。 顯示所有文章
顯示具有 crontab 標籤的文章。 顯示所有文章

2022年11月14日 星期一

macOS 開發筆記 - crontab 與 script 的 Operation not permitted 問題 @ macOS 13



很少會在 macOS 內埋 crontabe 做事,最近想嘗試定期做一些 log 檔案,才發現一直踩到 Operation not permitted 問題。

追了一下,主因是權限問題,只需在 設定 -> 隱私權與安全性 -> 完全取用磁碟,只需在這邊把 crontab: /usr/sbin/cron 添加進去即可。添加方式:
  1. 用 terminal 開啟 /usr/sbin 目錄:% open /usr/sbin
  2. 把 cron 拖拉進去 "設定 -> 隱私權與安全性 -> 完全取用磁碟" ,並改成 On 即可(拖進去會自動轉On)
只是,這也是另一個資安問題 XD 猜想 macOS 做更嚴謹的權限管控,也是想避開 macOS 不幸被惡意程式植入時,埋了一堆定期跑的程式。

2016年2月18日 星期四

[Linux] 使用 find -ctime 刪除指定時間區間的檔案 @ Ubuntu 14.04

find -ctime 指令非常方便,例如找時間大於七天的資料:

$ find /path -ctime +7

所以要刪除七天以上的資料,的確可以靠上述完成,但如果有備份程式掛了沒產出時,豈不是會刪光資料?所以又有一招可以找最新七天內的資料:

$ find /path -ctime -7

因此,我就把自動清空指令改成:先判斷備份程式是否正常,正常的話,則刪除某段時期的資料。

連續動作:

$ sh -c  'files=`find /data/jenkins-backup -maxdepth 1 -ctime -7 | wc -l` && test $files -gt 20 && find /data/jenkins-backup -ctime +7 -delete '

而這段意思就是在處理 Jenkins 自動備份機制,因為一天會備份多次,所以用 20 個當作七天內至少要有 20 筆備份資料,當備份資料有正常產出時,在刪除大於七天內的資料。而採用 sh -c 的方式是可以埋在 crontab 中來做事,包含指定 sudo -u user 來限制不小心砍錯資料。

2014年5月19日 星期一

[Linux] 透過 AWK 和 HOSTNAME 資訊執行 Sleep 指令 @ Ubuntu 14.04

最近開始埋一些 crontab 任務到各台機器,但是,有些指令是對 DB 動作的,而通常擺在 crontab 的 DB 指令是為了建出一些 snapshot 且多為 slow query 的,那如果多台機器全部都同時發送 DB query 時,反而又累到了 DB 系統。

這時候想到的方式就是搭配 sleep 的方式,並透過每檯機器的資訊避開一同發送要求,用法就想到 hostname 了:

$ awk '{s=0;for(i=1;i<=length($0);i++){c=sprintf("%c",substr($0,i,1));s+=c ;}; system( "sleep " s); }' /etc/hostname 

最後,在 crontab 上,就可以在待執行指令前面,先安插上述的 script 來跑,如:
  # m h dom mon dow command
*/10 * * * * sh /path/sleep.sh ; /path/job_exec