linux環境下開機啓動相關

大部分內容來自網絡:

複習linux啓動時自動運行的守護進程

linux中有兩種方式管理守護進程(其實只要是調用了deamon函數的程序都能成爲守護進程):

  1. standalone方式。進程被放到/etc/init.d中,啓動方式可以選在用/sbin/service XXX restart,也可以用/etc/init.d/XXX restart。這兩種方式本質一樣都是運行了/etc/init.d/目錄下面的某個腳本,這裏面的腳本按照規範都要支持start stop restart這樣的參數。這一類的程序都會作爲一個單獨的服務運行。
  2. super deamon方式。這種方式運行的進程都會註冊到xinetd這進程,從外面看只有這一個進程,發給註冊進程的消息都由xinetd轉給註冊進程來處理。xinetd的配置文件在/etc/inetd.conf,註冊進xinetd的每個進程的配置在/etc/xinet.d/文件夾中。需要注意的一點是:inetd本身是一個守護進程,linux用standalone的方式來管理他,所以可以在/etc/init.d/目錄中找到xinetd對應的腳本,就叫/etc/init.d/xinetd。
守護進程並一定會在系統啓動的時候運行,需要在一些地方指定讓系統來運行。啓動順序是:
  1. BIOS
  2. MBR
  3. kernel loading
  4. init program
  5. /etc/rc.d/rc.sysinit 運行初始化腳本
  6. /etc/rc.d/rc[0-6].d/ 運行不同運行level下的守護進程,每個運行level對應一個目錄,目錄下面都是軟鏈接,軟鏈接指向的位置都在/etc/init.d/目錄下面。由此可見,init.d其實就是init daemon的含義是啊
  7. /etc/rc.d/rc.local 運行本地設置腳本
比較好的切入點是6和7,其中6是專門爲啓動時運行守護進程準備的,有專門的命令支持,他們是:
  1. /usr/sbin/ntsysv(red hat專有)
  2. /sbin/chkconfig
前者是圖形化的,後者可以 --add --list --del ,來操作誰是啓動運行的守護進程,前提是這個進程已經在/etc/init.d/下面有了。


個人總結:如標題所說,這是關於守護進程怎麼設置自動啓動的方法。需要記住的是放到/etc/init.d中的腳本需要支持start,stop,restart這樣的參數,而且爲了能夠支持chkconfig的管理,需要在腳本開頭添加如下注釋行:第二行三個數字的意義分別是,在那些啓動級別生效,啓動順序20,終止順序90。也就是說,當你執行chkconfig *** on的時候,chkconfig會在/etc/rcN.d/目錄下自動創建S20***軟連接(N爲2,3,4,5),指向/etc/init.d/目錄下的啓動腳本。

#! /bin/bash
# chkconfig: 2345 20 90
# description:
A daemon for binding qemu process to core.

寫好腳本,並放置在/etc/init.d/目錄下之後,怎麼設置生效呢?

1. 執行下列命令,設置服務開機自啓動:

         chkconfig--add cbd

   chkconfig cbd on

2. 立即生效:service cbd start    當然也可以重新啓動機器。


------------------------------------------------------------------分割線----------------------------------------------------------------------

linux程序開機自啓動的方法詳解~程序自動啓動~Myself

1.開機啓動時自動運行程序

Linux加載後, 它將初始化硬件和設備驅動, 然後運行第一個進程init。init根據配置文件繼續引導過程,啓動其它進程。通常情況下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目錄下的腳本文件,可以使init自動啓動其它程序。例如:編輯 /etc/rc.d/rc.local 文件,在文件最末加上一行"xinit"或"startx",可以在開機啓動後直接進入X-Window。

2.登錄時自動運行程序
用戶登錄時,bash首先自動執行系統管理員建立的全局登錄script :/etc/profile。然後bash在用戶起始目錄下按順序查找三個特殊文件中的一個:/.bash_profile、/.bash_login、 /.profile,但只執行最先找到的一個。
因此,只需根據實際需要在上述文件中加入命令就可以實現用戶登錄時自動運行某些程序(類似於DOS下的Autoexec.bat)。

3.退出登錄時自動運行程序
退出登錄時,bash自動執行個人的退出登錄腳本/.bash_logout。例如,在/.bash_logout中加入命令"tar -cvzf c.source.tgz *.c",則在每次退出登錄時自動執行 "tar" 命令備份 *.c 文件。

4.定期自動運行程序
Linux有一個稱爲crond的守護程序,主要功能是週期性地檢查 /var/spool/cron目錄下的一組命令文件的內容,並在設定的時間執行這些文件中的命令。用戶可以通過crontab 命令來建立、修改、刪除這些命令文件。
例如,建立文件crondFile,內容爲"00 9 23 Jan * HappyBirthday",運行"crontab cronFile"命令後,每當元月23日上午9:00系統自動執行"HappyBirthday"的程序("*"表示不管當天是星期幾)。 (/etc/crontab中配置命令即可)也可以

5.定時自動運行程序一次
定時執行命令at 與crond 類似(但它只執行一次):命令在給定的時間執行,但不自動重複。at命令的一般格式爲:at [ -f file ] time ,在指定的時間執行file文件中所給出的所有命令。也可直接從鍵盤輸入命令:


個人總結:這篇文章總結的非常好,把各種希望處理的情況都列出來了。其中第一點就是本文中 應用的第一篇文章的內容,適合於設置開機自啓動守護進程。第二點適合進行一些環境設置,個人最喜歡的是將自己所有想要的設置寫成腳本放置在/etc/profile.d/目錄下,因爲/etc/profile會自動執行/etc/profile.d/目錄下的所有腳本。也就是說,可以的話儘量不要修改/etc/bashrc或者/etc/profile文件。

----------------------------------------------------------------分割線--------------------------------------------------------------------



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章