本文實(shí)例講述了golang守護(hù)進(jìn)程用法。分享給大家供大家參考,具體如下:
用node寫了一個(gè)socket后臺(tái)服務(wù),可是有時(shí)候會(huì)掛,node一個(gè)異常就game over了,所以寫了一個(gè)守候.
復(fù)制代碼 代碼如下:
package main
import (
"log"
"os"
"os/exec"
"time"
)
func main() {
lf, err := os.OpenFile("angel.txt", os.O_CREATE | os.O_RDWR | os.O_APPEND, 0600)
if err != nil {
os.Exit(1)
}
defer lf.Close()
// 日志
l := log.New(lf, "", os.O_APPEND)
for {
cmd := exec.Command("/usr/local/bin/node", "/*****.js")
err := cmd.Start()
if err != nil {
l.Printf("%s 啟動(dòng)命令失敗", time.Now().Format("2006-01-02 15:04:05"), err)
time.Sleep(time.Second * 5)
continue
}
l.Printf("%s 進(jìn)程啟動(dòng)", time.Now().Format("2006-01-02 15:04:05"), err)
err = cmd.Wait()
l.Printf("%s 進(jìn)程退出", time.Now().Format("2006-01-02 15:04:05"), err)
time.Sleep(time.Second * 1)
}
}
這里還有一個(gè)shell實(shí)現(xiàn)的. 記得給予執(zhí)行權(quán)限哦,chmod +x you_command
復(fù)制代碼 代碼如下:
#! /bin/bash
while true; do
./you_command
done
希望本文所述對(duì)大家Go語言程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- golang 輸出重定向:fmt Log,子進(jìn)程Log,第三方庫(kù)logrus的詳解
- Golang信號(hào)處理及如何實(shí)現(xiàn)進(jìn)程的優(yōu)雅退出詳解
- golang如何實(shí)現(xiàn)mapreduce單進(jìn)程版本詳解
- golang 后臺(tái)進(jìn)程的啟動(dòng)和停止操作