自定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
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
sudo tee /etc/systemd/system/motd.service > /dev/null <<EOF
[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
EOF

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
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
sudo tee /etc/systemd/system/motd.timer > /dev/null <<EOF
[Unit]
Description=Generate system information for motd

[Timer]
Persistent=true
OnBootSec=2m
OnUnitActiveSec=1h

[Install]
WantedBy=timer.target

EOF
  • 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