데비안에서 /etc/init.d 스크립트가 어떤 순서로로드되는지 확인하는 방법은 무엇입니까?


13

하나의 sysvinit 스크립트를 다른 스크립트보다 먼저 실행하고 그 방법을 알아 내고 싶습니다.

확실히, 이것은 실제로 내가 좋아하는 순서대로 발생합니다. 나는 그 순서대로 목록을보고 싶습니다.

나는 sudo insserv --showall이미 찾았 지만 init 스크립트를 여러 번 나열하기 때문에 머리 나 꼬리를 만들 수 없습니다.

데비안에서 /etc/init.d 스크립트가 어떤 순서로로드되는지 확인하는 방법은 무엇입니까?


이 글에 도착한 BusyBox 사용자 : unix.stackexchange.com/questions/59018/… "숫자 순서대로 실행"이라는 의견에 주목하십시오
dtmland

답변:


9

/etc/init.d/ 디렉토리에는 다음과 같은 파일이 있습니다.

$ ls -al /etc/init.d/ | grep -i depend
-rw-r--r--   1 root root  2739 Feb 17 05:20 .depend.boot
-rw-r--r--   1 root root  2221 Feb 17 05:20 .depend.start
-rw-r--r--   1 root root  1855 Feb 17 05:20 .depend.stop

실행할 때마다 update-rc.d파일이 변경됩니다. .depend.boot파일을위한 S, 수준 .depend.start입니다 2 3 4 5수준 .depend.stop을 위해 0 1 6.

내 경우에는 다음과 같은 순서가 있습니다 .depend.start.

TARGETS = killprocs motd nvidia-kernel nfs-common rsyslog privoxy virtualbox
linuxlogo acpi-fakekey binfmt-support fancontrol openvpn hddtemp cgconfig 
dropbox-container dbus dnscrypt-proxy pulseaudio atd cryptmount exim4 
qbittorrent-nox ddclient acpi-support smartmontools ssh ntp loadcpufreq acpid 
cron rsync cgrulesengd cpufrequtils bootlogs bootchart-done single rmnologin 
rc.local stop-bootlogd

위와 같은 순서로 주문이 표시되는 이유도 확인할 수 있습니다. 다음 줄은 다음과 같습니다.

cgrulesengd: rsyslog cgconfig

즉, 먼저 시작 cgrulesengd해야 rsyslog cgconfig합니다.


4

모든 런레벨 (0 6)마다 /etc/rc[N].d 폴더가 있습니다

모든 디렉토리에는 "S"또는 "K"로 시작하는 심볼릭 링크가 있습니다. "S"를 시작하려면 e "K"를 중지하십시오. 스크립트는 파일 이름의 어휘 정렬 방식으로 실행 됩니다. 다시 말해 S10script는 S20myscript보다 먼저 실행됩니다. 예를 들면 다음과 같습니다.

두 개의 간단한 스크립트가 있습니다. second.sh 스크립트는 현재 런레벨에서 fist.sh 스크립트 다음에 실행되어야합니다.

    root@localhost init.d]# cat /etc/init.d/first.sh 
    #!/bin/bash
    #
    echo 'I am the first'  >> /var/log/messages

    root@localhost init.d]# cat /etc/init.d/second.sh   
    #!/bin/bash
    #
    echo 'I am the second'  >> /var/log/messages

내 현재 레벨은 무엇입니까?

    [root@localhost init.d]# runlevel 
    N 5

이제 첫 번째와 S (N + 1) mysecondScript에 대해 S (N) myScript로 시작하는 심볼릭 링크가 필요합니다.

    root@localhost rc5.d]# ln -s /etc/init.d/first.sh /etc/rc5.d/S1first
    root@localhost rc5.d]# ln -s /etc/init.d/second.sh /etc/rc5.d/S2second

메시지 로그를 재부팅하고 확인할 수 있습니다.

    [root@localhost ~]# cat /var/log/messages | grep "I am" -A 1 -B 1
    Dec 13 13:53:36 localhost rpc.statd[3468]: Version 1.0.9 Starting
    I am the first
    Dec 13 13:53:37 localhost hcid[3532]: Bluetooth HCI daemon
    --
    Dec 13 13:53:40 localhost automount[3689]: lookup_read_master:       lookup(nisplus): couldn't locate nis+ table auto.master
    I am the second
    Dec 13 13:53:41 localhost gpm[3785]: *** info [startup.c(95)]: 

오래된 Centos5에서 테스트


/ usr / bin / logger를 사용하여 리디렉션 대신 시스템 로그에 추가하는 것이 좋습니다. 실수로 실수로 ">"를 쓰지 않고 로그를 지우는 것이 좋습니다.
DanB
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.