Remove unneeded loop and reduce cpu usage

This commit is contained in:
eleksir
2024-04-14 02:43:13 +03:00
parent 227b9006dd
commit e569c6bfce

170
main.go
View File

@@ -101,106 +101,104 @@ func reniced(cnf Config) {
for _, p := range processList { for _, p := range processList {
ok := pool.TrySubmit(func() { ok := pool.TrySubmit(func() {
if processName, err := p.Name(); err == nil { if processName, err := p.Name(); err == nil {
for _, k := range cnf.Kill { if killSignal := kill[processName]; killSignal != "" {
if killSignal := kill[processName]; killSignal != "" { switch killSignal {
switch killSignal { case "kill":
case "kill": _ = p.SendSignal(syscall.SIGKILL)
_ = p.SendSignal(syscall.SIGKILL)
if cnf.Debug {
log.Printf(
"Matching processName with killProcessname (%s), SIG%s sent",
processName,
strings.ToUpper(killSignal),
)
}
case "stop":
if s, err := p.Status(); err == nil && s[0] != "stop" {
_ = p.SendSignal(syscall.SIGSTOP)
if cnf.Debug { if cnf.Debug {
log.Printf( log.Printf(
"Matching processName with killProcessname (%s), SIG%s sent", "Matching processName with killProcessname (%s), SIG%s sent",
processName, processName,
strings.ToUpper(k.Sig), strings.ToUpper(killSignal),
) )
} }
case "stop": } else if err == nil && s[0] == "stop" && cnf.Debug {
if s, err := p.Status(); err == nil && s[0] != "stop" { log.Printf(
_ = p.SendSignal(syscall.SIGSTOP) "Matching processName with killProcessname (%s) and it is already stopped",
processName,
)
}
case "term":
_ = p.SendSignal(syscall.SIGTERM)
if cnf.Debug { if cnf.Debug {
log.Printf( log.Printf(
"Matching processName with killProcessname (%s), SIG%s sent", "Matching processName with killProcessname (%s), SIG%s sent",
processName, processName,
strings.ToUpper(k.Sig), strings.ToUpper(killSignal),
) )
} }
} else if err == nil && s[0] == "stop" && cnf.Debug { case "int":
log.Printf( _ = p.SendSignal(syscall.SIGINT)
"Matching processName with killProcessname (%s) and it is already stopped",
processName,
)
}
case "term":
_ = p.SendSignal(syscall.SIGTERM)
if cnf.Debug { if cnf.Debug {
log.Printf( log.Printf(
"Matching processName with killProcessname (%s), SIG%s sent", "Matching processName with killProcessname (%s), SIG%s sent",
processName, processName,
strings.ToUpper(k.Sig), strings.ToUpper(killSignal),
) )
} }
case "int": case "quit":
_ = p.SendSignal(syscall.SIGINT) _ = p.SendSignal(syscall.SIGQUIT)
if cnf.Debug { if cnf.Debug {
log.Printf( log.Printf(
"Matching processName with killProcessname (%s), SIG%s sent", "Matching processName with killProcessname (%s), SIG%s sent",
processName, processName,
strings.ToUpper(k.Sig), strings.ToUpper(killSignal),
) )
} }
case "quit": case "abrt":
_ = p.SendSignal(syscall.SIGQUIT) _ = p.SendSignal(syscall.SIGABRT)
if cnf.Debug { if cnf.Debug {
log.Printf( log.Printf(
"Matching processName with killProcessname (%s), SIG%s sent", "Matching processName with killProcessname (%s), SIG%s sent",
processName, processName,
strings.ToUpper(k.Sig), strings.ToUpper(killSignal),
) )
} }
case "abrt": case "hup":
_ = p.SendSignal(syscall.SIGABRT) _ = p.SendSignal(syscall.SIGHUP)
if cnf.Debug { if cnf.Debug {
log.Printf( log.Printf(
"Matching processName with killProcessname (%s), SIG%s sent", "Matching processName with killProcessname (%s), SIG%s sent",
processName, processName,
strings.ToUpper(k.Sig), strings.ToUpper(killSignal),
) )
} }
case "hup": case "usr1":
_ = p.SendSignal(syscall.SIGHUP) _ = p.SendSignal(syscall.SIGUSR1)
if cnf.Debug { if cnf.Debug {
log.Printf( log.Printf(
"Matching processName with killProcessname (%s), SIG%s sent", "Matching processName with killProcessname (%s), SIG%s sent",
processName, processName,
strings.ToUpper(k.Sig), strings.ToUpper(killSignal),
) )
} }
case "usr1": case "usr2":
_ = p.SendSignal(syscall.SIGUSR1) _ = p.SendSignal(syscall.SIGUSR2)
if cnf.Debug { if cnf.Debug {
log.Printf( log.Printf(
"Matching processName with killProcessname (%s), SIG%s sent", "Matching processName with killProcessname (%s), SIG%s sent",
processName, processName,
strings.ToUpper(k.Sig), strings.ToUpper(killSignal),
) )
}
case "usr2":
_ = p.SendSignal(syscall.SIGUSR2)
if cnf.Debug {
log.Printf(
"Matching processName with killProcessname (%s), SIG%s sent",
processName,
strings.ToUpper(k.Sig),
)
}
} }
} }
} }