이 비열한 bash 스크립트를 연중무휴 백그라운드에서 어떻게 계속 실행합니까?

이 비열한 bash 스크립트를 연중무휴 백그라운드에서 어떻게 계속 실행합니까?

중복된 것처럼 들릴 수도 있지만 먼저 내 말을 들어보세요.

표준 입력이 활성화되어 있고 때로는 시작 시 일부 입력이 필요한 쉘 스크립트를 실행합니다. 연중무휴 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 문서에 더 많은 정보가 있습니다.

관련 정보