
私はLinuxに初めてアクセスし、スケジュールされたバックアップ用のCronTabを開発しています。;
andを使用して複数の順次操作を実行する方法を見つけましたが、&&
依存関係がシーケンスにどのような影響を与えるかはわかりません。
私のクローンの仕事は次のとおりです。
# Every day at 0:00 (reboot server and do the hourly backup procedure).
0 0 * * * sh shutdown.sh && sh backup.sh ; sh nas.sh ; sh ftp.sh ; sh startup.sh
私が望むのは、shutdown.shを実行し、成功するとシーケンスを続行し、失敗した場合はキャンセルすることです。ただスキップしてsh backup.sh
シーケンスを続けるかどうか心配です。
期待どおりに動作しますか?そうでなければ同様のことが可能ですかshutdown && (backup ; nas ; ftp ; startup)
?
答え1
動作するか失敗することが予想されるいくつかのダミーコマンドを使用してテストしてみてはいかがでしょうか。
$ ls foo && echo ok1 ; echo ok2
ls: cannot access foo: No such file or directory
ok2
$ ls foo && (echo ok1 ; echo ok2)
ls: cannot access foo: No such file or directory
したがって、あなたの直観は正しいようです。 2番目の構造が必要です。
〜のように提案渡すマックサイフ、一般テストの場合true
(または:
)およびを使用して、存在しないファイルをfalse
置き換えることができます。ls
したがって、
$ false && echo ok1 ; echo ok2
ok2
$ false && (echo ok1 ; echo ok2)
答え2
shutdown.shが実際にサーバーを再起動すると、他のコマンドは実行されませんか?答えは削除できますが、読むことができるので、ここにいくつかのヒントがあります。スクリプトを独自のフォルダーに入れてフルパスで呼び出すと、cron を別のフォルダーで実行できます。実行可能にしてshなしで直接呼び出すのも良いでしょう。 if-elseを使用してロジック全体を追加のスクリプトに入れるのも良いコーディングです。 shがシェルとして使用されるのが心配な場合は、shebangを使用してください。