哈嘍大家好,我是鹹魚 不知道大家在日常學習或者工作當中用 dig 命令多不多 dig 是 Domain Information Groper 的縮寫,對於網路管理員和在功能變數名稱系統(DNS)領域工作的小伙伴來說,它是一個非常常見且有用的工具。 無論是簡單的 DNS 解析查找還是更高級的故障排除和分析,d ...
背景
使用go語言寫了一個測試環境部署上報的備份服務,以防因為主服務掛了影響部署操作。
想把這個 backup 服務設置了系統服務,如果因環境重啟等異常,可以自動重啟
使用的環境的Centos7
1、首先需要創建一個systemd unit存儲配置文件
[Unit] Description=deploy report backup servce [Service] Type=forking ExecStart=/opt/deploy-report/deploy-report.sh start #ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/opt/deploy-report/deploy-report.sh stop Restart=on-failure [Install] WantedBy=multi-user.target
2、將上面配置放在指定目錄下
RHEL
系列service
服務文件存放在/usr/lib/systemd/system
目錄
Debian
系列service
服務文件存放在/lib/systemd/system/
目錄下,這個目錄有系統自帶
的服務文件和安裝的軟體包
提供的服務文件
我的是Centos系統,所以放在了/usr/lib/systemd/system/deploy-report.service文件裡面
3、載入配置文件
systemctl daemon-reload
unit文件編寫完成並放在指定目錄下,需要執行systemctl daemon-reload命令重新載入配置文件,讓系統知道有新的服務文件了
4、啟動服務
systemctl start deploy-report.service
5、停止服務
systemctl stop deploy-report.service
6、開機自啟動
systemctl enable deploy-report
在操作過程遇到的幾個問題
1、啟動卡死
在unit配置文件中的啟動命令ExecStart剛開始是直接使用的執行go編譯的二進位文件
ExecStart=/opt/deploy-report/deploy-report
執行systemctl start deploy-report.service後發現一直卡在命令行無法退出,猜想是因為直接執行deploy-report啟動是一個web服務,會一直處於listen狀態,導致一直卡住
於是編寫了一個啟動腳本
ExecStart修改為 ExecStart=/opt/deploy-report/deploy-report.sh start
重新執行systemctl start deploy-report.service後發現報錯,不卡了,直接執行腳本是可以運行的
2、啟動失敗status=203
通過下麵命令查看報錯情況 systemctl status deploy-report.service
status=203,網上一番搜索找到
於是在腳本上加上#!/bin/sh,重新運行,成功啟動
另外配置nginx時也出現命令行卡死現象
After中的服務沒有導致,更改後正常了