daemon
This commit is contained in:
parent
35cc5d360b
commit
9897db06e5
52
main.go
52
main.go
|
@ -6,6 +6,7 @@ import (
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
@ -27,7 +28,11 @@ func main() {
|
||||||
const pidFile = "acme-mana.pid"
|
const pidFile = "acme-mana.pid"
|
||||||
const socketFile = "acme-mana.sock"
|
const socketFile = "acme-mana.sock"
|
||||||
|
|
||||||
|
var stdout *os.File
|
||||||
|
var stderr *os.File
|
||||||
|
|
||||||
func start() {
|
func start() {
|
||||||
|
initLog()
|
||||||
log.Println("Run Acme Mana...")
|
log.Println("Run Acme Mana...")
|
||||||
args := os.Args
|
args := os.Args
|
||||||
if len(args) <= 1 {
|
if len(args) <= 1 {
|
||||||
|
@ -49,6 +54,28 @@ func start() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func initLog() {
|
||||||
|
pwd, err := os.Getwd()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to get current working directory: %v", err)
|
||||||
|
}
|
||||||
|
dir := path.Join(pwd, "log")
|
||||||
|
_, err = os.Stat(dir)
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
err := os.Mkdir(dir, 0777)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to create directory: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
outFile, err := os.OpenFile(path.Join(dir, "out.log"), os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
|
||||||
|
defer outFile.Close()
|
||||||
|
stdout = outFile
|
||||||
|
|
||||||
|
errFile, err := os.OpenFile(path.Join(dir, "err.log"), os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
|
||||||
|
defer stderr.Close()
|
||||||
|
stderr = errFile
|
||||||
|
}
|
||||||
|
|
||||||
func daemonStart() {
|
func daemonStart() {
|
||||||
isDaemon := os.Getenv("GO_DAEMON")
|
isDaemon := os.Getenv("GO_DAEMON")
|
||||||
log.Println("Run Daemon, DAEMON Is " + isDaemon)
|
log.Println("Run Daemon, DAEMON Is " + isDaemon)
|
||||||
|
@ -64,13 +91,16 @@ func daemonStart() {
|
||||||
log.Fatalf("Failed to get executable path: %v", err)
|
log.Fatalf("Failed to get executable path: %v", err)
|
||||||
}
|
}
|
||||||
cmd := exec.Cmd{
|
cmd := exec.Cmd{
|
||||||
Path: path,
|
Path: path,
|
||||||
Args: os.Args,
|
Args: os.Args,
|
||||||
Dir: filepath.Dir(path),
|
Dir: filepath.Dir(path),
|
||||||
Env: append(os.Environ(), "GO_DAEMON=1"),
|
Env: append(os.Environ(), "GO_DAEMON=1"),
|
||||||
Stdin: os.Stdin,
|
//Stdin: os.Stdin,
|
||||||
Stdout: os.Stdout,
|
Stdout: stdout,
|
||||||
Stderr: os.Stderr,
|
Stderr: stderr,
|
||||||
|
//Stdin: os.Stdin,
|
||||||
|
//Stdout: os.Stdout,
|
||||||
|
//Stderr: os.Stderr,
|
||||||
SysProcAttr: &syscall.SysProcAttr{},
|
SysProcAttr: &syscall.SysProcAttr{},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,10 +220,10 @@ func isRunning() bool {
|
||||||
log.Println("Failed to find process:", err)
|
log.Println("Failed to find process:", err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
return true
|
||||||
err = process.Signal(syscall.Signal(0))
|
//err = process.Signal(syscall.Signal(0))
|
||||||
log.Println("Signal result:", err)
|
//log.Println("Signal result:", err)
|
||||||
return err == nil
|
//return err == nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func readPID() (int, error) {
|
func readPID() (int, error) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user