bash 스크립트를 백그라운드에서 실행하는 방법은 무엇입니까?

bash 스크립트를 백그라운드에서 실행하는 방법은 무엇입니까?

저는 bash 스크립팅을 배우고 있으며 배터리가 부족하거나 충전되었을 때 알림을 보내는 짧은 프로젝트를 만들었습니다(알림 보내기 사용).

터미널을 표시하지 않고 이 스크립트를 실행하는 방법에 대한 조언을 듣고 싶습니다. 내 생각은 시스템을 부팅할 때 실행할 "시작 응용 프로그램" 소프트웨어에 추가하는 것이지만 터미널을 표시하고 싶지 않고 백그라운드에서 실행하기만 하면 됩니다.

답변1

시스템 서비스를 설정할 수 있습니다.

다음과 같이 즐겨 사용하는 편집기(nano, vim 등)를 사용하여 파일(예: sudo)을 만들 수 있습니다.

sudo nano /etc/systemd/system/myexecuteable.service

최소한 다음 내용을 포함해야 합니다.

[Unit]
Description=start my executable after multi-user target

[Service]
Type=simple
ExecStart=/path/to/my/executable

[Install]
WantedBy=multi-user.target

재부팅 후 서비스가 시작되도록 하려면 다음을 실행합니다. sudo systemctl enable myexecutable.service

Bash에 일종의 루프가 있으면 서비스가 계속 실행됩니다. 실행 파일에 출력이 있는 경우(bash 파일에서 "로거" 사용) 언제든지 다음을 사용할 수 있습니다.journalctl -u myexecutable.service

답변2

스크립트는 다음과 같이 명령줄에서 백그라운드로 실행될 수 있습니다.

$ ./myscript.sh &

즉, &명령에 추가합니다.

"터미널을 표시하지 않고" 이 스크립트를 실행하고 싶다고 말씀하셨습니다. 나는 이를 수행하는 두 가지 방법이 있다고 생각합니다.

  1. 서비스 만들기 systemd- 예:이 답변

  2. cron시스템이 시작될 때 스크립트를 작업으로 시작합니다.

작업을 설정하려면 cron새 항목을 만들어야 합니다 crontab.

이렇게 하려면 터미널을 열고 다음 명령을 입력하십시오.

$ crontab -e

그러면 crontab편집기에서 파일이 열립니다( nano편집자에게 좋은 선택). 편집기에 있는 동안 파일 맨 아래에 다음 줄을 추가합니다.

@reboot /home/user/myscript.sh & >> /home/user/myscript.log 2>&1 

어디에/home/user/myscript.sh전체 경로스크립트 파일에. 스크립트의 모든 출력은리디렉션에 있는 파일로 /home/user/myscript.log. 오류 메시지가 있는지 이 로그 파일을 확인하십시오.

^ o사용하는 경우 파일을 저장한 nano다음( ) 편집기를 종료합니다( ^ x).

기억해야 할 사항:

  1. myscript.sh그것이 맞는지 확인하십시오실행 가능 파일.

  2. 에서 명령을 사용하는 경우 myscript.sh시스템이 해당 명령을 찾을 수 있는 위치를 알고 있는지 확인하십시오.전체 경로명령을 실행하거나 스크립트에서 PATH를 선언하세요.

더 궁금한 점이 있으시면 알려주세요(댓글 남겨주세요). 최선을 다해 도와드리겠습니다.

관련 정보