10 func (s *Setup) installRunit() error {
11 if s.DaemonSupervisor != "runit" {
14 return (&osPackage{Debian: "runit"}).install()
17 type runitService struct {
22 func (r *runitService) Start() error {
23 script := &bytes.Buffer{}
24 fmt.Fprintf(script, "#!/bin/sh\n\nexec %q", r.prog)
25 for _, arg := range r.args {
26 fmt.Fprintf(script, " %q", arg)
28 fmt.Fprintf(script, " 2>&1\n")
29 return atomicWriteFile(path.Join(r.svdir(), "run"), script.Bytes(), 0755)
32 func (r *runitService) Running() (bool, error) {
33 if _, err := os.Stat(r.svdir()); err != nil && os.IsNotExist(err) {
36 return runStatusCmd("sv", "stat", r.svdir())
39 func (r *runitService) svdir() string {
40 return path.Join(r.etcsv, r.name)