rc.local中启动的脚本在系统监视器中看不到

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rc.local中启动的脚本在系统监视器中看不到相关的知识,希望对你有一定的参考价值。

参考技术A 1、确定rc.local具有可执行权限,直接/etc/rc.local看看能不能执行。因为rc.local中已经写明了“In order to enable or disable this script just change the executionbits.”, 要让它生效只需要改变它的执行位。

2、看看当前系统的runlevel,再去对应rcX.d看看它的启动顺序,是不是有Src.local的启动项在这里面。

3、确认了前面两项,我们就可以来调试rc.local的内容了,首先第一行,默认一般是#!/bin/sh -e,查下shell编程就知道,这个是用的sh解释器,-e参数代表出错后直接退出不执行后面内容。

执行以上内容就会发现,hahaha是不会打印的。同时我们也要确认ls -l /bin/sh,来确认sh是对应的哪个解释器,因为在Ubuntu中,sh是链接在dash上。

因此在确认我们使用的SHELL解释器后,可以将-e 改成 -x或是在第二行加入set -x,这样就能将整个rc.local的执行过程打印到syslog中了,然后去查找出错的原因。

在执行某些脚本使用普通的重定向可能不生效,可以试试1 >>/tmp/xxx.log 2>&1这样的格式。

Linux 中 rc.localinit.drc.xinit 这几个文件(夹)各有什么作用?启动执行的脚本应该均放在 rc.local 中吗?

Linux 中 rc.local、init.d、rc.x、init 这几个文件(夹)各有什么作用?启动执行的脚本应该均放在 rc.local 中吗?

参考链接:

1、https://www.zhihu.com/question/20126189

2、Linux中系统变量rc.local、profile、bashrc、bash_profile之间的区别和联系

这个问题涉及到Linux初始化init系统,以下选取RHEL 5.x进行说明。

 
如流程图所示,RHEL的启动过程按步骤大致可以分为:
POST加电自检-->BIOS(Boot Sequence)-->加载对应引导上的MBR(bootloader) -->主引导设置加载其BootLoader-->Kernel初始化-->initrd—>/etc/init进程加载/etc/inittab

从加载BootLoader(RHEL下为Grub)开始,会发生以下事情.
1. 藉由Grub的管理,读取Kernel内核文件(/boot/vmlinuz),解压至主内存,利用内核的功能,进行第二次硬件检测(第一次发生在POST开机

以上是关于rc.local中启动的脚本在系统监视器中看不到的主要内容,如果未能解决你的问题,请参考以下文章

Linux开机启动程序rc.local

Linux 中 rc.localinit.drc.xinit 这几个文件(夹)各有什么作用?启动执行的脚本应该均放在 rc.local 中吗?

rc.local.如何添加目录执行

Ubuntu20.04开机运行自定义脚本

Linux开机启动文件rc.local无法执行怎么办?

openSUSE下开机自动运行脚本命令的方法