不使用 rc.local, 怎样让 systemd 在启动后期做一些初始化操作?

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
offline
帖子: 42
注册时间: 2012-02-06 11:26

不使用 rc.local, 怎样让 systemd 在启动后期做一些初始化操作?

#1

帖子 offline » 2023-04-22 7:22

  在过去的 SysVinit 环境下,如果需要在启动的最后阶段执行一些自己的程序,那么只需在 /etc/rc.local 中添加相关信息即可,非常简单。但我不知道 systemd 有无跟 rc.local 对应的东西?用 systemd rc.local 去搜索可以找到许多方法讲述怎样让 systemd 也执行 rc.local, 并且步骤很多,显得麻烦。难道在 systemd 环境下就没有 rc.local 的对应物,可以像 SysVinit 环境下那样在启动时简单地添加自己的程序?
头像
astolia
论坛版主
帖子: 6451
注册时间: 2008-09-18 13:11

Re: 不使用 rc.local, 怎样让 systemd 在启动后期做一些初始化操作?

#2

帖子 astolia » 2023-04-22 10:55

offline 写了: 2023-04-22 7:22 用 systemd rc.local 去搜索可以找到许多方法讲述怎样让 systemd 也执行 rc.local, 并且步骤很多,显得麻烦
如果你觉得创建个带执行权限的/etc/rc.local文件都算步骤多麻烦的话,那么真没有什么“简单地添加自己的程序”的方法了
offline
帖子: 42
注册时间: 2012-02-06 11:26

Re: 不使用 rc.local, 怎样让 systemd 在启动后期做一些初始化操作?

#3

帖子 offline » 2023-04-22 11:15

astolia 写了: 2023-04-22 10:55
offline 写了: 2023-04-22 7:22 用 systemd rc.local 去搜索可以找到许多方法讲述怎样让 systemd 也执行 rc.local, 并且步骤很多,显得麻烦
如果你觉得创建个带执行权限的/etc/rc.local文件都算步骤多麻烦的话,那么真没有什么“简单地添加自己的程序”的方法了




我看网上提供的信息并非创建个 rc.local 文件就行了,而是要在 systemd 里额外增加许多东西。就让我觉得使用 rc.local 似乎不是 systemd 的“原生”做法,而似乎是为了兼容 sysvinit 用户的老习惯。当然这只是我的推断,因为我对 systemd 了解得非常少。按理来说 systemd 应该提供一种非常简单的方法,来支持用户在启动的最后阶段做一些事情。

比如看这个链接:

https://www.linuxbabe.com/linux-server/ ... th-systemd

它开头就说:

If you are running a Linux distro that uses Systemd, then you may find that your command in /etc/rc.local file would not run at system boot time. This guide explains how to enable /etc/rc.local script to run on system startup.

然后罗列了许多步骤。
offline
帖子: 42
注册时间: 2012-02-06 11:26

Re: 不使用 rc.local, 怎样让 systemd 在启动后期做一些初始化操作?

#4

帖子 offline » 2023-04-22 11:47

astolia 写了: 2023-04-22 10:55
offline 写了: 2023-04-22 7:22 用 systemd rc.local 去搜索可以找到许多方法讲述怎样让 systemd 也执行 rc.local, 并且步骤很多,显得麻烦
如果你觉得创建个带执行权限的/etc/rc.local文件都算步骤多麻烦的话,那么真没有什么“简单地添加自己的程序”的方法了




再看这个链接:

What is the correct substitute for rc.local in systemd instead of re-creating rc.local
https://unix.stackexchange.com/question ... reating-rc

很多人在讨论这个问题,我觉得为什么如此简单的事情, systemd 却弄得那么复杂。
头像
astolia
论坛版主
帖子: 6451
注册时间: 2008-09-18 13:11

Re: 不使用 rc.local, 怎样让 systemd 在启动后期做一些初始化操作?

#5

帖子 astolia » 2023-04-22 13:55

offline 写了: 2023-04-22 11:47 比如看这个链接:

https://www.linuxbabe.com/linux-server/ ... th-systemd

它开头就说:

If you are running a Linux distro that uses Systemd, then you may find that your command in /etc/rc.local file would not run at system boot time. This guide explains how to enable /etc/rc.local script to run on system startup.

然后罗列了许多步骤。
但凡你看一眼下面的第一条评论及其回复……
头像
astolia
论坛版主
帖子: 6451
注册时间: 2008-09-18 13:11

Re: 不使用 rc.local, 怎样让 systemd 在启动后期做一些初始化操作?

#6

帖子 astolia » 2023-04-22 14:06

offline 写了: 2023-04-22 11:47 很多人在讨论这个问题,我觉得为什么如此简单的事情, systemd 却弄得那么复杂。
这就是所谓的"garbage in, garbage out",当你被错误的观念先入为主洗脑后,从这个错误的前提得到的结论也是错误的
offline
帖子: 42
注册时间: 2012-02-06 11:26

Re: 不使用 rc.local, 怎样让 systemd 在启动后期做一些初始化操作?

#7

帖子 offline » 2023-04-22 14:33

astolia 写了: 2023-04-22 14:06
offline 写了: 2023-04-22 11:47 很多人在讨论这个问题,我觉得为什么如此简单的事情, systemd 却弄得那么复杂。
这就是所谓的"garbage in, garbage out",当你被错误的观念先入为主洗脑后,从这个错误的前提得到的结论也是错误的



我之前确实没拉到最下面去看评论,因为看到那么多步骤就觉得应该有更简单的方法。那个 stackexchange.com 里的链接也有人提到使用 rc.local 对于 systemd 不是一个好方法,他这么说:

Forget about rc.local

You're using a systemd+Linux operating system. /etc/rc.local is a double backwards compatibility mechanism in systemd, because it is a backwards compatibility mechanism for a mechanism that was itself a compatibility mechanism in the van Smoorenburg System 5 rc clone.

就是说那是为了兼容老的习惯。而 linuxbabe.com 最下面的评论里提到只需 chmod +x /etc/rc.local 即可,可能也是因为发行版已经帮助添加了许多 systmed 的相关服务,让用户可以直接使用 rc.local 或者说,那是某些发行版做了额外的事情,上游 systmed 本身并无直接利用 rc.local 的功能。



另外,真没必要对我进行意识形态教育吧
回复