V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
NickYUyu
V2EX  ›  Linux

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

  •  
  •   NickYUyu · 2021-12-16 11:01:55 +08:00 · 2531 次点击
    这是一个创建于 833 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    进一步猜测,你的 rc.local 文件可能没有+x 权限,导致不能正常的自动执行,所以有人为了让他能执行,才添加到 profile 里去了
    EscYezi
        12
    EscYezi  
       2021-12-19 02:45:19 +08:00 via iPhone
    一个思路:弄一个环境变量作为标志位,如果检测到环境变量说明被初始化过,直接退出
    julyclyde
        13
    julyclyde  
       2021-12-19 17:52:29 +08:00
    @EscYezi 这是掩盖错误的做法
    NickYUyu
        14
    NickYUyu  
    OP
       2021-12-20 09:19:58 +08:00
    @julyclyde 感谢指导!
    @EscYezi 感谢指导!
    julyclyde
        15
    julyclyde  
       2021-12-20 17:21:00 +08:00
    @NickYUyu 最后找到原因了吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3041 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:39 · PVG 22:39 · LAX 07:39 · JFK 10:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.