Writing Init Scripts: Difference between revisions
Clandmeter (talk | contribs) (→Basics) |
Clandmeter (talk | contribs) (→Basics) |
||
Line 13: | Line 13: | ||
<code>man openrc-run</code> | <code>man openrc-run</code> | ||
== | == Mandatory == | ||
Every init.d script you write needs to start with a [https://en.wikipedia.org/wiki/Shebang_(Unix) shebang] like: | Every init.d script you write needs to start with a [https://en.wikipedia.org/wiki/Shebang_(Unix) shebang] like: |
Revision as of 09:26, 20 May 2017
This material is work-in-progress ... Do not follow instructions here until this notice is removed. |
Introduction
Alpine Linux uses the OpenRC init system to start services. Don't confuse OpenRC init with out system init (the first process that is executed aka pid 1). Many of the current init.d script found in Alpine Linux are takes from Gentoo. If you want to save time you could search Gentoo's repository for an existing initscript for your service. You can also check Gentoo's wiki for some additional OpenRC information.
If you cannot find an init.d script from Gentoo, or you just want to start to write your own init.d scripts, we provide you with some basic information on how to write simple OpenRC init scripts.
Primary information about the OpenRC format can be found in the OpenRC man page openrc-run.
apk add openrc-doc man
man openrc-run
Mandatory
Every init.d script you write needs to start with a shebang like:
#!/sbin/openrc-run
The only mandatory variable needed to be defined for OpenRC is:
command=
The rest of the below simple example could be omitted, but that would most probably leave you with an non working initd script.
Basic example
#!/sbin/openrc-run name=$RC_SVCNAME command="/usr/bin/my_daemon" command_args="--my-daemon-args" pidfile="/run/$RC_SVCNAME/$RC_SVCNAME.pid" command_user="my_system_user" start_stop_daemon_args="--args-for-start-stop-daemon" command_background="yes" depend() { need net } start_pre() { checkpath --directory --owner $command_user:$command_user --mode 0775 \ /run/$RC_SVCNAME /var/log/$RC_SVCNAME }
Using start-stop-daemon
To be written
start() { ebegin "Starting mydaemon" start-stop-daemon --start \ --exec /usr/sbin/mydaemon \ --pidfile /var/run/mydaemon.pid \ -- \ --args-for-mydaemon eend $? }