Note

The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.

Difference between revisions of "Openrc"

From Funtoo
Jump to navigation Jump to search
Line 57: Line 57:
==== We set for openrc ====
==== We set for openrc ====
* <code><span style="color: #026d45; font-weight: bold">command</span>="PATH_TO_BIN"</code> - a full path to binary we want to start/stop.
* <code><span style="color: #026d45; font-weight: bold">command</span>="PATH_TO_BIN"</code> - a full path to binary we want to start/stop.
* <code>command_args="COMMAND LINE ARGUMENTS"</code> - command line arguments for our daemon.
* <code><span style="color: #026d45; font-weight: bold">command_args</span>="COMMAND LINE ARGUMENTS"</code> - command line arguments for our daemon.
* <code>command_args_background="COMMAND LINE ARGUMENTS"</code> - command line arguments for our daemon to background itself and/or to create a pid file.
* <code><span style="color: #026d45; font-weight: bold">command_args_background</span>="COMMAND LINE ARGUMENTS"</code> - command line arguments for our daemon to background itself and/or to create a pid file.
* <code>command_background=true</code> - tell start-stop-daemon to create a pid file and force a daemon into the background by itself.
* <code><span style="color: #026d45; font-weight: bold">command_background</span>=true</code> - tell start-stop-daemon to create a pid file and force a daemon into the background by itself.
* <code>command_user="USER:GROUP"</code> - tell start-stop-daemon to launch our daemon as specified user and group(:GROUP can be ommited).
* <code><span style="color: #026d45; font-weight: bold">command_user</span>="USER:GROUP"</code> - tell start-stop-daemon to launch our daemon as specified user and group(:GROUP can be ommited).
* <code>description="DESC TEXT"</code> - a text which is outputed on <code>/etc/init.d/SCRIPT describe</code> command.
* <code><span style="color: #026d45; font-weight: bold">description</span>="DESC TEXT"</code> - a text which is outputed on <code>/etc/init.d/SCRIPT describe</code> command.
* <code>description_CMD="CMD DESC TEXT"</code> - a text which is outputed on <code>/etc/init.d/SCRIPT describe</code> command as CMD extra command description.
* <code><span style="color: #026d45; font-weight: bold">description_CMD</span>="CMD DESC TEXT"</code> - a text which is outputed on <code>/etc/init.d/SCRIPT describe</code> command as CMD extra command description.
* <code>extra_commands="cmd1 cmd2 ..."</code> - add specified additional functions to a service script.
* <code><span style="color: #026d45; font-weight: bold">extra_commands</span>="cmd1 cmd2 ..."</code> - add specified additional functions to a service script.
* <code>pidfile="PATH_TO_PID"</code> - a full path to a pid file created by our daemon or start-stop-daemon(see command_background).
* <code><span style="color: #026d45; font-weight: bold">pidfile</span>="PATH_TO_PID"</code> - a full path to a pid file created by our daemon or start-stop-daemon(see command_background).


==== Openrc set for us ====
==== Openrc set for us ====
* <code>RC_CMD</code> - a command/action name(e.g. start/stop/status/etc).
* <code>RC_CMD</code> - a command/action name(e.g. start/stop/status/etc).
* <code>RC_SVCNAME</code> - a service script name(e.g. mydaemon.local).
* <code>RC_SVCNAME</code> - a service script name(e.g. mydaemon.local).

Revision as of 13:57, May 13, 2020

Service script

Mini howto

Let's start to write our openrc service script(/etc/init.d/mydaemon). The first line is:

#!/sbin/openrc-run

If we use another interpreter, then we may have troubles. Next we add command variable with our binary full path and the file is as follows:

#!/sbin/openrc-run

command="/usr/sbin/mydaemon"

That's all. Now our binary specified in command variable can be started with help of start-stop-daemon.

Next add description variable to supply a user some info about the service:

description="super essential service"

And /etc/init.d/mydaemon describe now shows us:

 * super essential service
 * healthcheck: no description
 * unhealthy: no description
 * cgroup_cleanup: Kill all processes in the cgroup

Great. If our service create a pid file, then we should specify it full path with pidfile variable:

pidfile="/var/run/mydaemon.pid"

This helps start-stop-daemon to detect an already running instance of mydaemon. Next add additional arguments for our daemon with help of command_args variable:

command_args="-c /etc/mydaemon.conf"

If we have special arguments to place the our daemon into the background(and/or force pidfile creation), then we should place it in command_args_background variable.

Next we can tell start-stop-daemon to launch our daemon as an unprivileged user/group with:

command_user="user:group"

Extra commands

To add additional commands we must tell openrc about it and define a function with such name:

extra_commands="cmd1"
description_cmd1="do some additional action"
cmd1() {
  ...
}

Variables reference

We set for openrc

  • command="PATH_TO_BIN" - a full path to binary we want to start/stop.
  • command_args="COMMAND LINE ARGUMENTS" - command line arguments for our daemon.
  • command_args_background="COMMAND LINE ARGUMENTS" - command line arguments for our daemon to background itself and/or to create a pid file.
  • command_background=true - tell start-stop-daemon to create a pid file and force a daemon into the background by itself.
  • command_user="USER:GROUP" - tell start-stop-daemon to launch our daemon as specified user and group(:GROUP can be ommited).
  • description="DESC TEXT" - a text which is outputed on /etc/init.d/SCRIPT describe command.
  • description_CMD="CMD DESC TEXT" - a text which is outputed on /etc/init.d/SCRIPT describe command as CMD extra command description.
  • extra_commands="cmd1 cmd2 ..." - add specified additional functions to a service script.
  • pidfile="PATH_TO_PID" - a full path to a pid file created by our daemon or start-stop-daemon(see command_background).

Openrc set for us

  • RC_CMD - a command/action name(e.g. start/stop/status/etc).
  • RC_SVCNAME - a service script name(e.g. mydaemon.local).