配布スクリプトがあります。ユーザーに何かを追加する必要がありますcrontab
(ログをクリーンアップするスクリプトをトリガーします)。XXX(1)ただし、これは初期展開中または更新が必要な場合にのみ実行できます。
(私は走っxxx.py deploy env
たりxxx.py update env
。)
だから私はこうする必要があります:
私のcronJobがすでに存在していることを確認してください。
私のcronJobがまだ存在しない場合は、送信してください。コマンドパラメータの1つが異なる場合は、
私のcronJobを更新してください。
crontab
ファイルを使用しcrontab -e
たり手動で編集したりすることなく、crontab
アイテムを追加/確認/削除(ダウンロード、再作成、再アップロード)する方法がわかりません。
PS:これはユーザー固有のcronjobです。 "webadmin"はこれを行いますが、sudo
これには使用しないでください。
ベストアンサー1
これまで私の最高のアイデア
まず、コンテンツが必要なものと一致することを確認し、そうでない場合は更新してください。
if [[ $(crontab -l | egrep -v "^(#|$)" | grep -q 'some_command'; echo $?) == 1 ]]
then
set -f
echo $(crontab -l ; echo '* 1 * * * some_command') | crontab -
set +f
fi
しかし、これはクローン操作を中心に別々のスクリプトを書く必要があるほど複雑になります。
他のアイデア
stdinを介してcrontabに文字列を送信できます(これにより、古いcrontabエントリが消去されます)。
echo "* 1 * * * some_command" | crontab -
SSH経由でも正常に動作します。
echo "* 1 * * * some_command" | ssh user@host "crontab -"
ファイルに追加するには、次のものを使用できます。
# on the machine itself
echo "$(echo '* 1 * * * some_command' ; crontab -l 2>&1)" | crontab -
# via ssh
echo "$(echo '* 1 * * * some_command' ; ssh user@host crontab -l 2>&1)" | ssh user@host "crontab -"