I am trying to call systemd-coredump program using golang in order to generate core dump but it somehow fails with no such file or directory error.
I am containerizing this code and deploying it as a pod in kubernetes.
Kubernetes has rhel version 7.6
Here is my code :
package main
import (
	"os/exec"
	"os"
    "fmt"
)
func main(){
  coreProcessID := "<some process id>"
  partialCmd := "<arguments for core dump like %u %g %s %t %c %E>"
  coreCmd := "/usr/lib/systemd/systemd-coredump " + coreProcessID + " " + partialCmd
  fmt.Println("coreCmd is ", coreCmd)
        cmd := exec.Command(coreCmd)
		output, err := cmd.CombinedOutput()
		if err != nil {
			fmt.Println(fmt.Sprint(err) + ": " + string(output))
		} else {
			fmt.Println(string(output))
		}
}
I am getting this error : fork/exec /usr/lib/systemd/systemd-coredump 59009 %u %g %s %t %c %E: no such file or directory:
I even tried using syscall.Exec but it just exits the program without any error or output.
In Python it works fine using os.system(core_cmd) but somehow fails for golang.
How can I call systemd-coredump program using golang?
Retried with the below changes
cmd := exec.Command(coreCmd, coreProcessID, partialCmd)
		var out bytes.Buffer
		var stderr bytes.Buffer
		cmd.Stdout = &out
		cmd.Stderr = &stderr
		err := cmd.Run()
		if err != nil {
			fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
		}
		fmt.Println("Result: " + out.String())But it does not retrieve the output or generate core dump
your original example works to some extent if re imagined like this
import (
	"fmt"
	"os"
	"os/exec"
	"strings"
)
func main() {
	coreProcessID := os.Args[1]
	partialCmd := "%u %g %s %t %c %E"
	coreCmdArgs := coreProcessID + " " + partialCmd
	fmt.Println("coreCmdArgs are ", coreCmdArgs)
	coreCmdArgsAsSlice := strings.Split(" ", coreCmdArgs)
	cmd := exec.Command("/usr/lib/systemd/systemd-coredump", coreCmdArgsAsSlice...)
	output, err := cmd.CombinedOutput()
	if err != nil {
		fmt.Println(fmt.Sprint(err) + ": " + string(output))
	} else {
		fmt.Println(string(output))
	}
}
the above on my system gives this error, which is presumably due to the way that systemd-coredump works
coreCmdArgs are  885 %u %g %s %t %c %E
exit status 1: Not enough arguments passed by the kernel (1, expected 6).