systemd is a system and service manager for Linux.It is (retro) compatible with systemV and LSB init scripts. It is relatively new but has been widely accepted by major Linux distributions.

Frankly, at first,  I did not like it,  I saw it too complex, bulky and don’t see any shell script on the service management, but remembering the wisdom of  Master Foo Discourses on the Two Paths, i give it one opportunity and I just fell in love.

I’ll outline a few things that I find awesome about systemd, In no particular order:

1.- It don’t use Shell scripts

Ok it is not clear but systemd is faster and scale better in bootup, when we use scripts they call many times commands like grep, awk, cd, ls and others, so this execution is slow (but easy to hack).

2.-Use the units concept

One unit is a file than encodes information about a service (.service),a mount point (.mount),a device(.device), a socket (.socket), a timer (.timer) and other abstract entities, we can enable, disable, start, stop , restart, mask units. See   man systemd.unit for details.

$ sudo systemctl start unit
$ sudo systemctl stop unit
$ sudo systemctl enable unit
$ sudo systemctl disable unit

3.- We can check the system state

Just with this commands:

$ systemctl status

and list running and failed units

$ systemctl list-units
$ systemctl --failed

4.- It is hotplug capable

systemd assumes that all resources may appear and dissapear at any time, this is one of the reasons because systemd depends of dbus but right now, our systems become dynamic systems with lowest downtime when adding or removing hardware.

5.- It is modular

All of what is now rc.sysinit is split out into many independent services, each of which is well documented and easy to understand.

6.- Can deploy containers with systemd-nspawn

I talk about it in this post.

7.- The systemd timers

Timers have built-in support for calendar time events, monotonic time events, and can be run asynchronously.Timers Timers can be used as an alternative to CRON and “at command”  but timers have a more complex syntax than crontab entries but our duty as sysadmins is learn it.

8.- systemd is a cross-distro project

Every major and many, many minor distros have had people contributing to systemd, it is the default in Debian 8, Fedora, OpenSuse, Ubuntu (Leaving Upstart for systemd) and many many others distros use systemd.

9.- systemd do power management

You can poweroff, restart, suspend or hibernate using systemd. (for unprivileged users you need polkit)

$ sudo systemctl poweroff
$ sudo systemctl reboot
$ sudo systemctl suspend
$ sudo systemctl hibernate

10.- Have a build-in logging system

systemd has its own logging system called the journal; therefore, running a syslog daemon is no longer required. To read the log, use:

# journalctl

The systemd journal event notification message logging classification corresponds to classical BSD syslog protocol style (RFC 5424).

For more information about systemd:


Hello everybody,

I usually use docker or systemd-nspawn for do container stuff, both are so good, but this time we will use systemd-nspawn because it can generate a x86 environment on x86_64 architectures. This feature is important to run some programs packet on dot deb format and/or  are available only in  x86 architecture.

Now install and setup systemd- nspawn, we will create a Debian GNU/Linux based container:

$ sudo dnf -y install systemd-container debootstrap
$ mkdir debian
$ sudo debootstrap --arch=i386 testing ./debian

Some time later… configure debian container root password,

$ sudo systemd-nspawn --directory=./debian passwd

<username> will be replaced with the user name as you wish

$ sudo systemd-nspawn --directory=./debian useradd <username>
$ sudo systemd-nspawn -D ./debian apt-get update
$ sudo systemd-nspawn -D ./debian apt-get install default-jre ssh iceweasel

Booting container,logging as root and install iceweasel. Note: you need to replace ~/Downloads with the directory path where you downloaded your “program of interest”.

$ sudo systemd-nspawn -bD ./debian --bind ~/Downloads:/mnt:rbind 

Now we are inside the ontainer:

test@debian~$ export DISPLAY=:0 && iceweasel

Screenshot from 2016-07-10 10-30-03
To exit use shutdown the container as a normal debian system or kill holding Ctrl and rapidly press ] three times

As Cultural breviary, iceweasel is now firefox again, see the old notice here.