首页 > 其他分享 >重启rc.local没执行解决方法

重启rc.local没执行解决方法

时间:2023-09-04 18:12:35浏览次数:31  
标签:systemd forking 重启 etc rc 进程 local

背景:

在早期的 SysV init 系统中,/etc/rc.local 是在所有其他 init 脚本执行完毕后自动执行的一个脚本,为系统管理员提供了一个在系统启动时运行自定义命令的便捷方法。

随着 systemd 成为许多主流 Linux 发行版的默认 init 系统,因为systemd 使用服务单位(unit files)来控制启动进程,而不是传统的 init 脚本。所以/etc/rc.local 不再自动开机执行了。

但是为了兼容使用习惯,许多基于 systemd 的系统提供了一个名为 rc-local.service 的特殊服务,它专门用于执行 /etc/rc.local 脚本。这样,那些还依赖于 /etc/rc.local 的系统管理员或旧的应用程序仍然可以在 systemd 环境中运行它。

systemctl status rc-local.service 

image

[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local #  当文件是可执行的时,这个服务才会启动
After=network.target

[Service]
Type=forking  # 启动模式为forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes # 指定的进程已经退出,服务的状态仍然会被视为 "active"。
GuessMainPID=no

rc.local脚本的systemd文件使用forking这种启动模式的原因:
因为rc.local脚本里面可以放一系列的命令、或者后台进程、守护进程等。选择 forking 类型可以让 systemd 更好地处理这种情况,因为很多传统的守护进程在启动时都会 fork。

例如:

vim /etc/rc.local
#!/bin/sh -e
echo "hell world"
exit 0

在这种情况下,systemd会看到主进程(也就是此脚本)已经成功地退出并返回了退出码0。因此,当你使用forking类型的服务描述符来启动这个脚本时,systemd会认为rc-local.service服务已经成功启动。

forking类型的服务描述符预期服务在其启动过程中至少进行一次fork操作,且原始进程(即由ExecStart启动的进程)在初始化完成后退出。这通常是传统的UNIX守护进程的行为。
然而,如示例所示,如果一个脚本或程序并没有进行fork操作,但仍然正常退出(例如返回退出码0),systemd仍然会认为这个服务按预期启动了,即使实际上并没有任何后台进程在运行。

标签:systemd,forking,重启,etc,rc,进程,local
From: https://www.cnblogs.com/heyongshen/p/17677749.html

相关文章

  • ARC153
    ARC153A直接枚举所有的美丽数即可#include<bits/stdc++.h>usingnamespacestd;vector<int>V;signedmain(){//freopen("date.in","r",stdin);//freopen("date.out","w",stdout);for(inti1=1;i1<=9;i1++......
  • Shell脚本Kill并重启进程
    #!/bin/bashJAR_PATH=kill.jarPID=$(ps-ef|grep$JAR_PATH|grep-vgrep|awk'{print$2}')if[-z$PID]thenecho"serviceisalreadystopped"elseecho"kill$PID"kill-9$PIDfisleep1nohupjava-jar......
  • 软件测试 | Selenium-RC工作原理
    我们描述Selenium-RC组件是如何运转的,以及它们在测试案例运行过程中扮演什么角色。1.RC组件Selenium-RC组件包括:SeleniumServer,它负责启动和关闭浏览器,解释和运行从测试程序传来的Selenium命令,就像一个HTTP代理一样。截取和验证浏览器与待测应用(AUT)之间的HTTP消息;客户端库文件提供......
  • java时间类LocalDateTime的前世今生
                                                                        1.日期类API导学设计初衷:Java原本自带的java.util.Date和......
  • ThreadLocal:线程中的全局变量 | 京东云技术团队
    最近接了一个新需求,业务场景上需要在原有基础上新增2个字段,接口新增参数意味着很多类和方法的逻辑都需要改变,需要先判断是否属于该业务场景,再做对应的逻辑。原本的打算是在入口处新增变量,在操作数据的时候进行逻辑判断将变量进行存储或查询。如果全链路都变更入参和结构,很明显代码......
  • elasticsearch.yml 配置详解
    #####################ElasticsearchConfigurationExample#######################只是挑些重要的配置选项进行注释,其实自带的已经有非常细致的英文注释了!#https://www.elastic.co/guide/en/elasticsearch/reference/current/modules.html##########################......
  • 【刷题笔记】35. Search Insert Position
    题目Givenasortedarrayandatargetvalue,returntheindexifthetargetisfound.Ifnot,returntheindexwhereitwouldbeifitwereinsertedinorder.Youmayassumenoduplicatesinthearray.Example1:Input:[1,3,5,6],5Output:2Example2:I......
  • Scheduling and Resource Allocation
    ModuleaimsReal-lifeproblemsarisingincomputerscience,computationalmanagementandeconomicsofteninvolvedecidingthebestwaytouseagivensetofresources(e.g.,servers,networks,routes)tocompleteadesiredsetoftaskswithinconstraints......
  • ThreadLocal:线程中的全局变量
    最近接了一个新需求,业务场景上需要在原有基础上新增2个字段,接口新增参数意味着很多类和方法的逻辑都需要改变,需要先判断是否属于该业务场景,再做对应的逻辑。原本的打算是在入口处新增变量,在操作数据的时候进行逻辑判断将变量进行存储或查询。如果全链路都变更入参和结构,很明显代......
  • maven-resources-production:webapi: java.lang.NegativeArraySizeException
    maven-resources-production:webapi:java.lang.NegativeArraySizeException打开项目启动时,发现报这个错误,基于此,我分析了一下,首先原本好好的项目突然这样子,首先查看代码更新的情况,发现代码并没有作任何变化。分析代码jar包的问题,首先mvnclean和mvninstall直接一起上。代码可......