시작 시 애플리케이션을 자동으로 시작하는 방법

시작 시 애플리케이션을 자동으로 시작하는 방법

저는 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이 말했듯이). 데비안 전용 솔루션보다 더 많은 기능이 있고 이식성이 뛰어납니다.

읽어주세요 정말 훌륭한 가이드네요.

다음은 빠른 참조입니다.최저 한도에서필요:

  1. 실행 권한이 있는 스크립트(예 myscript.sh: )
  2. 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
  1. 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

https://stackoverflow.com/users/9364000/gumby-the-green

답변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

관련 정보