this post was submitted on 03 Nov 2024
61 points (98.4% liked)

Linux

48254 readers
503 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

I feel like Im dancing around perhaps the most fundamental piece of my operating system everytime I run and install software. Starting services with systemctl and checking logs with journalctl is the extent of my knowledge.

Do you know of good resources or tutorials for learning how systemd works and how to use it to run software on my desktop and servers? Thanks.

all 16 comments
sorted by: hot top controversial new old
[–] [email protected] 26 points 2 weeks ago
[–] [email protected] 10 points 2 weeks ago* (last edited 2 weeks ago) (1 children)

Next up: Learn how to create .service file, you may be able to use it from the template provided.

Then learn about target and unit

Find these on Youtube

[–] [email protected] 5 points 2 weeks ago (2 children)

Then .timer. Then .mount. Then .automount. Then .socket.

[–] [email protected] 5 points 2 weeks ago (1 children)

It seems even I have many many many things to learn still

[–] [email protected] 5 points 2 weeks ago

Then .device and .boot and .home and .gov and .co.uk

[–] [email protected] 4 points 2 weeks ago

see systemd.unit(5), systemd.service(5), systemd.socket(5), systemd.device(5), systemd.mount(5), systemd.automount(5), systemd.swap(5), systemd.target(5), systemd.path(5), systemd.timer(5), systemd.slice(5), systemd.scope(5) systemd.link(5), systemd.netdev(5), systemd.network(5) and honorable mentions podman-systemd.unit .container, .volume, .network(...again), .kube, .image, .build and .pod

[–] [email protected] 8 points 2 weeks ago

The official website has ton of documentation and external links: https://systemd.io/

And here some tutorials:

[–] [email protected] 8 points 2 weeks ago (1 children)

The best crash course I received was when I needed to translate my startup scripts into systemd services. The hands-on learning was priceless.

[–] [email protected] 3 points 2 weeks ago

I always recommend people learning by doing. But playing around with system tools to see and learn how it works is a bit risky. However in a virtual machine this is probably a good idea to see how things work.

[–] [email protected] 7 points 2 weeks ago

The arch wiki is always a good place to check for these sorts of things, whether or not you use arch btw.

[–] [email protected] 5 points 2 weeks ago

The man pages.

[–] [email protected] 4 points 2 weeks ago* (last edited 2 weeks ago)

Write a couple of your own toy services as practice. Write a one-shot that fires at a particular time during boot, a normal service that would run a daemon and a mount service that fires after its dependencies are loaded (like, say, a bind mount that sets up a directory under /run/foo after the backing filesystem is mounted - I do this to make fast ext4 storage available in some parts of the VFS tree while using a btrfs filesystem for everything else.) You can also write file watcher services that fire after changes to a file or directory, I use one of those to mirror /boot/ to /.boot/ on another filesystem so it's captured by my system snapshots.

I'd start by reading the docs so you have some ideas about what services can do, then you'll find uses that you wouldn't have thought of before.