저는 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 &
즉, &
명령에 추가합니다.
"터미널을 표시하지 않고" 이 스크립트를 실행하고 싶다고 말씀하셨습니다. 나는 이를 수행하는 두 가지 방법이 있다고 생각합니다.
서비스 만들기
systemd
- 예:이 답변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
).
기억해야 할 사항:
myscript.sh
그것이 맞는지 확인하십시오실행 가능 파일.에서 명령을 사용하는 경우
myscript.sh
시스템이 해당 명령을 찾을 수 있는 위치를 알고 있는지 확인하십시오.전체 경로명령을 실행하거나 스크립트에서 PATH를 선언하세요.
더 궁금한 점이 있으시면 알려주세요(댓글 남겨주세요). 최선을 다해 도와드리겠습니다.