rc.local中的命令不能执行
rc.local中的命令不能执行
2024-11-19 0 评论 0 阅读 0 点赞

rc.local中的命令不能执行

daimafengzi
2024-11-19 / 0 评论 / 0 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年11月19日,已超过592天没有更新,若内容或图片失效,请留言反馈。

问题描述

在使用较新版本的Ubuntu系统中,之前写入rc.local的开机执行命令不执行了。经探究发现,Ubuntu自18.04版本后改用systemd管理系统,不再用initd管理系统,默认也没有/etc/rc.local文件。

问题分析

  1. 先用systemctl status rc-local查看状态
    图片
  2. 设置rc-local开机自启,输出如下错误信息:

    systemctl enable rc-local

    图片
    大概意思是rc-local服务文件没有install字段的相关信息,这些相关信息包括WantedBy, RequiredBy, Also, Alias。如果不写则系统不认为它是一个systemd服务。

  3. 打开文件/lib/systemd/system/rc-local.service(如无此文件则新建),做如下配置:

    [Unit]
    Description=/etc/rc.local Compatibility
    Documentation=man:systemd-rc-local-generator(8)
    ConditionFileIsExecutable=/etc/rc.local
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/etc/rc.local start
    TimeoutSec=0
    RemainAfterExit=yes
    GuessMainPID=no
    
    [Install]
    WantedBy=multi-user.target
    # 指的是表示该服务所属 target
    Alias=rc-local.service

    其中Unit字段描述服务的启动顺序&依赖关系,Service字段描述如何启动,Install字段描述如何安装该服务。

  4. 打开/etc/rc.local输入如下内容

    echo "rc.local was executed on $(date)" >> /var/log/rc.local.log
  5. 给文件权限

    chmod +x /etc/rc.d/rc.local
  6. 重启系统

    reboot
  7. 查看日志是否有输出.有则搞定

    cat /var/log/rc.local.log
0

评论 (0)

取消