日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux usb 升级脚本,linux – 使用bash脚本更新CRON

發(fā)布時(shí)間:2023/12/19 linux 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux usb 升级脚本,linux – 使用bash脚本更新CRON 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

誰(shuí)能在這里看到我的語(yǔ)法錯(cuò)誤?嘗試編輯/更新cron作業(yè),但文件未更新.

crontab -l | sed 's%*/5 * * * * cd /home/administrator/anm-1.5.0 && ./anm.sh%*/10 * * * * cd /home/administrator/anm-1.5.0 && ./anm.sh%' | crontab -

*更新*

所以我仍然遇到麻煩.最終我試圖從配置文件$FREQ(分鐘)中提取一個(gè)值來(lái)運(yùn)行該作業(yè).該腳本將首先檢查配置中的值是否與crontab中當(dāng)前的值不同.如果值不同,它將使用新值更新crontab. crontab(初始安裝和更新)還從變量中提取運(yùn)行目錄和腳本名稱(chēng).例:

DIR=`pwd`

SCRIPT=`basename $0`

CRONTMP=`crontab -l | grep anm.sh`

crontab -l | sed 's%'$CTMP'%*/'$FREQ' * * * * cd '$DIR' && ./'$SCRIPT'%' | crontab -

沿著那條線的東西.顯然這是缺少一些東西,但這應(yīng)該給你一般的想法.

謝謝您的幫助!

*更新*

好的,事情正在發(fā)生,但我仍然有一個(gè)小問(wèn)題.我想我已經(jīng)制定了大部分邏輯.這是腳本的完整(相關(guān))部分,因此您可以準(zhǔn)確地了解我要完成的任務(wù).

請(qǐng)記住:$SCRIPT和$DIR是在函數(shù)外定義的,只等于腳本名稱(chēng)(例如anm.sh)和當(dāng)前工作目錄.我接受了你的建議并更新了我的所有代碼.我現(xiàn)在使用SCRIPT = $(basename $0).謝謝

function CRON {

if [ "`crontab -l | grep $SCRIPT`" \> " " ]; then

CTMP=$(crontab -l | grep $SCRIPT)

if [ "$CTMP" = "*/$FREQ * * * * cd $DIR && ./$SCRIPT" ]; then

echo "$GREEN No modifications detected $RESET"

else

crontab -l | "sed s%$CTMP%*/$FREQ * * * * cd $DIR && ./$SCRIPT%" | crontab -

fi

else

echo "$YELLOW CRON not detected - Installing defaults $RESET"

(crontab -l ; echo "*/$FREQ * * * * cd $DIR && ./$SCRIPT") | crontab -

fi

}

本質(zhì)上,當(dāng)函數(shù)運(yùn)行時(shí),它首先檢查是否安裝了cron作業(yè)(這可能是腳本第一次運(yùn)行).如果它沒(méi)有檢測(cè)到任何內(nèi)容,它會(huì)將cron作業(yè)附加到crontab文件.到目前為止,這很有用.接下來(lái),如果函數(shù)確實(shí)檢測(cè)到已安裝了cron作業(yè),則會(huì)將其與配置文件中設(shè)置的頻率(以分鐘為單位)進(jìn)行比較.如果它們相同,則不對(duì)配置文件進(jìn)行任何修改,腳本繼續(xù)運(yùn)行.最后,如果值確實(shí)不同,則它會(huì)嘗試更新crontab文件中的相應(yīng)行以反映在配置文件中所做的更改.最后一部分失敗了.目前它只是將crontab文件完全覆蓋為空白.

*更新*

看起來(lái)以下行存在重大問(wèn)題.這不能正確地從crontab中拉出所需的行并將其存儲(chǔ)到變量CTMP中:

CTMP=$(crontab -l | grep $SCRIPT)

當(dāng)我回應(yīng)CTMP時(shí),我得到了一堆意想不到的結(jié)果.顯然我在這里使用grep不正確.

好的,這個(gè)問(wèn)題已經(jīng)解決.變量存儲(chǔ)正確,我只是錯(cuò)誤地回應(yīng)它.

*更新06/24/13 5:08 am *

最后一個(gè)問(wèn)題似乎是sed線.這是我正在研究的錯(cuò)誤消息.

sed s%*/12 * * * * cd /home/administrator/anm-1.5.0 && ./anm.sh%*/10 * * * * cd /home/administrator/anm-1.5.0 && ./anm.sh%: No such file or directory

看起來(lái)它正在嘗試更換線路,但失敗了.

*更新06/24/13 5:45 am *

所以上面的錯(cuò)誤信息是由我自己的愚蠢造成的.我把sed包括在引號(hào)內(nèi).我已經(jīng)從引號(hào)中刪除了命令,但問(wèn)題仍然存在.我試過(guò)單引號(hào),雙引號(hào),轉(zhuǎn)義*和.沒(méi)有運(yùn)氣. cron文件仍未更新.這是當(dāng)前的代碼:

function CRON {

if [ "`crontab -l | grep $SCRIPT`" \> " " ]; then

CTMP="$(set -f; crontab -l | grep $SCRIPT)"

if [ "$CTMP" = "*/$FREQ * * * * cd $DIR && ./$SCRIPT" ]; then

echo "$GREEN No modifications detected $RESET"

else

crontab -l | sed "s%$CTMP%*/$FREQ * * * * cd $DIR && ./$SCRIPT%" | crontab -

fi

else

echo "$YELLOW CRON not detected - Installing defaults $RESET"

(crontab -l ; echo "*/$FREQ * * * * cd $DIR && ./$SCRIPT") | crontab -

fi

}

*更新06/24/13 6:05 am *

也許問(wèn)題是我沒(méi)有逃避一切.也就是說(shuō),sed表達(dá)式中的變量一旦展開(kāi),就會(huì)有需要轉(zhuǎn)義的字符?這可能是問(wèn)題嗎?如果是這樣,我不確定如何解決這個(gè)問(wèn)題.請(qǐng)幫忙.

* 解決了 *

在將它們傳遞給sed之前,我確實(shí)必須逃避變量.這是代碼:

CTMPESC=$(sed 's/[\*\.&]/\\&/g' <<

總結(jié)

以上是生活随笔為你收集整理的linux usb 升级脚本,linux – 使用bash脚本更新CRON的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。