查找/etc/etc rc.d rc.local下文件为rc的文件并复制到当前目录

linux中/etc/rc.d/rc.local是什么文件_百度知道
linux中/etc/rc.d/rc.local是什么文件
您好!Linux中有7种启动级别运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆运行级别2:多用户状态(没有NFS)运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式运行级别4:系统未使用,保留运行级别5:X11控制台,登陆后进入图形GUI模式运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动在/etc/rc.d下有7个名为rcN.d的目录,对应系统的7个运行级别系统会根据指定的运行级别进入对应的rcN.d目录,并按照文件名顺序检索目录下的链接文件&对于以K开头的文件,系统将终止对应的服务&对于以S开头的文件,系统将启动对应的服务其中rc.sysinit是系统初始化脚本,rc.local是给用户自定义启动时需要执行的文件。
其他类似问题
为您推荐:
rc.d/etc&#47这是使用者自订开机启动程序 (&#47
启动加载文件。
etc的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁当前位置: >
linux下/etc/rc.local开机不执行问题的解决办法
时间: 10:42 来源:网络整理 作者: 阅读:次
因项目需要写了个开机启动其他程序的shell脚本,放在/etc/rc.local中执行。
服务器重启后,发现竟然没有执行。
手动执行都是正确的,在排除了权限原因和脚本问题后,很郁闷,怎么放到开机启动项目中就无法执行了呢。
于是去查linux开机启动过程信息。经过一番折腾,看了下关于一些开机启动启的资料,发现了开机启动程序的级别为3.
果断顺藤莫瓜,找到了这个目录 /etc/rc.d/rc3.d,进去一看恍然大悟。
我的rc.local文件是在 /etc/rc.local中(网上都是说写在这里,我是按照网上来弄的),而我查看了系统指向rc.local文件的路径是 /etc/rc.d/rc.local
后来把开机启动的脚本配置到/etc/rc.d/rc.local中(或者把S99local指向 /etc/rc.local也行),重启检查,成功!Linux 中 rc.local、init.d、rc.x、init 这几个文件(夹)各有什么作用?启动执行的脚本应该均放在 rc.local 中吗?
希望各位能讲清楚通俗些,最好能结合linux启动过程讲哈,我对这个问题似懂非懂,谢了。
按投票排序
这个问题涉及到Linux初始化init系统,RHEL 5为SysVinit,RHEL 6为Upstart,RHEL 7为Systemd,为更好地解释这个问题,以下选取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开机自检时)2.
加载Initial RAM Disk(/boot/initrd),使之在内存中解压缩为根目录,kernel藉此完成驱动程序的加载,,最终释放虚拟文件系统,并挂载实际的根目录文件系统.3.
在核心加载完毕,进行完硬件侦测与驱动程序加载后,内核会启动第一个进程/sbin/init,
init进程将会读取/etc/inittab,在/etc/inittab中,大致规定了以下动作:取得 runlevel 亦即默认运行等级的相关等级.使用 /etc/rc.d/rc.sysinit 进行系统初始化根据runlevel调用相关启动脚本,以启动相应的系统服务其他一些系统设置,最终完成系统启动./sbin/init 最主要的功能就是准备软件运行的环境,包括系统的主机名称、网络配置、语系处理、文件系统格式及其他服务的启动等,而所有的动作都根据在/etc/inittab中的配置./etc/rc.d, 里面存放了rc.local,
rc.sysinit,
(X包括0-6对应相对runlevel)/etc/rc.d/init.d, 存放了各种系统服务的启动关闭的管理脚本,/etc/init.d是他的一个目录链接./etc/rc.d/rcX.d, 里面存放了一些脚本,脚本名字以K开头的,表示STOP动作,名字以S开头,表示Start动作,名称中的数字表示执行次序,数字越小表示越先执行./etc/rcX.d是他的目录链接,但事实上rcX.d下文件本身就是指向/etc/rc.d/init.d下脚本的链接文件./etc/rc.d/rc.local, 有一个链接文件,路径在/etc/rc.local,系统根据runlevel启动完rcX.d中的脚本之后,会调用rc.local脚本,如果你有一个脚本命令不论在3和5都想开机启动,那么就添加与此,免去rc3.d和rc5.d分别增加启动脚本工作量.
Linux各发行版的启动方式是有些许差异的,网上流传最经典的就是红帽系了。我想对这个问题的陈述一点浅见。以下内容如有理解不当的地方,还请各位批评指正。红帽系的linux启动过程如 @杨小浩 老师的图形所示。和楼主问题最相关的是图中最后一个过程,可以简要的归纳为:根据/etc/inittab启动init进程init进程执行/etc/rc.d/rc.sysinitinit进程完成run-level之间的各个服务启动(在/etc/rc.d/rcN.d下有一堆软连接l指向/etc/rc.d/init.d)init进程执行/etc/rc.d/rc.local(在/etc/rc.d/rcN.d下有一个软连接S99local指向/etc/rc.d/rc.local)init进程完成tty这里init过程涉及到若干初始化的配置文件、脚本、目录,这些初始化相关的配置文件、脚本、目录看起来似乎并没有太多层次感(注意:仅仅是看起来似乎是没有层次感),这可能也是困扰楼主的地方。老师教导我们分析问题,应该先抓住主要矛盾——这些繁杂的文件有一个主线,那就是/etc/inittab这个文件。inittab详细规划、控制了启动的详细过程。掌握了inittab,才能对这些繁杂的文件目录树有一个基本的了解。至于inittab的详细语法、内容请自行man。简要的说(不够准确),linux的inittab过程可以归结为三大步骤:系统初始化:rc.sysinit服务启动:rc N 启动rcN.d下的服务本地初始化:rc.local如果楼主曾细心观察过inittab源代码,楼主应该会好奇第三个步骤rc.local是如何被inittab控制调用的,甚至也许会对第三个过程是否真正发生提出质疑。我们稍后会在后文再行讨论这个问题。考虑到这些配置文件、目录、程序有各种乱七八糟的link,建议先抛开繁复的文件链接不管,得到如下的主干层次结构(#字符后面注解了楼主提到个各类文件的作用):/etc/inittab
#初始化的主干文件/etc/rc.d
#初始化的相关rc文件目录,下面有五个文件夹/etc/rc.d/rc.sysinit
#系统初始化程序/etc/rc.d/rc
#相应启动级别下的关键初始化程序,用以执行相应/etc/rc.d/rcN.d下的所有程序/etc/rc.d/rcN.d/
#N取值范围为[0,6],含有各类S和K开头的软连接文件,软连接至rc.d/init.d/下各类服务和rc.local脚本/etc/rc.d/init.d/
#含有各类服务程序/etc/rc.d/rc.local
#本地初始化程序
其中/etc/rc.d 目录下这五个文件夹一定程度上代表了inittab的启动内容,其中,rc.sysinit和rc这两个程序最为关键。启动过程首先是rc.sysinit,最后是rc.local,中间是通过rc N 程序调用etc/rc.d/rcN.d下的指向etc/rc.d/init.d下的程序软连接。(暂未考虑tty)。到这里,楼主的问题基本算解决了。但是且慢,rc.local是如何发生作用的?我们说inittab规划了初始化的详细过程,但是inittab中为什么没有规划rc.local调用的相关设定?这个问题的关键在于上文提到的相关目录层级中的相应rc级别下的关键初始化程序/etc/rc.d/rc,这个程序接收一个0-6范围内的整数,执行rcN.d下的服务脚本(inittab的第二大步骤),而在rcN.d下有一个软连接S99local指向了rc.local(inittab的第三大步骤)。因此严格来说,inittab的第三步骤实际发生在第二步骤内,这也是rc.local得以执行的关键。至于Ubuntu,这个发行版的Linux并没有inittab这个表。原因是他们认为上文这种依次执行的串行方式费时,于是采用了upstart的基于event的方式。类似的,Ubuntu也有相应的配置文件,具体的相关名字、目录层级记得不太清楚了,由于手头暂时没有可用的Ubuntu机器,暂时不敢胡言乱语。请楼主和各位批评、指正。
启动过程每个不同的Linux发行版有些许的不同,参照ArchLinux的启动过程,简单描述如下:1. Boot Loader(如Grub) 加载Linux内核镜像2. Linux内核加载初始内存文件系统(intramfs),并执行/init进程,这是系统中的第一个进程。3. 内核模块初始化完毕后,真正的物理文件系统加载,/sbin/init进程替换之前启动的/init进程。4. init进程读取/etc/inittab,开始执行各种初始化脚本下面是ArchLinux的启动脚本执行的过程(BSD-Style),和其他发行版有一定的区别5. 首先执行的是/etc/rc.sysinit6. 根据Run Level,执行/etc/rc.single(1或S)或者/etc/rc.multi(2-5),在这一步,就会执行/etc/rc.d下所有的脚本7. 最后执行/etc/rc.localArchLinux的系统启动脚本是很简单,不像Redhat。不清楚其他的发行版启动过程,但是/etc/inittab文件应该是一样的功能,就是控制在不同的Run Level中如何进行系统脚本启动。
下面是我的理解:init
文件名,指的是系统启动的第一个脚本init.d
目录名,目录内放的是各个服务的启动脚本,比如sshd、httpd等rcX.d
目录名,后面的X代表着每个运行级别。目录内有每个服务在init.d内启动脚本的链接文件,根据链接文件的名字来的启动状态。K开头表示不启动服务,S打头表示启动服务rc.local 链接文件,指到/etc/rc.d/rc.local。是系统初始化及服务均启动完毕后,最后执行的一个脚本,一些简单的脚本可以放到其中
LZ提到的是关于Linux启动这些脚本可以参考IBM上刘明工程师写的文档()另:rc是UNIX的SysVinit方式的启动脚本,已经很古老了;在ubuntu等使用的的Upstart方式中得到了兼容(参考:)但如archlinux或是CentOS7采用了更激进更linux特色的systemd方式,(参考:)这种方式下根本没有init.d或是rc.local。
说一下Ubuntu 上的启动方式,以及这些文件夹的作用Ubuntu 采用了一个新的启动方式 Upstart 代替基于System V的启动方式。init 程序启动以后会查看 /etc/init/文件夹下的配置文件,此类以 .conf 结尾的文件类似于注意函数之类的东西,其中有以 rc 开头的配置文件用来兼容以 System V 启动方式,从这几个文件可以向下摸,就能找到其它几个文件夹的作用。init.d是一些程序或者程序的链接,rcX.d是一些指向init.d下程序的有特殊命令规范的一些链接。程序 rc 要根据rcX.d 文件命名来启动一部分程序。(这里说的有点乱,其实就是System V的启动方式)而 /etc/init/下的配置文件应该一看就明白了!breaker@breaker-linux:~$ ls /etc/init/rc*/etc/init/rc.conf
/etc/init/rcS.conf
/etc/init/rc-sysinit.conf breaker@breaker-linux:/etc/init$ cat -n rc.conf
1 # rc - System V runlevel compatibility
3 # This task runs the old System V-style rc script when changing between
4 # runlevels.
6 description "System V runlevel compatibility"
"Scott James Remnant &&"
9 emits deconfiguring-networking
10 emits unmounted-remote-filesystems
12 start on runlevel [0123456]
13 stop on runlevel [!$RUNLEVEL]
15 export RUNLEVEL
16 export PREVLEVEL
18 console output
19 env INIT_VERBOSE
23 exec /etc/init.d/rc $RUNLEVELbreaker@breaker-linux:/etc/init$ cat -n rc-sysinit.conf
1 # rc-sysinit - System V initialisation compatibility
3 # This task runs the old System V-style system initialisation scripts,
4 # and enters the default runlevel when finished.
6 description "System V initialisation compatibility"
"Scott James Remnant &&"
9 start on (filesystem and static-network-up) or failsafe-boot
10 stop on runlevel
12 # Default runlevel, this may be overriden on the kernel command-line
13 # or by faking an old /etc/inittab entry
14 env DEFAULT_RUNLEVEL=2
16 emits runlevel
18 # There can be no previous runlevel here, but there might be old
19 # information in /var/run/utmp that we pick up, and we don't want
20 # that.
22 # These override that
23 env RUNLEVEL=
24 env PREVLEVEL=
26 console output
27 env INIT_VERBOSE
# Check for default runlevel in /etc/inittab
if [ -r /etc/inittab ]
eval "$(sed -nre 's/^[^#][^:]*:([0-6sS]):initdefault:.*/DEFAULT_RUNLEVEL="\1";/p' /etc/inittab || true)"
# Check kernel command-line for typical arguments
for ARG in $(cat /proc/cmdline)
case "${ARG}" in
-b|emergency)
# Emergency shell
[ -n "${FROM_SINGLE_USER_MODE}" ] || sulogin
[0123456sS])
# Override runlevel
DEFAULT_RUNLEVEL="${ARG}"
-s|single)
# Single user mode
[ -n "${FROM_SINGLE_USER_MODE}" ] || DEFAULT_RUNLEVEL=S
# Run the system initialisation scripts
[ -n "${FROM_SINGLE_USER_MODE}" ] || /etc/init.d/rcS
# Switch into the default runlevel
telinit "${DEFAULT_RUNLEVEL}"
62 end script
ubuntu 使用upstart一种基于事件驱动的服务启动机制比如你有下面6个运行级别0.halt1.Single-User mode2.Full Multi-User Mode (Ubuntu DEFAULT)3.Full Multi-User Mode4.Full Multi-User Mode5.Full Multi-User Mode6.Reboot分别位于:/etc/rc0.d/ = Run Level 0/etc/rc1.d/ = Run Level 1/etc/rc2.d/ = Run Level 2/etc/rc3.d/ = Run Level 3/etc/rc4.d/ = Run Level 4/etc/rc5.d/ = Run Level 5/etc/rc6.d/ = Run Level 6当你系统启动时,会执行rc2.d里的几个脚本。$ ls /etc/rc2.d/README
S20thinkfan
S70dns-clean
S99ondemandS20hddtemp
S20speech-dispatcher
S20virtualbox
S70pppd-dns
S99rc.localS20kerneloops
S20sysfsutils
S99grub-common
有一个朋友在群里问,如何开机启动isc dhcp 服务(树莓派),我说修改cr.local文件,但是为什么他们都说我是SB呢?因为家里没有无线键盘,和有线键盘(本来是该用树莓派的),我用的kali。然后没有因为家里没有无线键盘,和有线键盘(本来是该用树莓派的),我用的kali。然后没有装isc dhcp 我用的ssh代替了,修改rc.local文件是可以实现ssh开机启动的呀!我在群里问一个很热心的牛说了这句话,不明白意思,求指教啊。我在群里问一个很热心的牛说了这句话,不明白意思,求指教啊。嘿嘿,然后他们为毛说我是SB呀?能回答仔细点么?大牛们| 520: 源站返回未知错误
-- Event ID: f02120
如果您是网站管理员,点击查看。如需网站监控,可以使用。
您的浏览器
百度云加速查看:7916|回复:7
请教大家一个samba安装中的问题:我下载了源码安装以后,貌似装好了,testparm测试ok. 但做service smb start时候就显示smb是未被识别的服务。然后看日志里面,nmbd.log显示服务已经开始,但smbd.log 里面就显示出错,在/usr/local/samba/sbin/smbd里有undefined symbol, 所以是symbol lookup error.
同时,在/etc/rc.d/init.d 下没有smb.d这个文件。
我不知道是在哪儿出错了,哪位有空的话请指点一下。万分感谢!
你先chkconfig --list 看看有没有samba先吧,没有就绝对没装成功,然后rpm -qa | grep smb*,看看有没有装SMB的包。
Linuxの小凡
引用:原帖由 wangxuzhai 于
20:39 发表
请教大家一个samba安装中的问题:我下载了源码安装以后,貌似装好了,testparm测试ok. 但做service smb start时候就显示smb是未被识别的服务。然后看日志里面,nmbd.log显示服务已经开始,但smbd.log 里面就显示出错,在/usr/loc ... 我的思路:
1)感谢你来论坛分享和交流!!要过年了,新春快乐!
2)根据楼主提示,源码安装,testparm测试OK,证明此时有SAMBA配置文件,并且配置文件语法正确。
& && &Service启动显示未识别,那么证明没有smb的启动脚本,所以应该是没有/etc/init.d/smb 吧?
& && &楼主所说的 /etc/rc.d/init.d/smb.d 是否是开机启动类型?属于守护进程?
& && &至于楼主说的错误我没看过,我建立楼主先查看下是否安装了rpm for smb,要不就先都卸载了,重新装。
& && &如果楼主的这个配置非常重要,可以继续等高手帮你解答,有需要可以短信我,我帮你提升这个贴。
我试了chkconfig --list, 没有samba. 那就还是没有装成功
那现在是否就只有全卸了重装?
我当时装的时候是用源码包装的,是不是rpm的安装一定需要有光盘的?
我是用光盘装的vmware, 当时装好以后,用rpm -qa |grep samba 检查过软件包,只有common , client, winbind 和libs四个软件包,就是没有起server作用的那个主软件包,所以,我才下了一个源码包来装,可貌似这个源码包是不是有问题,昨天那smbd的log信息里显示有 lookup error.
刚才按第一个回复说的,用了chkconfig --list检查,没有安装成功。
那现在是不是就只有全部卸了重来? 能不能给我一个下载软件的链接?谢谢
还有,一下子不知道如何来把这个装了个半吊子的samba如何卸干净,我该怎么做的?
首先道歉,我未细致看问题。
说回正题,如果是源码包,chkconfig --list未必有相关选项的,所以service smb start也就不生效,因为service smb start启动的,正是chkconfig --list能看到的东西。所以你才启动不成功。而chkconfig --list是显示在/etc/rc.d/init.d里的东西的意思,所以chkconfig --list不出来,楼主就找不到。
但是,并不代表楼主就没装成功,你要具体找回安装的路径,看看能不能运行。正因为源码包很多没有写进chkconfig --list经常要人工去做。如果楼主没有特别要求,本来还是建议用yum来装。
坚持学习,乐于助人!!
Linuxの小凡
引用:原帖由 arthur376 于
18:59 发表
首先道歉,我未细致看问题。
说回正题,如果是源码包,chkconfig --list未必有相关选项的,所以service smb start也就不生效,因为service smb start启动的,正是chkconfig --list能看到的东西。所以你才启动不成功。而chkconfig ... 楼主可以看看,这位饭友的帮助,我这几天家网络断的,所以暂时无法帮助你!!
用yum install samba,然后
rpm -qa |grep samba 就会有samba-3.0.xxx

我要回帖

更多关于 etc rc.d rc3.d 的文章

 

随机推荐