V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
NickYUyu
V2EX  ›  Linux

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

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

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

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