데비안 : 30 줄의 셸 스크립트를 작성하지 않고 시작시 스크립트를 실행하는 방법은 무엇입니까?


20

데비안 서버가 있는데 시작할 때 스크립트를 실행하면됩니다.

나는 그것을 읽었다 : https://www.debian-administration.org/article/28/Making_scripts_run_at_boot_time_with_Debian

이제 얻었습니다 : insserv : warning : script 'LSB 태그가 누락되고 재정의됩니다.

그래서 지금 추가 해야하는 것처럼 보입니다.

### BEGIN INIT INFO
# Provides:          scriptname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

이제 시작했을 때 프로그램을 실행하기 위해 30 줄의 스크립트와 같이 미쳤습니다.

간단하게 그렇게 할 수있는 도구가 있습니까?

문안 인사


어떤 종류의 스크립트입니까? /etc/rc.local에서 실행 해 보셨습니까? 스크립트 경로를 rc.local 파일에 넣을 수 있으며 부팅시 실행됩니다.
Diamant

노드 프로세스를 시작하고 PHP 등을 시작하는 간단한 스크립트
yarek

나는 30 줄이 아닌 9 줄을 셉니다. 그리고 쉘 스크립트 (SSH 스크립트 아님)가 아닌 주석입니다.
wurtel

그것들은 LSB 헤더 ( wiki.debian.org/LSBInitScripts 참조 )이며 LSB 초기화 스크립트 상용구는 70 줄 북쪽에 있습니다 ( github.com/fhd/init-script-template/blob/master/template 참조 ). 컴퓨터가 부팅 할 때 / etc에있는 일부 파일을 통해 단일 명령을 수동으로 처리하려면이 방법이 매우 정교한 것 같습니다!
kristopolous 2016 년

답변:


29

스크립트가 "단순한 스크립트"이고 데몬을 시작하지 않는 경우 /etc/rc.local(루트로 실행) 또는 crontab(선택한 사용자로 실행 ) 사용을 고려 하십시오.

두 가지 예 :

  • /etc/rc.local

    #!/bin/sh -e
    #(Multiple lines of comments removed.)
    /usr/local/bin/your-script.sh
    exit 0
    
  • crontab(예 :을 통해 편집 crontab -e)

    #(Multiple lines of comments removed.)
    @reboot /usr/local/bin/your-script.sh
    

편집 1 : 귀하의 의견을 읽으십시오 : 스크립트가 항상 실행 해야하는 데몬을 시작하면 rc.localor 사용 crontab하지 말고 대신 적절한 (또는 여러 개의) init.d스크립트 를 작성하는 것이 좋습니다 . 이렇게하면 시스템이 데몬을 깨끗하게 다시 시작 / 다시로드 / 시작 / 중지 할 수 있습니다.

편집 2 : 당신은 그것을 미쳤지 만, LSB tags값을 제공하십시오 : "init.d 스크립트에 대한 런타임 종속성을 문서화함으로써 현재 부팅 순서를 확인하고, 이러한 종속성을 사용하여 부팅을 주문하고 부팅 스크립트를 실행할 수 있습니다 부팅 프로세스 속도를 높이기 위해 자세한 내용은 데비안 위키로 이동하십시오 .

(그런데 : 그것은 경고이므로 실제로, 당신과 이것에 어떻게, 어떻게해야할지는 당신에게 달려 있습니다.)


나는 crontab 버전을 좋아하지만 @reboot는 데비안에서 작동하지 않는다고 생각합니다!
yarek

@ yarek :이 스크립트를 직접 사용하여 작동합니다 (스크립트 일뿐입니다).
gf_

2
그것은 작동하지만 루트 사용자만을위한 것 같아요, 그래서 당신은해야합니다@reboot root /usr/local/bin/your-script.sh
Froggiz

btw 나는 데비안에 대해 이야기하고 있었다!
Froggiz

여전히 혼란 스럽습니다. 세션을 루트로 열지 않고 서버를 다시 시작할 때 cron이 모든 스크립트를 실행할 수 있습니까?
yarek

0

supervisord 도 옵션입니다. node.js 및 PHP를 시작하기 위해 몇 줄을 다시 작성하지만 더 적습니다.


0

이를 위해 monitd 를 사용할 수 있으며 monit 정의를 작성하면 데몬이 시작됩니다. 그러나 왜 LSB 스크립트에 올바른 방법을 사용하지 않습니까? 작성하기가 어렵지 않고 (한 번만 작성)이 작업을 수행하는 가장 깨끗하고 가장 귀중한 방법입니다.

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