저는 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
따라서 귀하의 직관이 올바른 것 같습니다. 두 번째 구조가 필요합니다.
~처럼제안통과맥사이프, 일반 테스트의 경우 true
(또는 :
) 및 을 사용하여 존재하지 않는 파일을 false
바꿀 수 있습니다. ls
그러므로,
$ false && echo ok1 ; echo ok2
ok2
$ false && (echo ok1 ; echo ok2)
답변2
shutdown.sh가 실제로 서버를 다시 시작하면 다른 명령이 실행되지 않을 것 같나요? 답변은 삭제될 수 있지만 읽을 수 있으므로 여기에 몇 가지 팁이 있습니다. 스크립트를 자체 폴더에 넣고 전체 경로로 호출하면 cron이 다른 폴더에서 실행될 수 있습니다. 실행 가능하게 만들고 sh 없이 직접 호출하는 것도 좋을 것입니다. if-else를 사용하여 전체 논리를 추가 스크립트에 넣는 것도 좋은 코딩입니다. sh가 쉘로 사용되는 것이 걱정된다면 shebang을 사용하십시오.