次のタスクを実行するためにシェルスクリプトを作成するように求められました。
次のクロエントリを更新
\*/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
強制成功マッチを使ってマッチします。完全なライン、行の一部ではなく、最初から最後まで。
また関連: