講一個linux服務啟動報錯問題排查

例子

首先我們在/usr/lib/systemd/system目錄下創建一個服務文件,寫下服務啟動任務配置。下面我以prometheus的node_exporter為例

vim /usr/lib/systemd/system/node_exporter.service

寫如下配置

[Unit]
Description=node_exporter

[Service]
ExecStart=/book/install/node_exporter-1.1.2.linux-amd64/node_exporter --web.listen-address=":9077"
Restart=on-failure

[Install]
WantedBy=multi-user.target

然後重新載入服務

systemctl daemon-reload

然後開啟此服務

systemctl start node_exporter

再查看服務開啟狀態

systemctl status node_exporter

在這裡插入圖片描述

從上圖可以看出失敗了,我去為什麼呢趕緊查看日誌吧
查看對應node_exporter.service服務的日誌

journalctl -u node_exporter.service

翻到最後可以看到報錯日誌為

在這裡插入圖片描述

可以判斷了是參數埠號解析不出來,由於多了””,所以去掉””,改為下面的配置。

[Unit]
Description=node_exporter

[Service]
ExecStart=/book/install/node_exporter-1.1.2.linux-amd64/node_exporter --web.listen-address=:9077
Restart=on-failure

[Install]
WantedBy=multi-user.target

再次載入服務文件,並開啟服務

systemctl daemon-reload
systemctl start node_exporter

查看服務開啟狀態:

systemctl status node_exporter

在這裡插入圖片描述

總結:

從上面的排查示例可以看出服務開啟後先查看狀態,如果報錯到對應服務的日誌去查看報錯資訊。