จะทราบได้อย่างไรว่าสคริปต์โหลด /etc/init.d คำสั่งใดที่โหลดไว้ใน Debian


13

ฉันต้องการเรียกใช้สคริปต์ sysvinit หนึ่งบทต่อหน้าและคิดวิธีการทำเช่นนั้น

เพื่อให้แน่ใจว่าสิ่งนี้เกิดขึ้นจริงตามลำดับที่ฉันชอบฉันต้องการดูรายการในลำดับที่เกิดขึ้น

ฉันพบsudo insserv --showallแล้ว แต่ไม่สามารถทำให้หัวหรือส่วนท้ายของมันเพราะมันแสดงรายการสคริปต์เริ่มต้นหลายครั้ง

จะทราบได้อย่างไรว่าสคริปต์โหลด /etc/init.d คำสั่งใดที่โหลดไว้ใน Debian


ผู้ใช้ 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.stop0 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

สำหรับทุกระดับ runlevel (0 6) จะมีโฟลเดอร์ /etc/rcurrencyNOWN.d

ในทุกไดเรกทอรีจะมีลิงก์สัญลักษณ์เริ่มต้นด้วย "S" หรือด้วย "K" "S" เพื่อเริ่ม e "K" เพื่อหยุด สคริปต์จะถูกดำเนินการในลักษณะการจัดเรียงคำศัพท์ของชื่อไฟล์ในคำอื่น ๆ S10script จะถูกดำเนินการครั้งแรกกว่า S20myscript ตัวอย่างเช่น :

เรามีสคริปต์ง่าย ๆ สองสคริปต์สคริปต์ second.sh ต้องถูกเรียกใช้หลังจากสคริปต์ fist.sh ใน runlevel ปัจจุบัน

    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 เก่า


ฉันแนะนำให้ใช้ / usr / bin / logger ต่อท้ายบันทึกระบบแทนการเปลี่ยนเส้นทางดังนั้นคุณจะไม่เขียน ">" โดยบังเอิญในวันหนึ่งและลบบันทึกของคุณออกโดยไม่ได้ตั้งใจ
DanB
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.