시작 시 iMac에서 bash 쉘 스크립트 실행

시작 시 iMac에서 bash 쉘 스크립트 실행

/var/tmp/test.sh내 iMac에서 무한 루프로 실행되는 bash 쉘 스크립트가 있습니다 while.

이 스크립트를 연중무휴 24시간 실행하고 싶습니다. iMac이 다시 시작되더라도 스크립트가 자동으로 실행되어야 합니다.

연중무휴 24시간 백그라운드 프로세스로 실행되는 쉘 스크립트를 실행하고 싶습니다.

빠르고 쉬운 해결책을 제안해 주실 수 있나요? 어떻게 해야 합니까?

답변1

Apple은 아직 이를 종료하지 않았 cron으므로 적어도 두 가지 옵션이 있다고 생각합니다: cronLaunchControl.

간단히:

  • cron"구식" 명령줄 Unix입니다. crontab일정을 정의하는 데 사용됩니다 . 무료이며 오픈 소스이며 널리 사용됩니다. 제한 사항을 이해한다면 사용하기 쉽습니다.

  • 애플 네이티브 launchdlaunchctl보다 강력한 기능이 있지만 cron귀하의 질문에 따르면 이러한 추가 기능은 불필요한 것 같습니다. 하지만 여전히 관심이 있다면 알아야 할 몇 가지 사항이 있습니다. 가장 먼저 알아야 할 것은LaunchControl;이 단어를 사용하셨습니다단순한귀하의 질문에 따르면 이것은 launchctl... LaunchControl강력한 GUI 스케줄링 메커니즘을 제공하는 타사 상용(무료가 아닌) 응용 프로그램입니다 launchd.launchctl 해야한다.

해결책 cron:

첫 번째 단계는 root(관리자) 권한이 필요한지 여부에 따라 다릅니다. 언급하지 않았으므로 스크립트에는 sh사용자 권한만 필요하다고 가정합니다.

  1. TerminaliMac의 앱 에서 :
% crontab -e

편집자 로 선택하라는 메시지가 표시될 수 있습니다 crontab. 어느 것을 선택할지 확실하지 않은 경우 nano편집자로 선택하세요.

crontab선택한 편집기에서 유언장이 열립니다 .

파일 맨 아래에 다음 줄을 추가합니다 crontab.

@reboot /bin/sleep 10; /var/tmp/test.sh >> /Users/<YOURUSERID>/test_sh_log.txt 2>&1 

그것을 파괴:

  • @reboot: cron시스템이 부팅할 때 다음 명령을 실행하도록 지시합니다.

  • /bin/sleep 10cron다음 명령을 실행하기 전에 10초 동안 절전 모드로 전환하도록 지시합니다 . 이는 필요하지 않을 수도 있지만 네트워크 서비스를 사용하거나 파일 시스템을 마운트하는 경우 sleep시스템은 스크립트가 이를 호출하기 전에 이를 실행할 시간을 갖게 됩니다.

  • /var/tmp/test.sh는 실행 권한이 올바르게 설정된 스크립트입니다.

  • >> /Users/<YOURUSERID>/test_sh_log.txt 2>&1 리디렉션편리한 로그 파일에 대한 모든 출력 도 & (오류 메시지)를 2>&1받습니다 . 이는 문제 해결에 도움이 되거나 쉘 스크립트가 실행 중에 무엇이든 출력하도록 하려는 경우에 유용합니다.stdoutstderr

rebootiMac이 있으면 test.sh가 실행되기 시작해야 합니다 .

마침내:

사과"보안 조치"Apple을 만족시키기 위해 추가 조치를 취해야 할 수도 있다는 점은 끊임없이 변화하는 것 같습니다. 이러한 단계의 필요성은 여기에서 다루기에는 너무 많은 요소에 따라 달라집니다. 문제가 있는 경우 여기에 댓글을 남겨주시면 응답해 결정을 내리도록 하겠습니다. .

관련 정보