Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
NickYUyu
V2EX  ›  Linux

求教 rc.local 文件被重复执行

  •  
  •   NickYUyu · Dec 16, 2021 · 3690 views
    This topic created in 1794 days ago, the information mentioned may be changed or developed.

    为了国产化,系统安装的是中标麒麟

    将开机自启动的脚本添加到 rc.local 文件中,每次启动会执行三次,不知道说明原因

    还有一个诡异的是,每次用 xshell 新开一个窗口,也会执行 rc.local 里面的内容,而且也是三次

    WARNING! The remote SSH server rejected X11 forwarding request.
    Last login: Thu Dec 16 10:53:56 2021 from 192.168.90.101
    cd "/usr/local/se901/manager"
    hahah
    hahah
    hahah
    [root@localhost ~]# cd "/usr/local/"
    

    rc.local 文件

    #!/bin/bash
    # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
    #
    # It is highly advisable to create own systemd services or udev rules
    # to run scripts during boot instead of using this file.
    #
    # In contrast to previous versions due to parallel execution during boot
    # this script will NOT be run after all other services.
    #
    # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
    # that this script will be executed during boot.
    
    touch /var/lock/subsys/local
    
    echo "hahah"
    exit 0
    

    看网上没有这方面的坑,不知道大佬有没有遇到过,劳烦指导一下,感激不尽!!!

    15 replies  •  2021-12-20 17:21:00 +08:00
    knightdf
    knightdf
    Dec 16, 2021
    1
    为何要加一个:exit 0 ?
    ihipop
    ihipop
    Dec 16, 2021❤️1
    2
    估计是哪个全局的 profile 或者 shell 的 rc 文件 source 了这个 rc.local 可以 grep/ripgrep 全盘查找一下,如果新建一个用户没这个问题,重点查找用户主目录的那些*rc 文件
    ihipop
    ihipop
    Dec 16, 2021
    3
    @knightdf 老传统,防止上面的一些启动命令失败导致系统认为整个 rc.local 执行失败。
    knightdf
    knightdf
    Dec 16, 2021
    4
    @ihipop 好吧,我从来没加过,好像也没出啥问题
    NickYUyu
    NickYUyu
    OP
    Dec 16, 2021
    5
    @ihipop 好的 我这边排查一下看看
    julyclyde
    julyclyde
    Dec 16, 2021
    6
    可以看出这机器有很多外行在使用了……唉
    2i2Re2PLMaDnghL
    2i2Re2PLMaDnghL
    Dec 16, 2021
    7
    鉴于每个 shell 都是新进程,完全可以把 echo "hahah" 替换成打印进程树(含命令行)
    2i2Re2PLMaDnghL
    2i2Re2PLMaDnghL
    Dec 16, 2021❤️1
    8
    替换成 `pstree -as $$` 就能看到调用树了(
    NickYUyu
    NickYUyu
    OP
    Dec 16, 2021
    9
    @2i2Re2PLMaDnghL 好的 我试试 谢谢
    NickYUyu
    NickYUyu
    OP
    Dec 16, 2021
    10
    @julyclyde 是外行 没办法 工作需要
    julyclyde
    julyclyde
    Dec 17, 2021
    11
    1 启动后如果不登录,是否会执行三次
    2 xshell 窗口执行三次,检查一下 xshell 里面这个 shell 的进程名字开头是否有横线

    感觉是某个 profile 文件,用户级、系统级都有可能,里面调用了 rc.local

    进一步猜测,你的 rc.local 文件可能没有+x 权限,导致不能正常的自动执行,所以有人为了让他能执行,才添加到 profile 里去了
    EscYezi
    EscYezi
    Dec 19, 2021 via iPhone
    12
    一个思路:弄一个环境变量作为标志位,如果检测到环境变量说明被初始化过,直接退出
    julyclyde
    julyclyde
    Dec 19, 2021
    13
    @EscYezi 这是掩盖错误的做法
    NickYUyu
    NickYUyu
    OP
    Dec 20, 2021
    14
    @julyclyde 感谢指导!
    @EscYezi 感谢指导!
    julyclyde
    julyclyde
    Dec 20, 2021
    15
    @NickYUyu 最后找到原因了吗
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   921 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 20:06 · PVG 04:06 · LAX 12:06 · JFK 15:06
    ♥ Do have faith in what you're doing.