여러 명령의 실행 순서

여러 명령의 실행 순서

저는 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을 사용하십시오.

관련 정보