想把開機自啟項一次看全?Autoruns 現在也有 Linux 版了
版本 1
摘要
過去要在 Linux 上追查開機流程,得自己把好幾個地方拼起來。微軟把 Autoruns 帶到這個平台,版本從 1.0 起算,以 Rust 撰寫:服務、排程、桌面自啟與瀏覽器擴充列在同一份清單裡,而且全程只讀、不改被掃的系統。
推薦- 軟體名稱
- Autoruns
- 版本
- 1
- 收費
- 免費
- 開源
- 開源
- 作業系統
- WindowsLinux
- 更新時間
- 2026-11-06 23:00
在 Windows 上要看開機時跑了什麼,多數人第一個想到的就是 Autoruns。11 月 5 日,微軟把它帶到 Linux,版本號重新起算,原本走到 14.x 的序列歸零成 1.0。
開機時到底跑了哪些東西,Linux 上向來得自己拼
Windows 的自啟位置數量不少,可是集中:登錄檔加上幾個固定資料夾,一套工具跑一遍就掃完了。Linux 沒有這種中心。服務交給 systemd,老機器還留著 SysV 腳本;排程工作分放在 cron 與 anacron;圖形工作階段讀的是 XDG 的 autostart 目錄;登入 shell 又要載入 .profile 這類檔案;瀏覽器擴充、udev 規則、fstab 裡的掛載選項還各自有一份。沒有任何一個元件掌握全貌,所以過去要回答「這台機器開機時究竟啟動了什麼」,只能一個位置接一個位置翻。
把散落的設定收攏成一張清單
Autoruns for Linux 以 Rust 撰寫,是命令列工具,採 MIT 授權。它讀出上述各位置的設定,然後一行一行列清楚:事件、觸發機制、目標、主體、有效狀態,以及證據從哪裡來。涵蓋範圍包含 XDG 桌面自啟與系統級、使用者級的 shell 啟動檔案;systemd 的系統與使用者服務、timer、socket、path、device、mount 與 automount,連優先序、mask、drop-in、相依關係、範本實例與各階段條件都算在內;兩級的 cron、anacron 與 run-parts 工作;modules-load 設定、boot 與 SysV 鉤子、動態載入器的 preload 與搜尋路徑、alternatives,以及受支援的網路鉤子目錄。
瀏覽器另外處理。Chromium 系與 Firefox 的擴充會跨安裝、使用者與 profile 列出,企業政策、外部註冊、常駐的 load-extension 啟動器與原生訊息宿主也一併納入。裝置與媒體這一側,涵蓋 udev 的可執行動作與 unit、fstab 裡的 x-systemd 關係、autofs 程式對應,以及已掛載媒體上的 autorun 優先序。辦公軟體的部分收了 LibreOffice 與 OpenOffice 的擴充套件、UNO 元件,還有事件與工作設定。
不加參數,只看登入項目
直接執行等同於檢視登入啟動項,這點刻意與 Windows 版的預設行為對齊。想把已實作的 Linux 類別一次掃完,要加上 -a 與萬用字元;也可以逐個挑,用 b、h、i、k、l、n、o、s、t,分別對應 boot 鉤子、映像劫持與 preload、瀏覽器整合、動態載入器、登入項目、網路鉤子、應用整合、服務與模組、排程工作。裝置與掛載另有具名選擇器:device、mount 或 device-mount。
輸出格式給了五種:CSV、TSV、JSON、XML,以及對齊的表格,欄位是同一套。最前面保留 12 個機器可讀欄位,接著是事件、機制、主體、profile、啟動者、目標與完整性說明,再接目標狀態、目標是否存在、目標是否可執行。絕對路徑的目標會在選定根目錄內受檢,結論分成存在、缺失或無法存取;相對命令則標為未解析。有個細節值得留意:註冊狀態與目標狀態分開記錄,一條已啟用但檔案早已不存在的項目,仍然顯示為啟用,同時標出目標缺失。
全程唯讀,不動被掃的系統
這類工具最怕下手太重。Autoruns for Linux 明白限定自己只做靜態檔案檢查:找到的命令不執行、unit 不啟動、裝置事件不合成、媒體不掛載、擴充也不載入。文字來源與 XPI、OXT 中繼資料在讀取時,對單檔大小、成員數、單一成員與累計解壓量都設了上限,目標檔案的中繼資料只檢視、不執行。執行期的服務狀態它不去查,在離線根目錄下也查不到,這一點輸出裡有交代。
掃別人的系統,不必先把它開起來
root 參數用來指向另一套根目錄,測試環境、已掛載的系統、容器與離線映像檔都能派上用場。這個路徑在掃描前會先校驗並正規化,在 Linux 上走 openat2 的 RESOLVE_IN_ROOT 與 RESOLVE_NO_MAGICLINKS;如果核心不支援這套設施,它會輸出一條部分掃描的診斷,並要求在回退期間讓掛載的映像保持唯讀。退出碼也分得清楚:0 代表所選的靜態適配器跑完,1 是輸出失敗,2 是參數或根目錄有誤,3 表示結果不完整。
做不到的地方,直接講明
Windows 版的信任選項與 VirusTotal 查詢,在 Linux 版沒有對應物。工具沒有假裝支援,而是直接以退出碼 2 拒絕。Windows 專有的類別,以及靜態適配器覆蓋不到的部分,會輸出明確的 unsupported-scope 行,而不是硬對應成某種看起來合理的類別。d 選擇器保留了它在 Windows 版裡的相容語意,不會被悄悄改指到裝置。
這種「做不到就說做不到」的做法,對一個要替排查結論背書的工具來說,比多支援幾個類別更重要。自啟排查最常見的誤判,正是把查不到當成不存在。
實務上誰會用到
最直接的是維運人員:機器開機越來越慢,或者懷疑有東西在偷偷常駐,一份把 systemd、cron、桌面自啟、瀏覽器擴充並排的清單,比逐個目錄翻快得多。安全與鑑識場景同樣合適,root 參數可以直接對著掛載的映像檔或容器根檔案系統掃,不必先把那套系統啟動起來。做發行版裁剪或映像瘦身的人,也能拿它當基線,看自家映像裡到底配了多少會自動跑起來的東西。
Windows 版十幾年的累積不會平移到 Linux,機制本來就不同。不過「把自啟這件事一次看清楚」的思路是通用的,1.0 的覆蓋廣度至少說明,微軟這次不是隨手做了個移植。
Autoruns 到 Linux 上,最值錢的不是它認得多少種自啟位置,而是它堅持唯讀、把不確定的地方明確標出來。排查工具的可信度,往往由它肯承認的邊界決定。