mirror of https://github.com/qwqdanchun/nps.git
custom systemd service script, increase open files limit
This commit is contained in:
parent
109821b068
commit
c7a5388cfd
|
@ -28,6 +28,31 @@ var (
|
||||||
level string
|
level string
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const systemdScript = `[Unit]
|
||||||
|
Description={{.Description}}
|
||||||
|
ConditionFileIsExecutable={{.Path|cmdEscape}}
|
||||||
|
{{range $i, $dep := .Dependencies}}
|
||||||
|
{{$dep}} {{end}}
|
||||||
|
[Service]
|
||||||
|
LimitNOFILE=65536
|
||||||
|
StartLimitInterval=5
|
||||||
|
StartLimitBurst=10
|
||||||
|
ExecStart={{.Path|cmdEscape}}{{range .Arguments}} {{.|cmd}}{{end}}
|
||||||
|
{{if .ChRoot}}RootDirectory={{.ChRoot|cmd}}{{end}}
|
||||||
|
{{if .WorkingDirectory}}WorkingDirectory={{.WorkingDirectory|cmdEscape}}{{end}}
|
||||||
|
{{if .UserName}}User={{.UserName}}{{end}}
|
||||||
|
{{if .ReloadSignal}}ExecReload=/bin/kill -{{.ReloadSignal}} "$MAINPID"{{end}}
|
||||||
|
{{if .PIDFile}}PIDFile={{.PIDFile|cmd}}{{end}}
|
||||||
|
{{if and .LogOutput .HasOutputFileSupport -}}
|
||||||
|
StandardOutput=file:/var/log/{{.Name}}.out
|
||||||
|
StandardError=file:/var/log/{{.Name}}.err
|
||||||
|
{{- end}}
|
||||||
|
Restart=always
|
||||||
|
RestartSec=120
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
`
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
// init log
|
// init log
|
||||||
|
@ -49,8 +74,6 @@ func main() {
|
||||||
}
|
}
|
||||||
// init service
|
// init service
|
||||||
options := make(service.KeyValue)
|
options := make(service.KeyValue)
|
||||||
options["Restart"] = "on-success"
|
|
||||||
options["SuccessExitStatus"] = "1 2 8 SIGKILL"
|
|
||||||
svcConfig := &service.Config{
|
svcConfig := &service.Config{
|
||||||
Name: "Nps",
|
Name: "Nps",
|
||||||
DisplayName: "nps内网穿透代理服务器",
|
DisplayName: "nps内网穿透代理服务器",
|
||||||
|
@ -59,14 +82,15 @@ func main() {
|
||||||
}
|
}
|
||||||
svcConfig.Arguments = append(svcConfig.Arguments, "service")
|
svcConfig.Arguments = append(svcConfig.Arguments, "service")
|
||||||
if len(os.Args) > 1 && os.Args[1] == "service" {
|
if len(os.Args) > 1 && os.Args[1] == "service" {
|
||||||
logs.SetLogger(logs.AdapterFile, `{"level":`+level+`,"filename":"`+logPath+`","daily":false,"maxlines":100000,"color":true}`)
|
_ = logs.SetLogger(logs.AdapterFile, `{"level":`+level+`,"filename":"`+logPath+`","daily":false,"maxlines":100000,"color":true}`)
|
||||||
} else {
|
} else {
|
||||||
logs.SetLogger(logs.AdapterConsole, `{"level":`+level+`,"color":true}`)
|
_ = logs.SetLogger(logs.AdapterConsole, `{"level":`+level+`,"color":true}`)
|
||||||
}
|
}
|
||||||
if !common.IsWindows() {
|
if !common.IsWindows() {
|
||||||
svcConfig.Dependencies = []string{
|
svcConfig.Dependencies = []string{
|
||||||
"Requires=network.target",
|
"Requires=network.target",
|
||||||
"After=network-online.target syslog.target"}
|
"After=network-online.target syslog.target"}
|
||||||
|
svcConfig.Option["SystemdScript"] = systemdScript
|
||||||
}
|
}
|
||||||
prg := &nps{}
|
prg := &nps{}
|
||||||
prg.exit = make(chan struct{})
|
prg.exit = make(chan struct{})
|
||||||
|
@ -82,8 +106,8 @@ func main() {
|
||||||
return
|
return
|
||||||
case "install":
|
case "install":
|
||||||
// uninstall before
|
// uninstall before
|
||||||
service.Control(s, "stop")
|
_ = service.Control(s, "stop")
|
||||||
service.Control(s, "uninstall")
|
_ = service.Control(s, "uninstall")
|
||||||
|
|
||||||
binPath := install.InstallNps()
|
binPath := install.InstallNps()
|
||||||
svcConfig.Executable = binPath
|
svcConfig.Executable = binPath
|
||||||
|
@ -111,7 +135,7 @@ func main() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
s.Run()
|
_ = s.Run()
|
||||||
}
|
}
|
||||||
|
|
||||||
type nps struct {
|
type nps struct {
|
||||||
|
@ -119,10 +143,12 @@ type nps struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *nps) Start(s service.Service) error {
|
func (p *nps) Start(s service.Service) error {
|
||||||
p.run()
|
_, _ = s.Status()
|
||||||
|
_ = p.run()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
func (p *nps) Stop(s service.Service) error {
|
func (p *nps) Stop(s service.Service) error {
|
||||||
|
_, _ = s.Status()
|
||||||
close(p.exit)
|
close(p.exit)
|
||||||
if service.Interactive() {
|
if service.Interactive() {
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
|
|
Loading…
Reference in New Issue