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/systemservicePlease 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() boolThese 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