1つのsysvinitスクリプトを別のスクリプトの前に実行したいと思っています。その方法を理解しました。
確かに、これは実際に私が好きな順序で発生します。発生する順序でリストを確認したいと思います。
Sudo insserv --showall
はすでに見つかりましたが、initスクリプトが複数回リストされているため、先頭または末尾を作成できません。
/etc/init.dスクリプトがDebianにロードされている順序を確認するにはどうすればよいですか?
/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よりも最初に実行されます。例えば :
2つの単純なスクリプトがあります。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)myScriptとS(N + 1)mysecondScriptから始まるシンボリックリンクが必要です。
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でテスト済み