저는 Linux를 처음 사용하고 애플리케이션 실행을 기대하고 있습니다(10초마다 LED 전환). 애플리케이션을 작성했고 제대로 작동하지만 이제 부팅 시 자동으로 시작하고 싶습니다.
문서여기시작 스크립트가 /etc/init.d
디렉토리에 복사되고 복사된 스크립트에 대한 심볼릭 링크가 디렉토리에 생성됨을 나타냅니다 rc.d
.
이 스크립트 파일의 확장자와 이름은 무엇이어야 합니까? 심볼릭 링크를 수동으로 추가할 수 있나요 rc.d
? 아니면 특별한 절차가 있나요?
구현 방법에 대한 제안이 있으십니까?
답변1
이것은 에서 발췌한 것입니다.http://www.debian-administration.org/articles/28이것은 귀하의 질문에 대답하는 것 같습니다.
참고: 아래 예제 스크립트에서 start)
" " 부분에 호출을 추가하면 프로그램이 실제로 시작됩니다. 시스템을 다시 시작하지 않고도 스크립트의 기능을 테스트할 수 있습니다. 전체 경로를 사용하여 스크립트를 호출하고 " start
" 또는 " stop
" 매개변수를 제공합니다.
시작:
데비안은 Sys-V와 유사한 init 시스템을 사용하여 시스템 실행 수준이 변경될 때(예: 시작 및 종료 시) 명령을 실행합니다.
컴퓨터가 시작될 때 시작될 새 서비스를 추가하려면 이 디렉토리에 필요한 스크립트를 추가해야 합니다 /etc/init.d/
. 이 디렉토리에는 수행할 수 있는 작업의 예를 제공하는 많은 스크립트가 이미 있습니다.
이것은 항상 실행되는 코드와 "시작" 또는 "중지"로 호출될 때 실행되는 코드라는 두 부분으로 나누어진 매우 간단한 스크립트입니다.
#! /bin/sh
# /etc/init.d/blah
#
# Some things that run always
touch /var/lock/blah
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting script blah "
echo "Could do more here"
;;
stop)
echo "Stopping script blah"
echo "Could do more here"
;;
*)
echo "Usage: /etc/init.d/blah {start|stop}"
exit 1
;;
esac
exit 0
파일을 올바른 위치에 저장한 후 "" 를 실행하여 실행 가능한지 확인하세요 chmod 755 /etc/init.d/blah
.
그런 다음 시스템이 종료되거나 시작될 때 스크립트가 실행되도록 적절한 기호 링크를 추가해야 합니다.
가장 쉬운 방법은 Debian 특정 명령을 사용하는 것입니다 update-rc.d
.
root@skx:~# update-rc.d blah defaults
Adding system startup for /etc/init.d/blah ...
/etc/rc0.d/K20blah -> ../init.d/blah
/etc/rc1.d/K20blah -> ../init.d/blah
/etc/rc6.d/K20blah -> ../init.d/blah
/etc/rc2.d/S20blah -> ../init.d/blah
/etc/rc3.d/S20blah -> ../init.d/blah
/etc/rc4.d/S20blah -> ../init.d/blah
/etc/rc5.d/S20blah -> ../init.d/blah
답변2
최신 버전의 Linux지원하다 systemd
(@AlexanderShcheblikin이 말했듯이). 데비안 전용 솔루션보다 더 많은 기능이 있고 이식성이 뛰어납니다.
읽어주세요 정말 훌륭한 가이드네요.
다음은 빠른 참조입니다.최저 한도에서필요:
- 실행 권한이 있는 스크립트(예
myscript.sh
: ) myservice.service
/etc/systemd/system
스크립트를 실행하는 명령이 포함된 ".service" 확장자와 644 권한을 가진 단위 파일(예:)입니다 . 예를 들어,
:
[Unit]
Description=Example systemd service.
[Service]
Type=simple
ExecStart=/bin/bash /path/to/myscript.sh
[Install]
WantedBy=multi-user.target
sudo systemctl enable myservice
부팅 시 시작되도록 하려면 명령을 실행하십시오 .
답변3
사용하기가 crontab
더 쉽습니다 .
crontab -e
사용자의 crontab을 편집하는 데 사용됩니다 .
끝에 다음 줄을 추가합니다.
@reboot <command>
예:
@reboot my_script.sh
@reboot python my_script.py arg1 arg2
마지막으로 crontab -l
스크립트가 목록에 추가되었는지 확인하세요.
고쳐 쓰다:
예를 들어, 이 라이너는 재부팅할 때마다 script.sh를 실행하는 작업을 추가합니다.
crontab -l > file; echo "@reboot /home/user/script.sh" >> file; crontab file; rm file;
이미지 출처: Gumby The Green 2019년 7월 16일 10:20
답변4
매개변수 관리 및 로깅을 통해 애플리케이션을 시작하는 효율적인 프로그램인 Supervisor를 사용하세요. 더 많은 정보를 알고 싶다면http://supervisord.org/running.html(설치 지침을 따르십시오.
conf 파일을 만듭니다 /etc/supervisor/conf.d/{PROGRAM_NAME}.conf
. 여기에 코드가 있습니다.
[program:{PROGRAM_NAME}]
command=/usr/bin/{PROGRAM_NAME} -arg1 -arg2
autostart=true
autorestart=true
stderr_logfile=/var/log/supervisor/{PROGRAM_NAME}.err.log
stdout_logfile=/var/log/supervisor/{PROGRAM_NAME}.out.log
그런 다음 cmd 줄에서 실행하십시오.
supervisorctl reload