自定MOTD訊息

MOTD

開始設定

  1. 自定MOTD內容,編輯/usr/local/bin/motd
1
2
3
4
5
printf "\nSystem Information:\n" > /etc/motd
printf '%s\n' '---' >> /etc/motd
hostnamectl >> /etc/motd
printf '%s\n' '---' >> /etc/motd
curl -s wttr.in/RCLY?format=4 >> /etc/motd
  1. 增加執行權限
1
sudo chmod +x /usr/local/bin/motd
  1. 建立systemd service sudo vim /etc/systemd/system/motd.service 內容為
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
[Unit]

Description=Generate system info for motd

After=network-online.target

Wants=network-online.target

[Service]

Type=oneshot

ExecStart=/usr/local/bin/motd

[Install]

WantedBy=default.target

motd.service內容說明

  • After=network-online.target & Wants=network-online.target: 告訴 systemd 這個服務需要網路。它會等待網路完全連線後才執行

  • Type=oneshot: 代表這是一個「單次任務」。指令執行完畢後就會自動結束,不會在背景持續佔用記憶體(適合用來執行更新檔、備份或跑腳本)。

  • ExecStart=/usr/local/bin/motd: 實際執行的指令路徑。這會去執行你的 /usr/local/bin/motd 腳本來產生內容。

  • WantedBy=default.target: 允許這個服務在系統開機進入預設模式(通常是多使用者模式)時被啟用。

  1. 建立systemd timer
1
 sudo vim /etc/systemd/system/motd.timer
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[Unit]

Description=Generate system information for motd

[Timer]

Persistent=true

OnBootSec=2m

OnUnitActiveSec=1h

[Install]

WantedBy=timer.target
  • OnBootSec=2m: 開機 2 分鐘後,第一次觸發 motd.service 執行。

  • OnUnitActiveSec=1h: 從上次 Service 觸發成功後,每隔 1 小時再次觸發執行一次。

  • Persistent=true: 補跑機制。如果上次預定執行時間系統正好關機了,開機後計時器會立刻補跑一次,確保資料不會過期太久。

  • WantedBy=timer.target: 將計時器掛載到系統的 Timer 服務群組,讓它隨系統啟動並開始計時。

  1. 更新 systemd
1
sudo systemd daemon-reload

6 啟動timer

1
2
sudo systemctl enable motd.timer
sudo systemctl start motd.timer

成果

MOTD成果圖

Built with Hugo
Theme Stack designed by Jimmy