THIS IS A WORK IN PROGRESS AND IS NOT CURRENLTY USABLE
A cross-platform system service manager written in Go
Operating system support:
- Windows (via
sc.exe
) - Mac (via
launchctl
) - Linux: (via
systemd
)
go get -u github.com/danawoodman/systemservice
Please see the examples folder for examples.
First, setup a new service:
// Create a command to run.
cmd := systemservice.ServiceCommand{
Label: "some-unique-id",
Program: "echo",
Args: []string{"Hello", "World", "!"},
}
// Create the service
serv := systemservice.New(cmd)
Now you can manage your service as needed:
serv.Install(start bool) error
serv.Start() error
serv.Restart() error
serv.Stop() error
serv.Uninstall() error
serv.Status() (systemservice.ServiceStatus, error)
serv.Running() bool
These commands are the same no matter the operating system target.
Replace <LABEL>
and <NAME>
with the values you setup in your Command
.
- If running as a root user:
- Service plist is located at
/Library/LaunchDaemons/<LABEL>.plist
- Stdout logs are sent to
/Library/Logs/<NAME>/<NAME>.stdout.log
- Stderr logs are send to
/Library/Logs/<NAME>/<NAME>.stderr.log
- Service plist is located at
- If running as a non-root user:
- Service plist is located at
~/Library/LaunchAgents/<LABEL>.plist
- Stdout logs are sent to
~/Library/Logs/<NAME>/<NAME>.stdout.log
- Stderr logs are send to
~/Library/Logs/<NAME>/<NAME>.stderr.log
- Service plist is located at
- View logs with
journalctl -u <LABEL>
MIT. See license.md