<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hant-TW">
	<id>https://www.acmex.cc/index.php?action=history&amp;feed=atom&amp;title=%E7%B7%AF%E8%82%B2_2026-0513</id>
	<title>緯育 2026-0513 - 修訂歷史</title>
	<link rel="self" type="application/atom+xml" href="https://www.acmex.cc/index.php?action=history&amp;feed=atom&amp;title=%E7%B7%AF%E8%82%B2_2026-0513"/>
	<link rel="alternate" type="text/html" href="https://www.acmex.cc/index.php?title=%E7%B7%AF%E8%82%B2_2026-0513&amp;action=history"/>
	<updated>2026-06-15T00:45:06Z</updated>
	<subtitle>本 Wiki 上此頁面的修訂歷史</subtitle>
	<generator>MediaWiki 1.36.4</generator>
	<entry>
		<id>https://www.acmex.cc/index.php?title=%E7%B7%AF%E8%82%B2_2026-0513&amp;diff=7314&amp;oldid=prev</id>
		<title>Kuyohong：​建立內容為「本次講座主要介紹 Linux 系統中的排程（Scheduling）功能，將排程分為「單次排程」（at）與「循環排程」（cron）兩大類進行…」的新頁面</title>
		<link rel="alternate" type="text/html" href="https://www.acmex.cc/index.php?title=%E7%B7%AF%E8%82%B2_2026-0513&amp;diff=7314&amp;oldid=prev"/>
		<updated>2026-05-15T13:30:19Z</updated>

		<summary type="html">&lt;p&gt;建立內容為「本次講座主要介紹 Linux 系統中的排程（Scheduling）功能，將排程分為「單次排程」（at）與「循環排程」（cron）兩大類進行…」的新頁面&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新頁面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;本次講座主要介紹 Linux 系統中的排程（Scheduling）功能，將排程分為「單次排程」（at）與「循環排程」（cron）兩大類進行說明。講師首先強調，在實際工作場景中，循環排程因其重複執行的特性而更為常用與重要，特別是系統層級的循環排程。講座詳細介紹了排程的應用情境，例如半夜關機維修、定時清除暫存檔、備份資料庫等，並說明了作業系統如何利用排程執行內建功能，如日誌檔案整理（Logrotate）與資料庫更新。&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
接著，講座深入探討單次排程 at，包括其定義、特性、相關服務（atd）、在不同發行版中的安裝與啟動，以及如何透過 at.allow 和 at.deny 檔案進行權限管理。講師透過實作練習，詳細展示了 at 指令集（at, atq, atrm, at -c）的使用方法，包括建立、查詢、修改及刪除任務。&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
後半部分則轉向介紹循環排程 cron，說明其服務 crond 與相似的權限設定檔 cron.allow 和 cron.deny。講師詳細講解了系統級與個人級循環排程的區別、設定檔案的位置（/etc/crontab, /etc/cron.d/, /var/spool/cron），並深入剖析 crontab 的時間欄位格式（分、時、日、月、週）及其特殊符號（, ,, -, /）的應用。最後，透過具體範例指導如何設定系統與個人排程任務，並探討了伺服器遠端開機（如 Wake-on-LAN）與自動化管理的進階策略。&lt;br /&gt;
&lt;br /&gt;
=== 排程基礎概念與分類 ===&lt;br /&gt;
* 排程的定義與用途&lt;br /&gt;
** 排程是將工作預先安排好，交給作業系統，讓系統在指定時間自動執行的機制。&lt;br /&gt;
** 應用情境範例：&lt;br /&gt;
*** 半夜關機維修：可預先設定關機指令，而無需人員等到半夜三點執行。&lt;br /&gt;
*** 定時傳送程式執行結果：例如設定下午三點將程式結果寄到指定信箱。&lt;br /&gt;
*** 每日定時清除暫存檔：例如清除 /tmp 目錄下的檔案。&lt;br /&gt;
*** 每週固定時間備份資料庫。&lt;br /&gt;
* 作業系統中的排程應用實例&lt;br /&gt;
** 日誌檔案的整理與置換 (Logrotate)：系統透過排程在特定時間自動執行 Logrotate。&lt;br /&gt;
** Locate 指令的資料庫更新：Locate 指令的資料庫會透過排程自動更新。&lt;br /&gt;
** MAN page 資料更新：MAN page 資料庫的更新可寫入排程。&lt;br /&gt;
** 系統更新指令自動化：可將 apt update 這類指令加入排程，使其每日自動在背景執行。&lt;br /&gt;
* 排程的兩大類型&lt;br /&gt;
** 單次排程 (at)：工作僅執行一次，執行完畢後即結束，不會再重複。&lt;br /&gt;
** 循環排程 (cron)：在指定的時間週期（分、時、日、月、週）重複執行工作，是實務上更常用的一種。&lt;br /&gt;
=== 單次排程 (at) ===&lt;br /&gt;
* 特性與服務 (ATD)&lt;br /&gt;
** 一次性的工作執行，執行完畢後即失效。&lt;br /&gt;
** 依賴一個名為 atd 的背景服務來運作。若服務未啟動，排程不會執行。&lt;br /&gt;
** Ubuntu 22.04 以後版本預設不安裝，需手動安裝 (apt install at)；CentOS 通常預設安裝但需手動啟動。&lt;br /&gt;
** 服務管理指令：systemctl status atd、systemctl start atd、systemctl enable atd。&lt;br /&gt;
** 排程檔案儲存位置：Ubuntu 中為 /var/spool/cron/atjobs。&lt;br /&gt;
* 權限管理&lt;br /&gt;
** 透過 /etc/at.allow 和 /etc/at.deny 兩個檔案來控制使用者權限。&lt;br /&gt;
** 權限判斷邏輯：&lt;br /&gt;
    1. root 帳號永遠擁有使用權限。&lt;br /&gt;
    2. 若 /etc/at.allow 存在，則只有列在該檔案中的使用者被允許，此時 /etc/at.deny 被忽略。&lt;br /&gt;
    3. 若 /etc/at.allow 不存在，但 /etc/at.deny 存在，則未被列在 /etc/at.deny 中的使用者皆可使用。&lt;br /&gt;
    4. 若兩個檔案都不存在，則只有 root 能使用。&lt;br /&gt;
* at 指令集與用法&lt;br /&gt;
** 建立排程：at [時間]，進入互動模式後輸入指令，按 Ctrl+D 結束。&lt;br /&gt;
** 查看排程列表：at -l 或 atq。&lt;br /&gt;
** 查看排程內容：at -c [編號]。可直接編輯其對應的腳本檔來修改排程。&lt;br /&gt;
** 刪除排程：at -d [編號] 或 atrm [編號]。&lt;br /&gt;
* 時間格式&lt;br /&gt;
** 特定時間：HH:MM (例如 20:00)。&lt;br /&gt;
** 特定日期與時間：HH:MM YYYY-MM-DD (例如 20:00 2026-05-30)。&lt;br /&gt;
** 相對時間：now + [數量] [單位] (例如 now + 30 minutes)。&lt;br /&gt;
=== 循環排程 (cron) ===&lt;br /&gt;
* 服務與權限&lt;br /&gt;
** 循環排程依賴於 crond 服務，必須確保其正在運行且已設定開機啟動。&lt;br /&gt;
** 權限控制與 at 類似，使用 /etc/cron.allow 和 /etc/cron.deny 檔案，判斷邏輯完全相同。&lt;br /&gt;
* 排程類型與設定檔&lt;br /&gt;
** 系統循環排程：由系統（通常是 root）執行。&lt;br /&gt;
*** 主要設定檔：/etc/crontab。&lt;br /&gt;
*** 格式：分 時 日 月 週 使用者帳號 指令。&lt;br /&gt;
*** 需使用 vi 等編輯器直接修改。&lt;br /&gt;
*** 輔助目錄：/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly，可將腳本直接放入對應目錄，系統會按時執行。&lt;br /&gt;
** 個人循環排程：以特定使用者帳號身份執行。&lt;br /&gt;
*** 使用 crontab -e 進行編輯。&lt;br /&gt;
*** 格式：分 時 日 月 週 指令（無使用者帳號欄位）。&lt;br /&gt;
*** 使用 crontab -l 查看排程。&lt;br /&gt;
*** 排程檔案儲存在 /var/spool/cron 目錄下，以使用者帳號命名。&lt;br /&gt;
* crontab 時間格式詳解&lt;br /&gt;
** 五個時間欄位：&lt;br /&gt;
    1. 分 (Minute): 0 * 59&lt;br /&gt;
    2. 時 (Hour): 0 * 23&lt;br /&gt;
    3. 日 (Day of month): 1 * 31&lt;br /&gt;
    4. 月 (Month): 1 * 12&lt;br /&gt;
    5. 週 (Day of week): 0 * 7 ( 0 和 7 皆為星期日)&lt;br /&gt;
** 特殊符號：&lt;br /&gt;
*** 星號 ()*: 代表「每一個」單位。例如      表示每分鐘。&lt;br /&gt;
*** 逗號 (,): 用於指定不連續的時段。例如 0 10,14    表示每天的 10:00 和 14:00。&lt;br /&gt;
*** 減號 (-): 用於指定連續的時間範圍。例如 0 8-12   1-5 表示週一至週五，早上 8 點到 12 點的每個整點。&lt;br /&gt;
*** 斜線 (/): 代表頻率。例如 /5     表示每隔 5 分鐘。&lt;br /&gt;
=== 伺服器遠端開機與管理策略 ===&lt;br /&gt;
* 自動開機解決方案：&lt;br /&gt;
** 主機板BIOS設定：設定每日在特定時間自動開機。&lt;br /&gt;
** 網路卡開機 (Wake-on-LAN)：在區域網路內發送特定封包（Magic Packet）來喚醒主機。&lt;br /&gt;
** 電話卡喚醒 (Ring-on)：較古老的技術，透過撥打電話喚醒主機。&lt;br /&gt;
* 週末不開機策略：&lt;br /&gt;
** 結合 BIOS 每日自動開機與 cron 排程。&lt;br /&gt;
** 在 /etc/crontab 中設定一條僅在週末執行的關機指令，例如：/5    6-7 root shutdown。&lt;br /&gt;
** 這樣即使主機在週末自動開機，也會在幾分鐘後被排程任務自動關閉。&lt;br /&gt;
[[檔案:2026-0513-01.png|800px]]&lt;/div&gt;</summary>
		<author><name>Kuyohong</name></author>
	</entry>
</feed>