파일에 직접 로깅하는 로거로 교체
This commit is contained in:
@ -2,8 +2,8 @@ package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path"
|
||||
@ -48,23 +48,28 @@ func copy(src, dst string) error {
|
||||
}
|
||||
|
||||
func main() {
|
||||
logfile, _ := os.OpenFile("replacer.log", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666)
|
||||
defer logfile.Close()
|
||||
stdlog := log.New(logfile, "", log.LstdFlags)
|
||||
|
||||
args := os.Args
|
||||
// args[1] : 나를 시작한 pid. pid가 종료될 때 까지 기다림
|
||||
// args[2] : target 폴더
|
||||
// args[3:] : 다시 시작할 때 넘겨줄 arguments(프로세스 이름 포함)
|
||||
fmt.Println(args)
|
||||
stdlog.Println(args)
|
||||
|
||||
pid, err := strconv.Atoi(args[1])
|
||||
if err != nil {
|
||||
panic(err)
|
||||
stdlog.Fatal(err)
|
||||
}
|
||||
proc, err := os.FindProcess(pid)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
stdlog.Fatal(err)
|
||||
}
|
||||
proc.Wait()
|
||||
|
||||
selfext, _ := os.Executable()
|
||||
selfext = path.Base(selfext)
|
||||
|
||||
entries, _ := os.ReadDir(args[2])
|
||||
for _, ent := range entries {
|
||||
@ -74,16 +79,27 @@ func main() {
|
||||
|
||||
if ent.IsDir() {
|
||||
if err := os.MkdirAll(ent.Name(), 0775); err != nil {
|
||||
panic(err)
|
||||
stdlog.Fatal(err)
|
||||
}
|
||||
} else {
|
||||
if err := copy(path.Join(args[2], ent.Name()), ent.Name()); err != nil {
|
||||
panic(err)
|
||||
stdlog.Println("copy failed :", path.Join(args[2], ent.Name()), ent.Name())
|
||||
stdlog.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
os.RemoveAll(args[2])
|
||||
err = os.RemoveAll(args[2])
|
||||
if err != nil {
|
||||
stdlog.Println("os.RemoveAll failed :", args[2], err)
|
||||
}
|
||||
|
||||
err = os.Chmod(args[3], 0775)
|
||||
if err != nil {
|
||||
stdlog.Println("os.Chmod failed :", err)
|
||||
}
|
||||
|
||||
stdlog.Println("exec.Command :", args)
|
||||
cmd := exec.Command(args[3], args[4:]...)
|
||||
cmd.Start()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user