crontabエントリ用のシェルスクリプト

crontabエントリ用のシェルスクリプト

次のタスクを実行するためにシェルスクリプトを作成するように求められました。

次のクロエントリを更新

\*/15 * * * * /bin/sh /opt/myscript/myscript.sh > /tmp/myscript.check.out 

到着

\*/30 2,4,6 * * * /bin/sh /opt/myscript/myscript2.sh > /tmp/myscript2.check.out 

編集する前に cronentry をバックアップしてください。

次のスクリプトを試してみましたが、機能しているか修正する必要があるかを確認する必要があります。助けてください!

cronentryのシェルスクリプトの更新(編集前のバックアップ)

#!/bin/sh
crontab -l > my_crontab.backup

crontab -l | grep -v "*/30 2,4,6 * * * /bin/sh /opt/myscript/myscript2.sh > /tmp/myscript2.check.out" >*/15 * * * * /bin/sh /opt/myscript/myscript.sh > /tmp/myscript.check.out

echo "*/30 2,4,6 * * * /bin/sh /opt/myscript/myscript2.sh > /tmp/myscript2.check.out" >>*/15 * * * * /bin/sh /opt/myscript/myscript.sh > /tmp/myscript.check.out

crontab */15 * * * * /bin/sh /opt/myscript/myscript.sh > /tmp/myscript.check.out

ベストアンサー1

特定のcrontabエントリを削除して別のエントリに置き換えようとしています。

次のコマンドを使用して、既存のcrontabスケジュールをテキストファイルにダンプできます。

crontab -l >crontab-old.txt

既存のcrontabエントリが次のようになることがわかっているとします。正確に

*/15 * * * * /bin/sh /opt/myscript/myscript.sh > /tmp/myscript.check.out 

(追加スペースなし)以下をcrontab-old.txt使用してファイルからフィルタリングできます。

grep -v -x -F '*/15 * * * * /bin/sh /opt/myscript/myscript.sh > /tmp/myscript.check.out' crontab-old.txt >crontab-new.txt

crontab-new.txtファイルに新しい計画を追加するには、次のようにします。

cat <<'END_ENTRY' >>crontab-new.txt
*/30 2,4,6 * * * /bin/sh /opt/myscript/myscript2.sh > /tmp/myscript2.check.out 
END_ENTRY

最後に、次のコードを使用して新しいスケジュールをロードします。

crontab crontab-new.txt

これで、crontab-old.txt以前の計画とcrontab-new.txt新しい計画があり、新しい計画がロードされました。

当然あなたはそうしなければならないバラよりこのタスクを手動で実行したりスクリプトを実行したりする場合は、上記の各手順の間でファイルを確認して、正しく編集されていることを確認してください。

スクリプトでは、次のように見えます。

#!/bin/sh

crontab -l >crontab-old.txt

grep -v -x -F '*/15 * * * * /bin/sh /opt/myscript/myscript.sh > /tmp/myscript.check.out' crontab-old.txt >crontab-new.txt

cat <<'END_ENTRY' >>crontab-new.txt
*/30 2,4,6 * * * /bin/sh /opt/myscript/myscript2.sh > /tmp/myscript2.check.out 
END_ENTRY

crontab crontab-new.txt

このコマンドは、与えられたパターンを一致させるgrepために使用されます。-F文字列として非正規表現パターンには*正規表現の特殊文字が含まれているため、-Fこれらの文字を特別に扱うことなく文字列を一致させることができます。私も-x強制成功マッチを使ってマッチします。完全なライン、行の一部ではなく、最初から最後まで。

また関連:

おすすめ記事