關於Ubuntu運行級別、開機啟動腳本的說明

来源:http://www.cnblogs.com/hbhzsysutengfei/archive/2016/08/06/ubuntu-runlevel-autostart-service.html
-Advertisement-
Play Games

關於Ubuntu運行級別、開機啟動腳本的說明 目錄簡介 1.1介紹Ubuntu下麵的自啟動腳本目錄 1.2 Linux操作系統運行級別的概念 1.3關於操作系統自啟腳本的啟動順序 1.4 Linux操作系統運行級別的概念 1.5 自啟和關閉自啟服務 1.6 對於init [number]命令 Con ...


關於Ubuntu運行級別、開機啟動腳本的說明

目錄簡介

1.1介紹Ubuntu下麵的自啟動腳本目錄

1.2 Linux操作系統運行級別的概念

1.3關於操作系統自啟腳本的啟動順序

1.4    Linux操作系統運行級別的概念

1.5 自啟和關閉自啟服務

1.6 對於init [number]命令

Content:

1.1 介紹Ubuntu操作系統關於自啟動腳本的幾個目錄

其中rc0.d~rc.6.d文件夾下分別對應的是操作系統0-6級運行的狀態下需要執行的腳本。此外還有rcS.d文件夾和rc.local文件,而在這些文件夾下的文件,都是軟鏈文件,指向指定位置的腳本,有圖為證:

       經查看,發現這些軟鏈都是指向同一個文件夾../init.d/的腳本文件,

我們查看其它的文件夾,發現情況都是這樣子。因此所有開機自啟動的腳本文件都是放在/etc/init.d/目錄下麵的:

 

那麼這些rcN.d分別代表什麼意義?或者是說是不是按照0~6的順序依次運行?肯定不是。因為我們查看rc0.d folder

發現,在該文件夾下,居然有halt(關機)腳本,因此開啟操作系統的時候,肯定不可能執行這個。因此證明rcN.d這幾個folders之間是相互獨立的,沒有什麼本質的聯繫。

       那麼為什麼會有這幾個文件夾的區別呢?這就引入了linux操作系統的運行級別(run-level)概念。

1.2 Linux操作系統運行級別的概念

       根據前面學習的內容,我們知道有rc0~6在加 rcS.d & rc.local,後面這兩個我們先不看,至少存在0-6共七種運行級別。這裡的運行級別的概念被稱為System V的運行機制。這七種運行級別的含義如下(僅僅針對Ubuntu,其他系統定義可能不完全一樣):

我們可以通過runlevel查看當前系統的運行狀態

 

 

也就是說我們系統的運行級別目前是2,該參數的配置文件/etc/init/rc-sysinit.conf

 

因此我們開機自啟動的腳本在rc2.d文件夾下,所有的軟鏈指向/etc/init.d/中的腳本文件:

 

這些就是我們預設開機狀態下,要啟動的服務,如果我們將自己的腳本放在/etc/init.d/目錄下,同時在rcN.d中創建軟鏈,指向該文件(軟鏈的名稱應該是S<num><service name>,便可以開機自啟這些服務。同時我們還可以修改配置文件/etc/init/rc-sysinit.conf中的DEFAULT_RUNLEVEL的值,修改操作系統預設的運行級別。

1.3 關於操作系統自啟腳本的啟動順序

       假設我們的操作系統運行級別是2,那麼在/etc/rc2.d/文件夾下的腳本執行順序是怎樣的?因為有些服務需要先啟動,有些服務需要後啟動,他們之間存在先後關係,即有向圖的關係。

       我們查看該文件夾下的軟鏈名稱(見上圖),軟鏈的名稱有一定的規則:

       S[number][service name] --> ../init.d/servicename

       S 表示 Start,開啟服務

       [number]表示的是該腳本的運行優先順序,number越小,腳本的運行優先順序就越高

       [service name]表示的是服務的名稱。

       因此我們如果需要定義一個服務啟動的優先順序(順序),則需指定腳本的number即可。

      

       根據此規則,我們查看rc6.c文件夾(重啟運行級別):

按照number的順序,顯示Kill服務,之後再Start一些服務,最後重新啟動S90reboot.

1.4 關於rcS.d rc.local文件夾的意義

該腳本是在rc0~6.d文件夾下的腳本執行之前執行rcS.d文件夾下的腳本命令。

1.5 自啟和關閉自啟服務

       在理解了自啟服務的原理之後,我們可以手動添加腳本鏈接文件到指定的rcN.d目錄下,但是這種純手工的方式比較複雜,因此我們可以使用簡單的命令來實現這種功能,或者是指定的工具來實現。

       命令版本# update-rc.d來自動實現System V 的RunLevel的啟動腳本服務,前提是這些服務的啟動腳本位於/etc/init.d/目錄下。

       update-rc.d <service name> start|stop| <order number> <run levels>

       eg:

              sudo update-rc.d rinetd start 20 2

              sudo update-rc.d rinetd stop 20 0

 

       update-rc.d <service name> enable|disable  <runlevels> # 開啟或者是禁止

       eg:

              sudo update-rc.d rinetd disable 2 在runlevel2中暫時禁止該服務

 

       update-rc.d <service name> default [NN | SS KK]

       eg:

              sudo update-rc.d rinetd default 80 80  # default 表示在2 3 4 5 中添加80(the first 80)順序的Start,在0 6 中添加80(the second 80)順序的Kill服務

      

       註意實現去對應的文件夾查看該服務的ordernumber

       從啟動裡面刪除

       sudo update-rc.d -f <service name> remove

       這樣在所有的運行級別中就會刪除掉關於該service的自啟和關閉服務鏈接(刪除的僅僅是鏈接,而不是/etc/init.d/文件夾中的腳本文件)

1.6 對於init [number]命令

  我們在命令行中關閉操作系統或者是重新啟動,使用的是

 

 

 

       在本質上調用的是:

       

      

 

      

       rc0.d 表示的關機 rc6.d表示的是重新啟動

       因此我們還可以在不重新啟動操作系統的前提下,切換操作系統的RunLevel

       sudo init <num>

GuangZhou 2016-8-6 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一般我們可以使用sql server自帶的性能分析追蹤工具sql profiler分析資料庫設計所產生問題的來源,進行有針對性的處理。但我們也可以通過自己寫SQL語句來有針對性的進行性能方面的查詢。通常會用到如下三個系統視圖:sys.sysprocesses ,dm_exec_sessions ,d ...
  • 下麵和大家分享一個比較經典的場景,資料庫的面試題目,主要的表是學生、課程、成績、教師四張表,本示例的特點是有模擬數據,加深理解和印象,答案主要基於Oracle來實現的 1、四張表分別為: 2、題目要求 3、在資料庫建表 /* */ /* CREATE TABLE */ /* */ --學生表 CRE ...
  • 目標 理解線上部署考慮的因素 學會編譯安裝以及二進位安裝mysql 學會升級mysql 學會多實例部署mysql資料庫 學會合理部署mysql線上庫 考慮因素: 版本選擇,5.1,5.5還是5.6? 分支選擇,官方社區版?percona server?mariadb? 推薦官方版,簡單易上手 安裝方 ...
  • 口令文件介紹 在ORALCE資料庫系統中,用戶如果要以特權用戶身份(SYS/SYSDBA/SYSOPER)登錄ORALCE資料庫可以有兩種身份驗證的方法:即使用與操作系統集成的身份驗證或使用ORALCE資料庫的密碼文件進行身份驗證。因此,管理好密碼文件,對於控制授權用戶從伺服器本機或遠端登錄Orac... ...
  • CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci; ...
  • [sql] EXP-00091: 正在導出有問題的統計信息。www.2cto.com . . 正在導出表 WF_GENERAL導出了 EXP-00091: 正在導出有問題的統計信息。 . . 正在導出表 WF_PLAN_BOOK導出了 EXP-00091: 正在導出有問題的統計信息。 . . 正在導 ...
  • 這篇博客是上一篇博客Oracle shutdown immediate遭遇ORA-24324 ORA-24323 ORA-01089的延伸(資料庫掛起hang時,才去重啟的),其實這是我們海外一工廠的遇到的案例,把內容拆開是因為這個case分開講述顯得主題明確一些。正式進入主題: 伺服器資料庫版本O... ...
  • ORACLE 10g下載地址 oracle 下載還需要用戶名我自己註冊了個方便大家使用下載 user:[email protected]:qwe123QWE現在直接點擊不能下載了 要經過oracle許可才可以下載 如果嫌麻煩可以用迅雷直接下載密碼是這個 一般不會動了 大家也不用幫我找回密碼了 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...