linux開機自啟動_chkconfig
阿新 • • 發佈:2021-08-23
linux開機自啟動_chkconfig
- 準備可執行程式 g
- 準備shell指令碼 s,s裡面是執行g, 放在
/etc/init.d
目錄下 - 執行 chkconfig --add s
對於凝思,假如程式是守護程式,但是手動啟動耗時,需要重啟,所以需要上面的方式弄一個重啟服務
func (this *Installer) RestartDog() { shellName := "/etc/init.d/rsdog" exit, _ := PathExists(shellName) if exit { if err := os.Remove(shellName); err != nil { fmt.Errorf("delete errors:%s", err) } } var buf string fp, err := os.OpenFile(shellName, os.O_APPEND|os.O_CREATE|os.O_RDWR, 0666) if err != nil { fmt.Errorf("write shell err:", err.Error()) } defer func() { fp.Sync() fp.Close() }() writer := bufio.NewWriter(fp) log.Println("path", this.Path) if this.Path == "." { dir, err := os.Getwd() if err != nil { log.Println("Get Present Path file", err) return } this.Path = dir } log.Println("path", this.Path) buf = `#!/bin/sh ### BEGIN INIT INFO # Provides: rsdog # 凝思平臺重啟守護 OPDIR=` + this.Path + "\n\n" + ` dir=$OPDIR sleep 60 job=` + "`" + `pidof $OPDIR/g` + "`" + ` pid="$job" # 進行殺死,重新啟動 kill -9 $pid $dir/g >/dev/null 2>&1 & ` writer.WriteString(buf) writer.Flush() err = exec.Command("/bin/sh", "-c", "chmod +x " + shellName).Run() if err != nil { log.Println(err) } err = exec.Command("/bin/sh", "-c", "cd /etc/init.d/ && chkconfig --add rsdog").Run() if err != nil { log.Println(err) } }