![이 평균 bash 스크립트를 연중무휴 백그라운드에서 실행하려면 어떻게 해야 합니까?](https://linux55.com/image/171090/%EC%9D%B4%20%ED%8F%89%EA%B7%A0%20bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%97%B0%EC%A4%91%EB%AC%B4%ED%9C%B4%20%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C%EC%97%90%EC%84%9C%20%EC%8B%A4%ED%96%89%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
약간 반복적으로 들릴 수도 있지만 먼저 내 말을 들어보세요.
활성 stdin이 있고 때로는 시작 시 일부 입력이 필요한 쉘 스크립트를 실행하고 있습니다. 연중무휴 24시간 실행해야 하며 실패 시 명령을 입력하거나 메시지가 표시되면 "y"를 입력하여 다시 시작해야 합니다. 나는 두 가지 방법을 시도했습니다. nohup을 사용하고 Ctrl+Z를 클릭하고 bg를 입력하면 작업이 중지되고 실행되지 않는 것으로 표시됩니다. 실행할 때만 fg
활성화됩니다 . 이 문제를 해결하는 방법에 대한 단서가 있습니까?
PS 저도 해봤는데 scriptcommand &
역시 "중지됨"으로 끝났습니다.
시스템 서비스로 설정하는 것이 합리적입니까?
답변1
설명된 대로 입력에 의존하는 프로그램은 터미널 멀티플렉서 내에서 시작되어야 합니다 tmux
.https://en.wikipedia.org/wiki/Tmux) 또는 screen
(https://www.gnu.org/software/screen/). 터미널 창의 텍스트 기반 버전이라고 생각하세요.
screen my-program
그런 다음 사용할 my-program
수 있습니다.분리키 입력 조합을 사용하면 Ctrl가상 화면 콘솔 에서 시작한 셸로 돌아가지만 프로그램은 여전히 백그라운드에서 실행됩니다 A Ctrl. D그런 다음 를 screen -r
사용하여 가상 콘솔에 다시 연결할 수 있습니다.
화면(및 프로그램)은 프로그램이 종료되거나 서버가 다시 시작될 때까지 계속 실행됩니다.
tmux
매우 유사하지만 더 많은 옵션과 기능이 있고 다른 키보드 단축키를 사용합니다.
답변2
스크립트를 백그라운드에서 계속 실행하려면 nohup: 을 사용하세요 nohup scriptcommand &
. 이상적으로는 스크립트가 입력 메시지를 표시하지 않도록 선택할 수 있습니다. 어떤 이유로든 이것이 옵션이 아닌 경우,예상되는"y"를 입력하는 데 사용할 수 있습니다.
스크립트에 대한 systemd 서비스를 생성하면 시스템 재부팅 시 스크립트가 시작될 수 있습니다. Restart=always
서비스가 종료되거나 종료되면 systemd 파일을 사용하여 서비스를 다시 시작할 수도 있습니다.systemd 문서에 더 많은 정보가 있습니다.