订阅内容
Linux 

I’m trying, Ringo. I’m trying real hard to be the shepherd – Jules Winnfield [Pulp Fiction, 1994]

For years there has been a community war in posts, threads, and tweets, where systemd is discredited and criticized, but is it really so bad? I don’t really know, but as a sysadmin, one of my main tasks is to manage and monitor the services on each of my servers, and in recent years most of the distros have implemented this systemd as standard.

Sysadmins reinvent ourselves constantly, and we are always researching and learning. So then, lets go to put hands-on systemd and develop new skills. Contrary to the traditional init, where the boot process is sequential, systemd uses the parallelization boot concept by creating sockets for the start of each service that needs it. In turn, this behavior allows it to interact with other daemons by abstracting those sockets and assigning their processes to control groups. The processes are then tracked using these control groups, rather than by their process IDs (PIDs), which translates into a simpler boot process and less time to start.

Systemd parallelized daemon start

In systemd, services are defined in unit files with their daemons and behavior directives. The /etc/systemd/system/ directory is reserved for unit files that you create or customize.

To create a service, you must create it with the form: <unit_name>.<service>.

Creating a new systemd service

This unit file starts the script indicated in the ExecStart option with the <user> set with User. If the script fails or stops, an attempt will be made to restart as indicated in the Restart option. The StandardOutput and StandardError options ensure that the script’s standard and error output will be written to the systemd log.

In my most recent experience, as an example of real-life, day-to-day, I had a server with a small web service running inside a container (yes, I know, but you know the customers). To optimize and automate the service, I created a systemd unit file for a Podman container to allows users to control the lifecycle of the container through systemctl.

systemd unit file for a podman container

After copying the unit file to /etc/systemd/system/myhttpservice.service, reload the systemd manager configuration with the command: systemctl daemon-reload. Then, you can handle the container as a systemd-managed service:

# systemctl start myhttpservice.service ← to start the container
# systemctl status myhttpservice.service ← to check the container service status
# systemctl start myhttpservice.service ← to stop the container

The container’s functionality is not affected when being managed by systemd. You can even use Podman commands to monitor the health of the container:

[root@server ~]# podman healthcheck run myhttpservice
healthy

So don’t worry. Systemd can help you, just trust it. If you want to know more:

I hope this information helps you.


关于作者

UI_Icon-Red_Hat-Close-A-Black-RGB

按频道浏览

automation icon

自动化

有关技术、团队和环境 IT 自动化的最新信息

AI icon

人工智能

平台更新使客户可以在任何地方运行人工智能工作负载

open hybrid cloud icon

开放混合云

了解我们如何利用混合云构建更灵活的未来

security icon

安全防护

有关我们如何跨环境和技术减少风险的最新信息

edge icon

边缘计算

简化边缘运维的平台更新

Infrastructure icon

基础架构

全球领先企业 Linux 平台的最新动态

application development icon

应用领域

我们针对最严峻的应用挑战的解决方案

Virtualization icon

虚拟化

适用于您的本地或跨云工作负载的企业虚拟化的未来