一、system介绍
systemd配置文件
systemd中这些资源分别代表着不同的单元(Unit)。systemd 总共有 11 种不同类型的“单元”。单元封装了与系统启动和维护相关的各种对象。systemd通过这些Unit的配置文件,知道怎么启动这些Unit。
提供以下单位类型:
1.服务单元(systemd.service):启动和控制守护进程及其组成的进程。
2.套接字单元(systemd.socket):它封装了系统中的本地 IPC 或网络套接字,对于基于套接字的激活很有用。
3.目标单元(systemd.target):可用于对单元进行分组,或在启动期间提供众所周知的同步点。
4.设备单元(systemd.device):在 systemd 中公开内核设备,并可用于实现基于设备的激活。
5.挂载单元(systemd.mount):控制文件系统中的挂载点。
6.自动挂载单元(systemd.automount):提供自动挂载功能,用于按需挂载文件系统以及并行启动。
7.定时器单元(systemd.timer):对于触发基于定时器的其他单元的激活很有用。
8.交换单元(systemd.swap):与挂载单元非常相似,封装了操作系统的内存交换分区或文件。
9.路径单元(systemd.path):当文件系统对象更改或修改时,路径单元可用于激活其他服务。
10.切片单元(systemd.slice):可用于将管理系统进程的单元(例如服务和范围单元)分组到分层树中,以用于资源管理。
11.范围单元(systemd.scope):类似于服务单元,但管理外部进程而不是启动它们。
单元文件是从编译期间确定的一组路径加载的,如右表中所述。在前面列出的目录中找到的单元文件会覆盖列表中较低目录中的同名文件。
一个.Service配置文件分为三部分:
Unit:定义该服务作为Unit角色时相关的属性
Service:定义本服务相关的属性
Install:定义本服务在设置服务开机自启动时相关的属性。换句话说,只有在创建/移除服务配置文件的软链接时,Install段才会派上用场。这一配置段不是必须的,当未配置[Install]时,设置开机自启动或禁止开机自启动的操作将无任何效果
二、
在终端中输入 ps ax | grep systemd,看到第一行,其中的数字 1 表示它的进程号是1,也就是说它是 Linux 内核发起的第一个程序
若某个单元被禁用了,您可以先通过 systemctl enable 加上该单元名的方式将其启用。这种做法会为该单元创建一个符号链接,并将其放置在当前启动目标的 .wants 目录下,这些 .wants 目录在/etc/systemd/system 文件夹中。)
还有两个有用的命令是 systemctl restart 和 systemctl reload,后面接单元名。后者用于让单元重新加载它的配置文件。Systemd 的绝大部分都有良好的文档,因此您可以查看手册 (man systemctl) 了解每条命令的细节。
root@ubuntu:/etc/systemd/system# ll
total 120
drwxr-xr-x. 1 root root 4096 Jan 29 08:42 ./
drwxr-xr-x. 1 root root 4096 Jan 29 08:42 …/
lrwxrwxrwx. 1 root root 9 Jan 29 08:42 alsa-restore.service -> /dev/null
lrwxrwxrwx. 1 root root 9 Jan 29 08:42 alsa-state.service -> /dev/null
lrwxrwxrwx. 1 root root 9 Jan 29 08:42 alsa-store.service -> /dev/null
lrwxrwxrwx. 1 root root 9 Jan 29 08:42 alsa-utils.service -> /dev/null
lrwxrwxrwx. 1 root root 9 Jan 29 08:42 apt-daily.service -> /dev/null
drwxr-xr-x. 2 root root 4096 Jan 29 08:42 basic.target.wants/
drwxr-xr-x. 2 root root 4096 Jan 29 07:59 bluetooth.target.wants/
lrwxrwxrwx. 1 root root 42 Jan 29 07:52 dbus-fi.w1.wpa_supplicant1.service -> /lib/systemd/system/wpa_supplicant.service
lrwxrwxrwx. 1 root root 37 Jan 29 07:59 dbus-org.bluez.service -> /lib/systemd/system/bluetooth.service
lrwxrwxrwx. 1 root root 44 Jan 29 07:40 dbus-org.freedesktop.resolve1.service -> /lib/systemd/system/systemd-resolved.service
lrwxrwxrwx. 1 root root 45 Jan 29 07:40 dbus-org.freedesktop.timesync1.service -> /lib/systemd/system/systemd-timesyncd.service
drwxr-xr-x. 2 root root 4096 Jul 31 2020 default.target.wants/
drwxr-xr-x. 2 root root 4096 Jan 29 07:41 dev-hwrng.device.wants/
lrwxrwxrwx. 1 root root 9 Sep 27 2023 display-manager.service -> /dev/null
drwxr-xr-x. 2 root root 4096 Jan 29 08:42 docker.service.d/
drwxr-xr-x. 2 root root 4096 Jan 29 07:52 emergency.target.wants/
drwxr-xr-x. 2 root root 4096 Jan 29 07:40 getty.target.wants/
drwxr-xr-x. 2 root root 4096 Jan 29 08:03 graphical.target.wants/
lrwxrwxrwx. 1 root root 9 Jan 29 08:39 grub-initrd-fallback.service -> /dev/null
-rw-r–r–. 1 root root 135 Dec 31 2012 ‘mlnx_interface_mgr@.service’
drwxr-xr-x. 2 root root 4096 Jan 29 08:42 multi-user.target.wants/
drwxr-xr-x. 2 root root 4096 Jan 29 08:42 network-online.target.wants/
drwxr-xr-x. 2 root root 4096 Jan 29 08:41 _init.target.wants/
lrwxrwxrwx. 1 root root 9 Jan 29 08:42 _network_configure.service -> /dev/null
lrwxrwxrwx. 1 root root 9 Jan 29 08:42 _nvlog_client_daemon.service -> /dev/null
lrwxrwxrwx. 1 root root 9 Jan 29 08:42 _rootfs_expand.service -> /dev/null
lrwxrwxrwx. 1 root root 9 Jan 29 08:42 _vbios_update.service -> /dev/null
lrwxrwxrwx. 1 root root 9 Jan 29 08:42 ondemand.service -> /dev/null
drwxr-xr-x. 2 root root 4096 Jan 29 07:52 remote-fs.target.wants/
drwxr-xr-x. 2 root root 4096 Jan 29 07:52 rescue.target.wants/
drwxr-xr-x. 2 root root 4096 Jan 29 08:42 ‘serial-getty@.service.d’/
drwxr-xr-x. 2 root root 4096 Jan 29 07:52 sleep.target.wants/
lrwxrwxrwx. 1 root root 41 Jan 29 07:59 smartd.service -> /lib/systemd/system/smartmontools.service
drwxr-xr-x. 2 root root 4096 Jan 29 08:42 smartd.service.d/
drwxr-xr-x. 2 root root 4096 Jan 29 08:42 sockets.target.wants/
drwxr-xr-x. 2 root root 4096 Jan 29 08:42 ssh.service.wants/
lrwxrwxrwx. 1 root root 31 Jan 29 07:59 sshd.service -> /lib/systemd/system/ssh.service
drwxr-xr-x. 2 root root 4096 Jan 29 08:42 sysinit.target.wants/
lrwxrwxrwx. 1 root root 35 Jan 29 07:41 syslog.service -> /lib/systemd/system/rsyslog.service
drwxr-xr-x. 2 root root 4096 Sep 27 2023 .target.wants/
drwxr-xr-x. 2 root root 4096 Jul 31 2020 timers.target.wants/
lrwxrwxrwx. 1 root root 9 Jan 29 08:42 upower.service -> /dev/null
三、
利用systemctl添加自定义系统服务
systemctl脚本存放在:/usr/lib/systemd/,有 系统(system)和用户(user) 之分,像需要 开机不登陆就能运行 的程序,还是存在系 统服务里 吧,即:/usr/lib/systemd/system目录下
/etc/systemd/system和/usr/lib/systemd/system 的区别
Systemd 默认从目录/etc/systemd/system/读取配置文件。
但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配置文件存放在那个目录。 systemctl enable 命令用于在上面两个目录之间,建立符号链接关系。
使用如下软链接命令 sudo ln -s /usr/lib/systemd/system/clamd@scan.service /etc/systemd/system/multi-user.target.wants/clamd@scan.service
然后重启systemd, systemctl daemon-reload
等同于加入开机启动项 sudo systemctl enable clamd@scan.service
如果配置文件里面设置了开机启动,systemctl enable命令相当于激活开机启动。与之对应的,systemctl disable命令用于在两个目录之间,撤销符号链接关系,相当于撤销开机启动。
1、区别:
/usr/lib/systemd/system/ 软件包安装的单元
/etc/systemd/system/ 系统管理员安装的单元, 优先级更高
2、优先级:
systemd的使用大幅提高了系统服务的运行效率, 而unit的文件位置一般主要有三个目录:
/etc/systemd/system
/run/systemd/system
/lib/systemd/system
这三个目录的配置文件优先级依次从高到低,如果同一选项三个地方都配置了,优先级高的会覆盖优先级低的。
系统安装时,默认会将unit文件放在/lib/systemd/system目录。如果我们想要修改系统默认的配置,比如nginx.service,一般有两种方法:
1)在/etc/systemd/system目录下创建nginx.service文件,里面写上我们自己的配置。
2)在/etc/systemd/system下面创建nginx.service.d目录,在这个目录里面新建任何以.conf结尾的文件,然后写入我们自己的配置。推荐这种做法。
/run/systemd/system这个目录一般是进程在运行时动态创建unit文件的目录,一般很少修改,除非是修改程序运行时的一些参数时,即Session级别的,才在这里做修改。
原文链接:https://blog.csdn.net/qq_43287763/article/details/128199285