하나의 sysvinit 스크립트를 다른 스크립트보다 먼저 실행하고 그 방법을 알아 내고 싶습니다.
확실히, 이것은 실제로 내가 좋아하는 순서대로 발생합니다. 나는 그 순서대로 목록을보고 싶습니다.
나는 sudo insserv --showall
이미 찾았 지만 init 스크립트를 여러 번 나열하기 때문에 머리 나 꼬리를 만들 수 없습니다.
데비안에서 /etc/init.d 스크립트가 어떤 순서로로드되는지 확인하는 방법은 무엇입니까?
하나의 sysvinit 스크립트를 다른 스크립트보다 먼저 실행하고 그 방법을 알아 내고 싶습니다.
확실히, 이것은 실제로 내가 좋아하는 순서대로 발생합니다. 나는 그 순서대로 목록을보고 싶습니다.
나는 sudo insserv --showall
이미 찾았 지만 init 스크립트를 여러 번 나열하기 때문에 머리 나 꼬리를 만들 수 없습니다.
데비안에서 /etc/init.d 스크립트가 어떤 순서로로드되는지 확인하는 방법은 무엇입니까?
답변:
/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
합니다.
모든 런레벨 (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에서 테스트