Linux有自己一套完整的启动体系,抓住了Linux启动的脉络,Linux的启动过程将不再神秘。
阅读之前建议先看一下附图。
本文中假设inittab中设置的init tree为:
/etc/rc.d/rc0.d
/etc/rc.d/rc1.d
/etc/rc.d/rc2.d
/etc/rc.d/rc3.d
/etc/rc.d/rc4.d
/etc/rc.d/rc5.d
/etc/rc.d/rc6.d
/etc/rc.d/init.d
1. 关于Linux的启动
init是所有进程之父
init读取/etc/inittab,执行rc.sysinit脚本
(注意文件名是不一定的,有些unix甚至会将语句直接写在inittab中)
rc.sysinit脚本作了很多工作:
init $PATH
config network
start swap function
set hostname
check root file system, repair if needed
check root space
....
rc.sysinit根据inittab执行rc?.d脚本
Linux是多用户系统,getty是多用户与单用户的分水岭
在getty之前运行的是系统脚本
2. 关于rc.d
所有启动脚本放置在 /etc/rc.d/init.d下
rc?.d中放置的是init.d中脚本的链接,命名格式是:
S{number}{name}
K{number}{name}
S开始的文件向脚本传递start参数
K开始的文件向脚本传递stop参数
number决定执行的顺序
3. 启动脚本示例
这是一个用来启动httpd的 /etc/rc.d/init.d/apache 脚本:
代码:
#!/bin/bash
source /etc/sysconfig/rc
source $rc_functions
case "$1" in
start)
echo "Starting Apache daemon..."
/usr/local/apache2/bin/apachectl -k start
evaluate_retval
;;
stop)
echo "Stopping Apache daemon..."
/usr/local/apache2/bin/apachectl -k stop
evaluate_retval
;;
restart)
echo "Restarting Apache daemon..."
/usr/local/apache2/bin/apachectl -k restart
evaluate_retval
;;
status)
statusproc /usr/local/apache2/bin/httpd
[1] [2] 下一页
;;
*)
echo "Usage: $0 {startstoprestartstatus}"
exit 1
;;
esac可以看出他接受start,stop,restart,status参数
然后可以这样建立rc?.d的链接:
代码:
cd /etc/rc.d/init.d &&
ln -sf ../init.d/apache ../rc0.d/K28apache &&
ln -sf ../init.d/apache ../rc1.d/K28apache &&
ln -sf ../init.d/apache ../rc2.d/K28apache &&
ln -sf ../init.d/apache ../rc3.d/S32apache &&
ln -sf ../init.d/apache ../rc4.d/S32apache &&
ln -sf ../init.d/apache ../rc5.d/S32apache &&
ln -sf ../init.d/apache ../rc6.d/K28apache4. 关于rc.local
经常使用的 rc.local 则完全是习惯问题,不是标准。
各个发行版有不同的实现方法,可以这样实现:
代码:
toUCh /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
ln -sf /etc/rc.d/rc.local /etc/rc.d/rc1.d/S999rc.local &&
ln -sf /etc/rc.d/rc.local /etc/rc.d/rc2.d/S999rc.local &&
ln -sf /etc/rc.d/rc.local /etc/rc.d/rc3.d/S999rc.local &&
ln -sf /etc/rc.d/rc.local /etc/rc.d/rc4.d/S999rc.local &&
ln -sf /etc/rc.d/rc.local /etc/rc.d/rc5.d/S999rc.local &&
ln -sf /etc/rc.d/rc.local /etc/rc.d/rc6.d/S999rc.local5. 关于bash启动脚本
/etc/profile
/etc/bashrc
~/.bash_profile
~/.bashrc
是bash的启动脚本
一般用来设置单用户的启动环境,也可以实现开机单用户的程序,但要明确他们都是属于bash范畴而不是系统范畴。
他们的具体作用介绍如下:
/bin/bash这个命令解释程序(后面简称shell)使用了一系列启动文件来建立一个运行环境:
/etc/profile
/etc/bashrc
~/.bash_profile
~/.bashrc
~/.bash_logout
每一个文件都有特殊的功用并对登陆和交互环境有不同的影响。
/etc/profile 和 ~/.bash_profile 是在启动一个交互登陆shell的时候被调用。
/etc/bashrc 和 ~/.bashrc 是在一个交互的非登陆shell启动的时候被调用。
~/.bash_logout 在用户注销登陆的时候被读取
一个交互的登陆shell会在 /bin/login 成功登陆之后运行。一个交互的非登陆shell是通过命令行来运行的,如[prompt] $/bin/bash。一般一个非交互的shell出现在运行shell脚本的时候。之所以叫非交互的shell,是因为它不在命令行上等待输入而只是执行脚本程序。
信息来源:http://linux.sheup.com/linux/39/linux23662.htm
分享到:
相关推荐
以下是关于如何使Linux系统上的程序开机后自动运行的详细说明: 1. **Linux启动流程** - **init进程**:Linux系统的启动是从init进程开始的,它是所有其他进程的祖先。init根据/etc/inittab配置文件来决定系统的...
实现ARM Linux系统开机自动运行特定应用需要修改rc.local文件,添加执行用户应用程序的命令,并通过nfs挂载主机上的文件系统。 相关知识点: * ARM Linux系统的开机自动运行机制 * rc.local文件的作用和修改方法 *...
Linux系统程序自动运行机制详解 Linux系统的启动过程可以分为几个阶段,init进程是所有进程的父进程,它读取/etc/inittab文件,执行rc.sysinit脚本,该脚本执行了许多任务,例如设置PATH变量、配置网络、启动swap...
在Linux系统中,实现基于Qt的应用程序开机自启动是一个实用且常见的需求,特别是在开发桌面应用时,用户希望软件能够在每次开机后自动运行。Qt是一个功能强大的C++图形用户界面库,它提供了丰富的API来帮助开发者...
### SUSE Linux 下开机自动运行脚本命令的方法 #### 概述 在SUSE Linux(如openSUSE)中,为了实现系统启动时自动执行某些脚本或命令,需要了解和利用特定的启动脚本机制。本文将详细介绍openSUSE 11和10 SP2中的...
在Windows操作系统中,程序可以设置为开机时自动运行,以便用户在每次启动计算机时无需手动启动它们。在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Classes)库来实现这个功能,特别是在修改注册表以...
包括在 /etc/rc.d/rc.local 中增加启动命令、将 apache 注册为系统服务、在 Red Hat Linux 中自动运行程序、登录时自动运行程序、退出登录时自动运行程序、定期自动运行程序和定时自动运行程序等多种方法。...
为了使自定义的程序能在系统启动时自动运行,需要进一步修改启动脚本: 1. 在`/usr/bin`目录下复制`startx`文件,并重命名为`MyUIstartx`。 2. 在`MyUIstartx`脚本中,添加一行代码指定Qt程序的路径,如`client="/...
UBUNTU 添加程序开机自动启动的方法 ...UBUNTU 添加程序开机自动启动可以通过多种方法实现,包括开机启动时自动运行程序、登录时自动运行程序、退出登录时自动运行程序、定期自动运行程序和定时自动运行程序一次等。
在计算机系统中,实现程序开机自动运行是一种常见的需求,它可以使特定的应用程序在操作系统启动时自动启动,无需用户手动操作。这种功能对于那些需要后台运行的服务或者需要在系统启动后立即可用的应用尤其有用,...
通过以上方法,我们可以实现在 Linux 系统中开机自动运行脚本以及设置各种周期性任务。无论是对于自动化运维还是个人项目都是非常有用的技能。需要注意的是,在进行相关配置时要确保遵循正确的语法和权限管理规则,...
Linux 下设置开机自动启动程序的方法可以分为五类:开机启动时自动运行程序、登录时自动运行程序、退出登录时自动运行程序、定期自动运行程序、定时自动运行程序。 开机启动时自动运行程序 在 Linux 下,可以通过...
Linux 自动启动程序设置方法 ...本文介绍了在 Linux 下设置开机自动启动程序的方法,包括开机启动时自动运行程序、登录时自动运行程序、退出登录时自动运行程序、定期自动运行程序和定时自动运行程序等方面的知识点。
在Linux系统中,让程序开机自动运行是一项基本的需求,尤其对于服务器环境而言,确保服务在系统启动时自动启动是至关重要的。本篇文章将详细介绍一种简单有效的方法,适用于那些需要开机自启动的应用,如Apache、...
### Linux开机管理程序详解 #### 一、GRUB与Linux操作系统的关系 GRUB(Grand Unified Bootloader)作为GNU项目的一部分,是由自由软件基金会(FSF)提供的一个强大的启动加载器。它与Linux操作系统有着密切的关系...
首先,我们要理解“系统自动执行”和“开机自动运行”的概念。在大多数操作系统中,如Windows、Linux和macOS,都有提供一种机制,使得特定的程序或服务可以在系统启动时启动。这种机制是为了提供便利,特别是对于...
在Linux系统中,设置开机自动启动程序是管理服务器和应用的关键步骤,这确保了系统启动后,所需的服务和应用程序能够自动运行,无需手动干预。以下是一些常见的方法和相关知识点: 1. **在 `/etc/rc.d/rc.local` 中...
### Linux操作系统的开机流程分析 #### 一、引言 Linux作为一款开源的操作系统,在服务器领域占据了主导地位,其强大的稳定性和灵活性深受广大用户的喜爱。本文将深入剖析Linux操作系统的开机启动流程,帮助读者...
在Linux操作系统中,开机启动程序是一个至关重要的部分,它决定了系统启动时自动运行哪些服务和脚本。rc.local是一个传统的方法,用于配置系统启动时执行的命令,尤其在CentOS7这样的系统中。本文将深入探讨rc.local...