데비안에서 시작 및 종료에 스크립트를 추가하는 방법은 무엇입니까?


12

제목은 거의 요약합니다.

서버 앱의 startup.sh 및 shutdown.sh를 데비안 OS의 시작 및 종료 순서에 어떻게 추가합니까?

답변:


15

데비안에서는 서비스 및 응용 프로그램 부팅 및 종료 스크립트를에 배치해야합니다 /etc/init.d/.

데비안은 /etc/init.d/skeleton특정 응용 프로그램에 맞게 취향에 맞게 수정할 수 있는 예제 스크립트 를 제공합니다 .

설치가 완료되면 다음을 수행하십시오.

# update-rc.d YOURAPP defaults

데비안이 /etc/rc?.d/심볼릭 링크를 추가하도록 합니다.

메뉴 또는 그래픽 인터페이스를 선호하는 경우 sysv-rc-conf또는 ksysv패키지를 살펴보십시오 .


4

exit 0 이라는 줄 앞에 /etc/rc.local 에서 스크립트를 호출 할 수 있습니다.

앱을 종료하려면 /etc/rc0.d에 스크립트를 넣는 것이 좋습니다 . 대문자 K 로 이름 을 지정한 다음 스크립트가 실행되는 순서를 지정하는 2 자리 숫자와 이름을 지정해야합니다. "stop"매개 변수와 함께 호출되지만 간단한 중지 스크립트의 경우이를 무시할 수 있습니다.


어쨌든 이미 /etc/rcX.d로 바이올린을 연주 할 때 왜 rc.local을 사용합니까?
울림

rc.local은 간단한 시작 작업에 적합한 장소입니다. 시작 / 중지 매개 변수 등을 처리 할 필요는 없습니다. 그러나 프로세스를 종료 할 수는 없습니다. rc0.d는 약간의 해킹입니다.
Brent

3

시작을 위해 이것을보십시오 .

종료하려면 링크를 작성하고 /etc/rcX.d 폴더 중 하나에 스크립트를 복사하십시오. 여기서 X는 실행하려는 실행 레벨입니다. 0은 내가 생각하는 데비안의 셧다운 런레벨입니다.


이것은 내가 필요한 종료 정보입니다. @squillman 감사합니다.
harperville

1

가장 쉬운 방법은 기존 스크립트를 수정하고 시스템에서 작동하며 소리에 사용하는 것입니다. :)

  • 시작, 수정 /etc/init.d/rc.local, 파일 끝에 sh를 추가하기 전에 : ( "화면"로그인 직전에 실행)
  • shutdown, modify /etc/init.d/halt, 파일의 시작 부분에 초기 주석 직후 sh를 추가하십시오 (이 스크립트 파일에 의해 호출되는 실제 종료 명령 전에 실행됩니다)
  • 재부팅, 종료와 동일하지만 /etc/init.d/reboot

1

데비안 제시 이후, 이전 init프로그램은 systemd!

직접 확인하십시오. 실행 : ls -l /sbin/init그리고 그것이 무엇을 가리키는 지보십시오. 요즘에는 새롭고 더 나은 초기화 프로그램 인 systemd( /sbin/init -> /lib/systemd/systemd)을 가리 킵니다 .


그래서 지금 선택된 CHOSEN과 다른 답변들이 있습니다!


* 여전히 System-V 도구를 사용하여 스크립트를 설치할 수는 있지만 일반적으로 말하는 것은 좋지 않습니다.

man systemd.service 말한다 : *

특정 이름으로 서비스가 요청되었지만 장치 구성 파일이없는 경우 systemd는 동일한 이름으로 SysV 초기화 스크립트를 찾고 해당 스크립트에서 서비스 장치를 동적으로 생성합니다. SysV와의 호환성에 유용합니다. 이 호환성은 매우 포괄적이지만 100 %는 아닙니다.


최신 데비안 시스템 (예 : Jessie, Stretch, Buster 등)

생각보다 쉽습니다. (-:

다음은 부팅 또는 종료 프로그램을 설치하는 새롭고 선호되는 방법입니다.

함께 systemd하면 먼저 만들려는 장치 파일을 . 단위 파일은 대부분 코드가 아닌 선언입니다.

그런 다음 systemctl명령을 사용하여 해당 장치 를 활성화 하거나 시작 합니다.

systemd예를 들어 중요한 프로그램이 충돌하거나 다른 방식으로 종료되면 자동으로 다시 시작하도록하는 등 많은 작업을 수행합니다. 또한 기본적으로 추가 작업없이 프로그램을 언제 어디서나 종료합니다.


systemd여기 에 대해 배우기 시작 하십시오.

데비안에서다른 곳 .


맨 페이지 시작 :

man systemd.unit -일반적으로 장치 파일 정보
man systemd.service -서비스 장치 파일 (예 : 데몬 및 단일 실행 프로그램) 정보

man systemctl -명령 행 사용자 인터페이스
man journalctl-systemd가 수행 한 작업의 로그보기

man systemd -init 프로그램 자체에 대하여


다양한 다른 유형의 단위 파일도 있습니다. 예 :

man systemd.target -그룹 및 공통 동기화 대상의 경우.

위의 기본 사항을 요약 한 후 man -k systemd다른 관련 매뉴얼 페이지를 찾아보십시오.



무엇을 하든지 데비안 에서는 다음 중 하나를 사용하지 마십시오 .

  • update-rc.d --System-V 스타일 init 스크립트 링크 설치 및 제거
  • sysv-rc-conf -init 스크립트 링크와 같은 SysV의 실행 수준 구성
  • runlevel -이전 및 현재 SysV 런레벨 인쇄
  • BUM- B OOT U P는 M의 anager - 그래픽 런레벨 편집기
  • systemadm- systemd 시스템 및 서비스 관리자에 대한 그래픽 프론트 엔드
    (BTW, 저자는 그것이 지금 너무 생겼 것을 이메일로 말했다.)


예 :

이 장치 파일은 부팅 할 때 NoIP.com 데몬을 시작하고 종료하면 종료됩니다.

이 데몬은 때때로, 내 DDNS (업데이트 내 현재의 IP 주소를 전송 D ynamic DNS ( D omain N의 화염의 S의 그것으로 여행 어디든지하여 내 컴퓨터에 내 도메인 이름을 가리키는 유지 erver)) 제공 업체의 데이터베이스를.

이 장치 파일은 내 시스템의이 설정 파일에 있습니다. /etc/systemd/system/noip2.service

다음은 단위 파일에있는 내용입니다.

#   Comments can only go at the beginning of the line!

[Unit]
Description=Start the NoIP IP update daemon.  This runs every 30 minutes and reports our current IP to NoIP.com to update Love2d.ddns.net.
Documentation=https://no-ip.com/
Documentation=file:///nobak/Installers/NoIP/noip-2.1.9-1/README.FIRST


[Service]
# 'forking' because process returns after starting daemon (traditional unix daemon).
Type=forking

# This program runs and returns, leaving the running daemon
ExecStart=/usr/local/bin/noip2

# Be in no hurry to start this.  Max nice is +19.
Nice=15

# If it dies for any reason, then restart it
Restart=always


[Install]
# Installs a hook to use this unit file when the system boots or shuts down
WantedBy=multi-user.target

단위 파일을 수동으로 실행 합니다 (예 : 테스트 용).

  • 시작 과 함께 $ sudo systemctl start noip2.
  • 다시 시작 과 함께 $ sudo systemctl restart noip2.
  • 중지 와 함께 $ sudo systemctl stop noip2.

시작하거나 종료 할 때 장치 파일을 자동으로 실행하도록 시스템구성 하십시오.

  • 로 사용시작하십시오$ sudo systemctl enable noip2 .
  • with 사용종료하십시오$ sudo systemctl disable noip2 .

로그보기

  • $ sudo journalctl -u noip2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.