golang守护进程用法示例
程序员文章站
2022-08-29 08:33:51
本文实例讲述了golang守护进程用法。分享给大家供大家参考,具体如下:
用node写了一个socket后台服务,可是有时候会挂,node一个异常就game over了,...
本文实例讲述了golang守护进程用法。分享给大家供大家参考,具体如下:
用node写了一个socket后台服务,可是有时候会挂,node一个异常就game over了,所以写了一个守候.
复制代码 代码如下:
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 启动命令失败", time.now().format("2006-01-02 15:04:05"), err)
time.sleep(time.second * 5)
continue
}
l.printf("%s 进程启动", time.now().format("2006-01-02 15:04:05"), err)
err = cmd.wait()
l.printf("%s 进程退出", time.now().format("2006-01-02 15:04:05"), err)
time.sleep(time.second * 1)
}
}
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 启动命令失败", time.now().format("2006-01-02 15:04:05"), err)
time.sleep(time.second * 5)
continue
}
l.printf("%s 进程启动", time.now().format("2006-01-02 15:04:05"), err)
err = cmd.wait()
l.printf("%s 进程退出", time.now().format("2006-01-02 15:04:05"), err)
time.sleep(time.second * 1)
}
}
这里还有一个shell实现的. 记得给予执行权限哦,chmod +x you_command
复制代码 代码如下:
#! /bin/bash
while true; do
./you_command
done
while true; do
./you_command
done
希望本文所述对大家go语言程序设计有所帮助。