235 Commits

Author SHA1 Message Date
Daniel Theophanes
b7ded6fcb7 go.mod: bump sys v1.2.4 2025-07-14 11:46:09 -05:00
Daniel Theophanes
bcef75b8b0 procd: fix lint v1.2.3 2025-07-14 11:43:06 -05:00
feiyuw
be5c103521 add arguments to aix-ssrc service 2025-07-14 10:38:48 -05:00
bdm-oslandia
b8217ba788 fix(linux): isInContainer now checks for dockerenv, mountinfo and cgroup file data 2025-07-14 10:36:55 -05:00
Gianluca Boiano
8de5087a7c fix: handle rpm-ostree distros and mark as systemd-enabled 2025-07-14 10:26:05 -05:00
amrindersingh1820
4b4a50c0cb Update service_aix.go
1. Lack of Proper Error Handling

	•	Original Issue: Many functions did not properly handle or return errors. For example, getArgsFromPid, isInteractive, and Uninstall didn’t adequately report issues.
	•	Fix: Ensured all functions return errors when necessary and added descriptive error messages.

2. Missing or Inconsistent Formatting

	•	Original Issue: Code formatting was inconsistent, particularly around template definitions, string concatenation, and variable declarations.
	•	Fix: Improved formatting for readability and consistency.

3. Unsafe Regex Handling

	•	Original Issue: Service name strings were directly embedded in regular expressions, which could cause issues with special characters.
	•	Fix: Used regexp.QuoteMeta to escape service names safely.

4. Incorrect Status Parsing

	•	Original Issue: Parsing the lssrc output for service status relied on weak assumptions and could result in incorrect matches.
	•	Fix: Improved the regex and explicitly handled unknown statuses with an appropriate error.

5. Overlooked File and Path Errors

	•	Original Issue: File path checks and operations like os.Stat or os.Remove didn’t always handle errors or check preconditions properly.
	•	Fix: Added error checks to ensure paths and files are correctly verified before performing actions like creation or deletion.

6. Race Condition in Restart Logic

	•	Original Issue: The Restart method had no delay between Stop and Start, potentially causing race conditions.
	•	Fix: Introduced a short sleep (50ms) to ensure the stop operation completes before starting.

7. Poor Handling of Interactive Mode

	•	Original Issue: Interactive mode detection lacked robustness and could panic on errors.
	•	Fix: Improved the logic in isInteractive and wrapped it in a more descriptive error message.

8. Missing Default Logger for Interactive Mode

	•	Original Issue: The Logger method didn’t properly handle interactive environments in a structured way.
	•	Fix: Added a fallback to ConsoleLogger for interactive environments.

9. Hardcoded Paths and Symlink Errors

	•	Original Issue: The script creation logic for /etc/rc and symlinks lacked checks for existing files and didn’t handle errors in creating symlinks robustly.
	•	Fix: Enhanced error handling for path operations and skipped symlinks on failure without interrupting the process.

10. Template Logic Issues

	•	Original Issue: The template method didn’t handle cases where optionSysvScript was unset properly.
	•	Fix: Added a fallback to default configuration when no custom template was provided.

11. Miscellaneous Issues

	•	Incorrect Case Logic: Fixed missing * cases in shell script templates to ensure the default behavior is handled.
	•	Magic Numbers: Replaced arbitrary values with meaningful comments and constants where appropriate.
2025-07-14 10:20:05 -05:00
Cuong Manh Le
419b81152c Add support for procd
Fixes #332
2025-07-14 10:18:14 -05:00
Bogdan Rozhkov
becf2eb62b fix: systemd service uninstall 2024-06-13 08:34:16 -05:00
Daniel Theophanes
4ac50d86f3 service: go fmt comments 2024-06-13 08:31:55 -05:00
Cuong Manh Le
9832e01049 freebsd: ensure config directory is created
Otherwise, freebsdService.Install will fail because config file could
not be created.

Fixes #359
2023-02-15 14:01:02 -06:00
Maycon Santos
3596dfaf34 Add support for Initialisation Scripts with rcS (#340)
* validate systemctl command

* validate systemctl command

* add rcS support

* only attempt to set environment if list is not empty

* check if service bin exists
2022-10-11 07:13:05 -05:00
Nate Felton
f4a4df2b5e Update launchd template (#346)
* Update XML prolog and DTD

Also converts single-quotes to double-quotes

* Remove whitespace from parent dict

* Only populate EnvironmentVariables when available

* Only add additional arguments when defined

Also cleans up whitespace around each argument

* Cleanup whitespace and only populate when defined

* Convert remaining spaces to tabs

* Sort keys. Similar to `plutil -convert xml1`
v1.2.2
2022-10-10 17:02:22 -05:00
optim-aizawa
645b10f1a8 Add EnvVars to linux init.d (#339)
* change module name

* add init.d env

* add init.d env
2022-10-10 17:00:23 -05:00
Marco Pfatschbacher
380dcf887e Replace deprecated IsAnInteractiveSession() call (#344)
Using the service manager from an remote ssh command promt fails
with
`The service process could not connect to the service controller`

Thanks to the detailed analysis from @kelseyma the fix was very straight
forward.
Using IsWindowsService() solved this problem for me.

The mentioned issue at https://github.com/golang/go/issues/44921
has also been fixed in the meantime, so there is no reason not to
use IsWindowsService() instead.

Fixes #300
2022-10-10 16:59:33 -05:00
Marco Pfatschbacher
6547573c4d Do not create windows services with an empty environment key (#343)
Doing so will create services that are broken and will fail
when started:
`Error 87: The parameter is incorrect`

This is a regression from https://github.com/kardianos/service/pull/312
2022-10-10 16:56:32 -05:00
tomfeigin
29f8c79c51 Windows access service with minimal perms (#313)
When performing actions on a service in a windows host, use the minimal
required permissions to allow non admin users to control the service
2022-04-28 07:57:17 -05:00
tomfeigin
abe98a9274 Provide custom log directory for posix (#311)
When running a service with posix, provide a custom path to the
service output
2022-04-28 07:56:17 -05:00
tomfeigin
bc65850ac5 Allow setting environment variables for services (#312)
Setting environment variables for services running with systemd, OSx or
windows
2022-04-27 07:11:36 -05:00
tomfeigin
ff1da96551 Run systemd commands with --user flag (#310)
When controlling a user service with systemd supply the --user flag
2022-04-27 07:10:17 -05:00
Ali Yousuf
ed46af2312 Replace std out/err path to an existing directory (#307) 2022-04-27 07:08:57 -05:00
Marcel Gebhardt
5c08916379 fix: use /etc/rc.d/rc2.d instead of /etc/rc2.d depending on AIX version (#317)
Co-authored-by: Codehardt <marcel.gebhardt@bsk-consulting.de>
2022-01-26 09:11:01 -06:00
chbuescher
6fe2824ee8 aix issue 242: improved test, if process runs as child of srcmstr (#302)
Co-authored-by: xca1075 <Christoph.Buescher@atruvia.de>
v1.2.1
2021-11-11 11:20:41 -06:00
Yujie.Zhao
b9d1d5b727 fix: sysv linux not support ps $pid (#299) 2021-11-04 11:38:26 -05:00
Karen Almog
a323c3813b fix for the openrc status func (#283)
* fix for the openrc status func

Signed-off-by: Karen Almog <kalmog@mirantis.com>

* openrc: exitCode parsing for better status

Signed-off-by: Karen Almog <kalmog@mirantis.com>
2021-07-27 19:15:19 -05:00
Daniel Theophanes
36c9bf8c36 fix windows build 2021-06-15 20:19:51 -05:00
Alex Collins
5f1fed4906 patch the error text to check a syscall number instead (#276) 2021-06-15 14:18:25 -05:00
Daniel Theophanes
a8dda22bce fix windows build 2021-06-10 09:36:42 -05:00
Eugene
17a2c7bcb5 Adds service control options for Windows service. (#258)
- StartType               string ("automatic")  - start service. Constants: ServiceStartDisabled, ServiceStartManual, ServiceStartDisabled
- OnFailure               string ("noaction" )  - action to perform on service failure. Constants: OnFailureRestart, OnFailureReboot, OnFailureNoAction
- OnFailureDelayDuration  string ( "1s" )       - delay before restarting the service, time.Duration string.
- OnFailureResetPeriod    int ( 10 )            - reset period for errors, seconds.

Fixes kardianos/service#226
Fixes kardianos/service#207
Fixes kardianos/service#103

Co-authored-by: Eugene <jdevelop@users.noreply.github.com>
Co-authored-by: Daniel Theophanes <kardianos@gmail.com>
2021-06-10 07:11:16 -05:00
Aram
c7e6b82e87 allow inteactive setting mode for windows (#253)
Co-authored-by: Aram <aram.petrosyan@unity3d.com>
Co-authored-by: Daniel Theophanes <kardianos@gmail.com>
2021-06-10 07:02:15 -05:00
djdv
8eb6809ed2 Add documentation for platform options and expose to Godoc (#266) 2021-06-10 06:49:49 -05:00
Arran Walker
82b10ec284 service(darwin): fix status regression (#273)
Co-authored-by: Arran Walker <ajwalker@gitlab.com>
2021-06-10 06:42:10 -05:00
Tomasz Maczukin
3b7119afcd Fix interaction with systemd (#274)
The library is using inconsistent names when calling `systemctl`
commands.

Let's say that the service is named `name`. The unit file will be
then named `name.service` - this is the popular pattern used also by
this library.

While for most common commands like `systemctl start` there is no
difference whether `name` or `name.service` will be used as the service
identifier, the `list-unit-files` command expects explicitly the unit
file name.

Currently just the name - without the `.service` suffix - is being used,
which causes the command to return no output, not match the name of the
service and finally respond the status of installed but inactive service
as `StatusUnknown` with `ErrNotInstalled` error. While `StatusStopped`
without any error is expected.

Considering `systemctl` behavior it's just easier to:

- have one method that constructs the `name.service` name,
- use it for all `systemctl` commands calls.

And this is the change that this commit is adding.
2021-06-10 06:40:54 -05:00
Karen Almog
ef35c56320 Add support for OpenRC services (alpine/busybox) (#252) 2020-12-11 08:35:37 -06:00
Daniel Theophanes
18c957a3dc service: go fmt v1.2.0 2020-11-17 11:30:05 -06:00
jhvaras
41add7e3c9 Shutdowner interface and Windows trigger (#225)
* Shutdowner interface and Windows trigger

* Updating Shutdown doc

Stop won't be called when Shutdown is.

Co-authored-by: Juan Hernandez <jhernandez@newrelic.com>
2020-11-16 08:58:05 -06:00
Oliver Kraemer
258d7b252b Run commands as user on systemd when using user service (#224) 2020-11-16 08:55:05 -06:00
Blake Rouse
60dcbae4c5 Fix issue with systemd inactive status. (#243) 2020-11-16 08:52:11 -06:00
Utkarsh Dixit
a91b404a4f service(windows): add support for delayed auto start service (#244)
* service(windows): added option flag for delayed automatic start

* service(windows): added option flag for delayed automatic start

Co-authored-by: Utkarsh Dixit <utkarsh.dixit@siemens.com>
2020-11-16 08:47:17 -06:00
pavelbazika
19f776cc5f Detection of interactive session fixed for systemd user services (#246)
Co-authored-by: Pavel Bazika <pavel.bazika@icewarp.com>
2020-11-16 08:45:35 -06:00
santosh653
5dd9ac4ef7 Update .travis.yml (#248)
Adding both Power & Intel support
arch: ppc64le/amd64
2020-11-16 08:44:20 -06:00
secDre4mer
7c688a995c chore: Add explicit AIX tag to AIX specific sources (#245)
Add an explicit AIX build restriction to the AIX specific source
files to allow Go versions <1.12 to compile the module.
2020-10-27 11:28:19 -05:00
Simon Backx
a1c091bc7f Added LimitNOFILE option in systemd configuration (#94)
Co-authored-by: Daniel Theophanes <kardianos@gmail.com>
v1.1.0
2020-06-07 11:51:47 -07:00
Jakob Borg
f5ff0fc585 Clarify Interface.Start() documentation comment (#179) 2020-06-07 11:43:39 -07:00
Daniel Theophanes
f6135ae0e8 service: do not run user service test by default (fails in CI) 2020-06-07 11:39:12 -07:00
Julius Berger
ec63d01a8d support systemd user services (#185) 2020-06-07 11:34:08 -07:00
Olivier Poitrey
14b2cc59a2 Add FreeBSD support (#197)
* Add FreeBSD support

* freebsd: use service cmd instead of rc script directly
2020-06-07 11:28:44 -07:00
Gadzev
6fb11709cd Fixed typo in function documentation 2020-06-07 11:24:57 -07:00
SteelPhase
15406c80f4 Return a better status for "activating" 2020-06-07 11:14:48 -07:00
Daniel Theophanes
095e475882 service: on windows close service handle on status 2020-06-07 11:06:18 -07:00
Daniel Theophanes
5544762d3e service/example/runner: do not check ProcessState as it may be nil
Fixes #218
2020-06-07 11:01:04 -07:00