是否有辦法通過使用awk/sed來移除/洗掉由Puppet創建的cron作業?我知道我們可以通過crontab -e命令手動編輯,但這是一個腳本的問題。
例如root cron是/var/spool/cron/crontabs/root中的一個檔案。我想洗掉下面的行。
# Puppet Name: cron1
[email protected],admin@localhost
* * * * /bin/true
# Puppet Name: cron test
PATH="/usr/local/bin"/span>
[email protected]
2-57 * * * * echo "test"/span>
# Puppet Name: thank you
* * * * echo "Thank you!"
....
Puppet cron的模式:
- 以
# Puppet Name:開頭。
- 它可以包含Cron環境或不包含。這可以是多行
如果有人知道如何做,請幫助。 謝謝你!
uj5u.com熱心網友回復:
建議你使用Puppet來洗掉由Puppet創建的crontab條目。
如果你必須通過手動的shell命令來做,那么你可以通過這個sed命令來做:
sed -nie '/^# Puppet Name:/!{p;d};:p;n;/^[ ]*(|#.*|[A-Za-z_][A-Za-z_0-9]*[ ]*=.*)$/ b p'
/var/spool/cron/crontabs/root
解釋
該命令假定要洗掉的每一組行以 "Puppet Name: "注釋開始,并繼續到并包括下一行,這一行既不是空白(但有空白),也不是注釋,也不是環境變數賦值。 它在原地修改指定的檔案(-i),禁用自動列印(-n)。 運算式(-e)做了以下作業:
- 如果讀取的下一行不是以文本"
# Puppet Name:"開始,則列印該行并開始下一個回圈({p;d})。 否則, - 運算式中的這一點被標記為 "p"(
:p); - 靜靜地(因為自動列印被禁用)讀取下一行的輸入(
n); - 如果當前行是空白的,是一個注釋,或者是一個環境設定,那么分支到標簽p (
b p); - 否則就到達運算式的末端。靜靜地(因為自動列印功能被禁用)開始下一個回圈。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/309915.html
標籤:
