답변:
스크립트를 적절한 사용자 cron
테이블 (예 : crontab )에 스케쥴로 넣으십시오 @reboot
.
사용자는로 cron
표를 편집 할 수 있습니다 crontab -e
.
/path/to/script.sh
시작시 실행되는 예 :
@reboot /path/to/script.sh
루트로 실행해야하는 경우에는 사용하지 마십시오 @reboot sudo /path/to/script.sh
. 루트의 crontab을 편집
하는 sudo crontab -eu root
데 사용 합니다.
crontab (1), cron (8), crontab (8) 도 참조하십시오.
Ubuntu 15.04 이상에서는 기본적으로 systemd
시작 서비스 및 절차를 자동화하는 프로그램 인 일종의 프로그램을 사용합니다. 약간의 노력만으로 직접 만들 수 있고 시작 서비스 목록에 추가 할 수 있습니다.
기본 시스템 서비스
이것은 .service
파이썬 GUI 서버를 시작하는 데 사용할 수 있는 베어 파일입니다 (쉘 스크립트 일 수는 있지만 중요하지 않습니다).
[Unit]
Description=Python GUI Server
[Service]
ExecStart=/home/pi/software/GUI_POE.py &
[Install]
WantedBy=multi-user.target
Description
옵션은 서비스 또는 무엇을 설명 임의의 문자열입니다.
이 ExecStart
옵션은 실행할 명령을 지정합니다. 여기서는 실행 가능한 파이썬 스크립트의 경로를 제공하고 &
토큰을 사용 하여 백그라운드에서 실행합니다.
이 WantedBy
옵션은 대상이이 서비스를 사용하려는 대상에 따라 우선 순위를 지정합니다. 매우 특정한 시간에 서비스를 실행할 필요가없는 경우로 설정하십시오 multi-user.target
.
기본 절차
시작할 때 nano
또는 원하는 편집기를 사용하여 실행할 스크립트를 작성하십시오 . #!/bin/bash
bash 스크립트 의 경우 파일 맨 위에 적절한 shebang을 포함시키고로 실행 권한을 부여하십시오 chmod
.
my_service.service라는 파일로 서비스를 작성하고를 사용하여 적절한 directoy에 복사하십시오 cp my_service.service /lib/systemd/system/
.
서비스를 시작하십시오 : sudo systemctl start my_service.service
. 서비스 실행을 지시 한 모든 스크립트가 시작됩니다. start 대신 "stop"을 사용하는 동일한 명령이 꺼집니다.
시작 프로세스에 서비스를 추가하십시오 sudo systemctl enable my_service.service
.. 제거하려면 동일한 명령에서 "enable"을 "disable"로 바꾸십시오.
그리고 그게 다야! 시스템 서비스에서는 기본적으로 스크립트가 루트 권한으로 자동 실행됩니다.
나의 간단한 예 (전체)
참고로 다음은 Dash를 사용하여 간단한 Python GUI 서버를 시작하는 간단한 시스템 서비스입니다.
[Unit]
Description=Python GUI Server
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/home/pi/software
ExecStart=/home/pi/software/GUI_POE.py &
Restart=always
RestartSec=15s
KillMode=process
TimeoutSec=infinity
User=pi
Group=pi
[Install]
WantedBy=multi-user.target
이 예제 서비스는 Python3 스크립트를 사용하지만 수식은 쉘 스크립트와 동일합니다.
추가 읽기에서 찾을 수 있습니다 이 우수한 튜토리얼 디지털 오션에 의해, 그리고 이 AskUbuntu 스레드 나 systemd 배울 도움이 훌륭한 대답과 함께. 도움이 되었기를 바랍니다!