--- tags: Unix-like, TODO --- # systemd & systemctl & journalctl [TOC] ## systemd * **平行處理所有服務,加速開機流程** 舊的 init 啟動腳本是一項一項任務依序啟動的模式,systemd 可以讓所有的服務同時啟動,加快系統啟動的速度。 * **一經要求就回應的 on-demand 啟動方式** systemd 全部就是僅有一隻 systemd 服務搭配 systemctl 指令來處理,無須其他額外的指令來支援。由於常駐記憶體,因此任何要求(on-demand)都可以立即處理後續的 daemon 啟動的任務。 * **服務相依性的自我檢查** 如果 B 服務是架構在 A 服務上面啟動的,那當你在沒有啟動 A 服務時啟動 B 服務時, systemd 會自動幫你啟動 A 服務。 * **將多個 daemons 集合成為一個 target** 執行某個 target 就是執行好多個 daemon。 * **向下相容舊有的 init 服務腳本** * **依 daemon 功能分類** 將服務單位 unit 區分為 service、socket、target、path、snapshot、timer 等多種不同的類型 type,方便管理員的分類與記憶。 | Type | Description | |------|-------------| | service | **一般服務**,主要是系統服務,經常被使用到的服務大多是這種類型 | | socket | **內部程序資料交換的插槽服務**,一般用於本機服務比較多,例如我們的圖形界面很多的軟體都是透過 socket 來進行本機程序資料交換 Inter-process communication 的行為 | | target | **執行環境**,一群 unit 的集合 | | mount | **檔案系統掛載相關的服務**,來自網路的自動掛載、NFS 檔案系統掛載等與檔案系統相關性較高的程序管理 | | path | **偵測特定檔案或目錄**,某些服務需要偵測某些特定的目錄來提供佇列服務,例如最常見的列印服務,就是透過偵測列印佇列目錄來啟動列印功能 | | timer | **循環執行的服務**,由 systemd 主動提供的,比 [anacrontab](http://linux.vbird.org/linux_basic/0430cron.php#anacron) 更加有彈性 | ## systemctl systemd 這個啟動服務的機制,主要是透過名為 systemctl 的指令來處理。跟以前 systemV 需要 `service` / `chkconfig` / `setup` / `init` 等指令來協助不同。 * `start` :立刻啟動 * `stop` :立刻關閉 * `restart` :立刻重啟 * `reload` :不關閉 unit 的情況下,重新載入設定檔 * `enable` :設定下次開機時會被啟動 * `disable` :設定下次開機時不會被啟動 * `status` :目前狀態,會列出有沒有正在執行、開機預設執行否、登錄等資訊等 * `is-active` :目前是否運作中 * `is-enabled` :開機時是否啟用 ## journalctl 用來檢索 systemd 的 log。 * `--since`、`--until` :過濾時間。 * `-u` :指定 service。 * `-n` :指定最新的幾筆。 * `-f` :相當於 `tail`。 * `-p` :過濾訊息,priority 分為: ``` 0: emerg 1: alert 2: crit 3: err 4: warning 5: notice 6: info 7: debug ``` ### Configuration 設定檔位於 [`/etc/systemd/journald.conf`](http://man7.org/linux/man-pages/man5/journald.conf.5.html) 。 * `Storage` :預設是 volatile,存在 memory,persistent 則會寫進 `/var/log/journal` 。 ## launchctl Mac 使用 launchctl 來管理系統中的 Process、Application 及 Script。透過 `*.plist` 檔案得知有哪些東西需要管理,所以若要新增任務給 Launchd,我們要新增一個 plist 檔案。檔案建議放在 `~/Library/LaunchAgents` 。 * `load` :載入 * `unload` :移除 * `start` :手動執行 * `list` :列表 ## 參考資料 * [認識系統服務 (daemons) / 鳥哥的 Linux 私房菜](http://linux.vbird.org/linux_basic/0560daemons.php) * [journalctl / man page](http://man7.org/linux/man-pages/man1/journalctl.1.html)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.