it-swarm-ko.tech

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

제목은 거의 요약합니다.

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

12
Amir Arad

데비안에서는 서비스 및 응용 프로그램 부팅 및 종료 스크립트를 /etc/init.d/.

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

설치가 완료되면 다음을 호출하십시오.

# update-rc.d YOURAPP defaults

데비안이 /etc/rc?.d/ 심볼릭 링크가 있습니다.

메뉴 나 그래픽 인터페이스를 선호하는 경우 sysv-rc-conf 또는 ksysv 패키지.

15
MikeyB

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

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

4
Brent

시작하려면 this 를보십시오.

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

3
squillman

데비안 제시 이후로, init 프로그램은 systemd로 대체되었습니다!

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


선택된 다른 답변은 이제 만료되었습니다 !!!


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

man systemd.service의 말 : *

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


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

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

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

systemd을 사용하면 먼저 nit file을 만들고 싶습니다. 단위 파일은 대부분 코드가 아닌 선언입니다.

그런 다음 systemctl 명령을 사용하여 enable 또는 start ​​해당 단위를 사용합니다.

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


여기서 systemd에 대해 알아보기 :

데비안에서다른 곳etcetc .


시작하는 맨 페이지 :

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 스타일 초기화 스크립트 링크 설치 및 제거
  • sysv-rc-conf-init 스크립트 링크와 같은 SysV의 실행 수준 구성
  • runlevel-이전 및 현재 SysV 런레벨 인쇄
  • BUM- B oot U p M anager-그래픽 런레벨 편집기
  • systemadm-시스템 시스템 및 서비스 관리자를위한 그래픽 프론트 엔드
    (BTW, 저자는 이메일이 너무 망가 졌다고 나에게 말했다.)


예 :

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

이 데몬은 때때로 현재 IP 주소를 보내서 DDNS를 업데이트합니다 ( D ynamic DNS ( D omain N ame 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을 사용하여 start.
  • 다시 시작$ Sudo systemctl restart noip2.
  • stop$ Sudo systemctl stop noip2을 사용합니다.

시스템 구성 시작하거나 종료 할 때 장치 파일을 자동으로 실행하려면 다음을 수행하십시오.

  • 사용 시작$ Sudo systemctl enable noip2.
  • end using with $ Sudo systemctl disable noip2.

로그보기

  • $ Sudo journalctl -u noip2
1
Elliptical view

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

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