Feature 57 (config and provisioning): modules declare config and provisions, their files rendered from templates; synced with main (issues of feature 57, 874)
This commit is contained in:
@@ -403,7 +403,7 @@ func processesOf(comm string) []int {
|
||||
if owner, ok := ownerOf(dir); !ok || owner != uid {
|
||||
continue
|
||||
}
|
||||
if readTrimmed(filepath.Join(dir, "comm")) == comm {
|
||||
if readTrimmed(filepath.Join(dir, "comm")) == comm || runsScript(dir, comm) {
|
||||
pids = append(pids, pid)
|
||||
}
|
||||
}
|
||||
@@ -411,6 +411,24 @@ func processesOf(comm string) []int {
|
||||
return pids
|
||||
}
|
||||
|
||||
// runsScript is whether the process is an interpreter running the script named name: clipmenud is a
|
||||
// bash script, so its comm is "bash" and only its command line, "bash /usr/bin/clipmenud", names it.
|
||||
func runsScript(procDir, name string) bool {
|
||||
raw, err := os.ReadFile(filepath.Join(procDir, "cmdline"))
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
args := strings.Split(strings.TrimRight(string(raw), "\x00"), "\x00")
|
||||
if len(args) < 2 {
|
||||
return false
|
||||
}
|
||||
switch filepath.Base(args[0]) {
|
||||
case "bash", "sh", "dash", "zsh", "env":
|
||||
return filepath.Base(args[1]) == name
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// signalAll sends sig to every process of this uid named comm, and answers the pids it reached.
|
||||
func signalAll(comm string, sig syscall.Signal) []int {
|
||||
var reached []int
|
||||
|
||||
Reference in New Issue
Block a user