11# relaunchd
22
33![ Linux CI] ( https://github.com/mheily/relaunchd/actions/workflows/ci-linux.yml/badge.svg )
4- ![ CodeQL] ( https://github.com/mheily/relaunchd/workflows/CodeQL/badge.svg )
54[ ![ Coverity] ( https://scan.coverity.com/projects/8002/badge.svg )] ( https://scan.coverity.com/projects/mheily-relaunchd )
5+ ![ CodeQL] ( https://github.com/mheily/relaunchd/workflows/CodeQL/badge.svg )
66
77## Overview
88
9- relaunchd is a service management daemon that is similar to the launchd(8)
10- facility found in the Darwin operating environment [ 1 ] .
9+ relaunchd is an open-source service manager that is similar to the ` launchd(8) `
10+ system found in macOS .
1111
1212It was written from scratch based on the published API, and all code is
1313available under the ISC license. See the LICENSE file for more information.
1414
15- It is currently under heavy development, and should not be used for anything
15+ It is currently under development, and should not be used for anything
1616important. Be especially mindful that there is NO WARRANTY provided with this
1717software.
1818
@@ -31,31 +31,23 @@ relaunchd has been built on the following platforms:
3131The core functionality is working:
3232* loading and unloading jobs with launchctl
3333* launching jobs
34- * socket-activated jobs via the Sockets key
3534* periodic jobs that use the StartInterval key
36-
37- There are some new features not found in the original launchd:
38- * JSON is used instead of XML
39- * a wrapper library that allows programs to use socket activation without
40- modifying the source code.
41-
42- Some things are not implemented yet:
43- * cron emulation (see issue #17 )
44- * file and directory watches (see issue #25 )
45- * resource limits (see issue #27 )
46- * LaunchOnlyOnce (see issue #28 )
47- * inetdCompatibility (see issue #29 )
35+
36+ Some things are not implemented yet, such as:
37+ * StartCalendar cron emulation
38+ * file and directory watches
39+ * resource limits
40+ * LaunchOnlyOnce
41+ * inetdCompatibility
4842
4943Some things will probably never be implemented:
5044* oddities - LimitLoadToHosts, LimitLoadFromHosts
5145* kernel and launchd debugging - Debug, WaitForDebugger
5246* Mach IPC
5347* the StartOnMount key - may require kernel support for filesystem mount
5448 notifications
55- * the original XML plist format; use JSON instead.
5649* hacks and workarounds - HopefullyExitsFirst, HopefullyExitsLast
5750* Darwin-specific things - EnableTransactions
58- * legacy keys - Disabled, OnDemand
5951
6052## Building from source
6153
@@ -85,24 +77,10 @@ The basic commands to build and install the software are:
8577 make
8678```
8779
88- You can check the current build status by visiting the
89- [ Travis CI dashboard] ( https://travis-ci.org/mheily/relaunchd/builds ) .
90-
91- ## Socket activation
92-
93- relaunchd uses a different mechanism for socket activation than the one that
94- Darwin uses.
95-
96- TODO -- document this
97-
9880## Installation
9981
100- Currently, relaunchd has only been tested on FreeBSD, but should be portable
101- to other BSD operating systems.
102-
103- To install relaunchd, run the following commands:
82+ To install relaunchd, run the following command in the build directory:
10483
105- make
10684 sudo make install
10785
10886This will install the following executable commands:
@@ -117,48 +95,7 @@ It will also install the following manpages:
11795
11896## Usage
11997
120- To start launchd, run the following command as root:
121-
122- service launchd start
123-
124- If you want to run jobs in your graphical user session, add the following lines to
125- your session startup file:
126-
127- launchctl load ~/.launchd/agents /usr/local/etc/launchd/agents /usr/local/share/launchd/agents
128-
129- ## Differences with Darwin launchd
130-
131- There are some specific design choices that make relaunchd different from the
132- or iginal launchd found in Darwin.
133-
134- The original launchd uses friendly MacOS-style names for the directories where
135- its configuration files are stored. For example, one of the directories is
136- named /System/Library/LaunchDaemons. Relaunchd uses more traditional lowercase
137- names, and stores it's files in:
138-
139- $HOME/.launchd/agents
140- /usr/local/etc/launchd/agents
141- /usr/local/etc/launchd/daemons
142- /usr/local/share/launchd/daemons
143- /usr/local/share/launchd/agents
144-
145- On FreeBSD, there is no compelling reason to have launchd run as pid #1 , so
146- relaunchd is designed to be started by the traditional init(8) command.
147- Relaunchd currently coexists with the /etc/rc mechanism, until such time as all
148- of the /etc/rc.d scripts can be converted to launchd jobs.
149-
150- Instead of using the XML plist format, job manifests are specified using JSON.
151-
152- In the Darwin implementation, there is a single launchd(8) process that is
153- accessible to all user accounts. In relaunchd, there is a "system launchd"
154- process that runs as root and is not accessible by unprivileged users. Each
155- unprivileged user may run their own launchd process under their own UID.
156-
157- In the Darwin implementation, the StartCalendarInterval key can be a hash
158- or an array of hashes. In relaunchd, only a hash is acceptable.
159-
160- In the Darwin implementation, the Umask key is a decimal integer.
161- In relaunchd, octal notation is used, but converted to a string.
98+ After installing relaunchd, you can start the daemon by simply running ` launchd ` .
16299
163100## Sanitizers
164101
@@ -167,11 +104,8 @@ the option `-DENABLE_ASAN=YES` when calling CMake.
167104
168105## Static Analysis
169106
170- Coverity scan reports for relaunchd are available at:
171- https://scan.coverity.com/projects/mheily-relaunchd?tab=overview
172-
173- When new releases are created, they will be submitted to Coverity
174- to re-run the static analyzer.
107+ [ Coverity scan reports] ( https://scan.coverity.com/projects/mheily-relaunchd?tab=overview )
108+ for relaunchd are available.
175109
176110## Contact Information
177111
0 commit comments