31 lines
744 B
Go
31 lines
744 B
Go
package platform
|
|
|
|
import (
|
|
"fmt"
|
|
"os/exec"
|
|
"time"
|
|
)
|
|
|
|
const nvidiaRecoverHelper = "/usr/local/bin/bee-nvidia-recover"
|
|
|
|
func runNvidiaRecover(args ...string) (string, error) {
|
|
helperArgs := append([]string{nvidiaRecoverHelper}, args...)
|
|
if _, err := exec.LookPath("systemd-run"); err == nil {
|
|
unit := fmt.Sprintf("bee-nvidia-recover-%d", time.Now().UnixNano())
|
|
cmdArgs := []string{
|
|
"systemd-run",
|
|
"--quiet",
|
|
"--pipe",
|
|
"--wait",
|
|
"--collect",
|
|
"--service-type=oneshot",
|
|
"--unit", unit,
|
|
}
|
|
cmdArgs = append(cmdArgs, helperArgs...)
|
|
raw, err := exec.Command("sudo", cmdArgs...).CombinedOutput()
|
|
return string(raw), err
|
|
}
|
|
raw, err := exec.Command("sudo", helperArgs...).CombinedOutput()
|
|
return string(raw), err
|
|
}
|