要理解這個問題,您應該知道的第一件事情是* nix中的run level
。 * nix中共有6
運行級別。我不會顯示每個運行級別的詳細信息,您可以閱讀更多關於它的信息here。
每個運行級別有不同的地點/etc/
下:
% cuonglm at ~
% ls -l /etc/rc* -d
drwxr-xr-x 2 root root 4096 Feb 20 10:44 /etc/rc0.d
drwxr-xr-x 2 root root 4096 Feb 20 10:44 /etc/rc1.d
drwxr-xr-x 2 root root 4096 Feb 20 10:44 /etc/rc2.d
drwxr-xr-x 2 root root 4096 Feb 20 10:44 /etc/rc3.d
drwxr-xr-x 2 root root 4096 Feb 20 10:44 /etc/rc4.d
drwxr-xr-x 2 root root 4096 Feb 20 10:44 /etc/rc5.d
drwxr-xr-x 2 root root 4096 Feb 20 10:44 /etc/rc6.d
-rwxr-xr-x 1 root root 306 Feb 4 18:58 /etc/rc.local
drwxr-xr-x 2 root root 4096 Feb 4 19:01 /etc/rcS.d
每次系統啓動時,一些腳本(與S
開始)下coressponding運行級別文件夾執行。 I.E如果您啓動到run level 2
,則會執行/etc/rc2.d/
下的一些腳本。如果顯示這些文件夾的內容,您會看到腳本是符合/etc/init.d/
的腳本的符號鏈接。
% ls -l /etc/rc2.d/
total 4
-rw-r--r-- 1 root root 677 Jul 27 2012 README
lrwxrwxrwx 1 root root 20 Feb 19 11:26 S20kerneloops -> ../init.d/kerneloops
lrwxrwxrwx 1 root root 27 Feb 19 11:26 S20speech-dispatcher -> ../init.d/speech-dispatcher
lrwxrwxrwx 1 root root 20 Feb 19 11:26 S50pulseaudio -> ../init.d/pulseaudio
lrwxrwxrwx 1 root root 15 Feb 19 11:26 S50rsync -> ../init.d/rsync
lrwxrwxrwx 1 root root 15 Feb 19 11:26 S50saned -> ../init.d/saned
lrwxrwxrwx 1 root root 19 Feb 19 11:26 S70dns-clean -> ../init.d/dns-clean
lrwxrwxrwx 1 root root 18 Feb 19 11:26 S70pppd-dns -> ../init.d/pppd-dns
lrwxrwxrwx 1 root root 14 Feb 19 11:26 S75sudo -> ../init.d/sudo
lrwxrwxrwx 1 root root 17 Feb 20 10:44 S91apache2 -> ../init.d/apache2
lrwxrwxrwx 1 root root 22 Feb 19 11:26 S99acpi-support -> ../init.d/acpi-support
lrwxrwxrwx 1 root root 21 Feb 19 11:26 S99grub-common -> ../init.d/grub-common
lrwxrwxrwx 1 root root 18 Feb 19 11:26 S99ondemand -> ../init.d/ondemand
lrwxrwxrwx 1 root root 18 Feb 19 11:26 S99rc.local -> ../init.d/rc.local
這給你一個控制你的服務在哪個運行級別下運行的能力。您可以讓您的服務僅在run level 2
運行,並停止在其他運行級別。但要記住,只有一個「運行級別」是在啓動時執行,即無論是運行級別執行2或3或4,而不是2然後3然後4
所以導致你的區別就在這裏。在您啓動的每個運行級別中,在執行此運行級別的腳本後,將執行腳本/etc/rc.local
。這意味着/etc/rc.local
將在啓動過程結束時運行,而不管啓動的運行級別如何。
大多數Linux發行版都將[systemd](http://en.wikipedia.org/wiki/Systemd)。另外,閱讀'/ etc/init.d/skeleton',並從它自己的'/ etc/init.d/yourapp'文件中獲取靈感...... –
rc.local是一個獨特的文件。使用init.d,您可以爲每個服務提供一個腳本,控制執行順序和運行級別。 – PeterMmm