rc 的鏈接。init, ip-up, start-lan 等) 分派功能。signal(SIGHUP, rc_signal) 等,設置處理函數修改全局狀態變量。
while (1) {
// 1. 檢查模塊接口可用性,異常則重啟系統 (reboot)
if (!modem_interface_ok()) system_reboot();
// 2. 啟動 pppd
start_pppd();
// 3. 超時輪詢 /tmp/ppp/link 文件 (標誌連接建立)
for (t=0; t
pause() 掛起等待信號。SIGHUP 來自 ip-down),修改全局 signalled 變量 (RESTART/STOP)。IDLE --(SIGHUP)--> RESTART --(重新撥號流程)--> IDLE IDLE --(SIGTERM)--> STOP --(關閉服務、掛載卸載)--> 退出
// 1. 註冊
signal(SIGHUP, rc_signal);
signal(SIGTERM, rc_signal);
// 2. 處理函數 (異步安全,僅修改標誌)
static void rc_signal(int sig) {
switch (sig) {
case SIGHUP: syslog(LOG_INFO, "signalling RESTART"); signalled = RESTART; break;
case SIGTERM: syslog(LOG_INFO, "signalling STOP"); signalled = STOP; break;
}
}
// 3. 子進程發送 (如 ip-down 腳本)
kill(1, SIGHUP); // 向 PID 1 (rc) 發送
| 類型 | 示例 | 管理方式 |
|---|---|---|
| 一次性運行退出 | ip-up, ip-down, start-watchdog, 配置腳本 | fork+exec, 父進程 wait 或忽略 SIGCHLD |
| 長期循環服務 | HTTPD, DHCPD, DTU Client, PPPD 監控, 流量統計 | daemon 化, 信號控制啟停, 監控進程拉活 |
Linux 修改 IP、主機名、DNS、閘道完整指令集:即時生效與開機永久生效雙模式
Linux ulimit 指令完全指南:使用者資源限制查看與調整實戰
Tomcat JVM 參數調優避坑指南:CATALINA_OPTS vs JAVA_OPTS 關鍵差異與生產級配置模板
Linux Web 目錄全量備份 Shell 腳本:定時、增量、保留天數、Crontab 實戰
Linux 終端機計算器 bc 完整使用指南:從基礎運算到腳本整合
Linux 實務零碎知識點積累:批次腳本、echo、重導向、grep/awk/sed 入門