Linux启动和关闭时自动执行的所有脚本文件
2010-08-11 10:46
267 查看
Linux
使用的是基于运行级(run-levels) 概念的称为
SysVinit
的专用启动工具。
它在不同的系统上可能是完全不一样的, 所以不能认为一个脚本在某个
Linux
发行版上工作正常。
SysVinit(从现在开始我们称之为"init")以运行级的模式来工作,一般有
7
(从
0
到
6)个运行级
(实际上可以有更多的运行级,但都是用于特殊情况而且一般使用不到。
参见 init(8)以获得更多信息),每个运行级对应于一套设定好的任务,
当启动一个运行级的时候, 计算机就需要执行相应的任务。
默认的运行级是 3,下面是对不同运行级的描述:
0: 关闭计算机
1: 单用户模式
2: 无网络多用户模式
3: 有网络多用户模式
4: 保留作自定义,否则同运行级
3
5: 同运行级
4,一般用于图形界面(GUI)登录(如 X的 xdm 或 KDE的 kdm)
6: 重启动计算机
用来改变运行级别的命令是init <runlevel>,在这里 <runlevel>是目标运行级别。
在 /etc/rc.d 目录下有很多类似 rc?.d (这里
? 是运行级别的数值)
和 rcsysinit.d 的目录,
里面都包含许多符号链接,其中一些以 K 字母开头,另外一些以 S 字母开头,
这些链接名在首字母后面都跟着两个数字。 这个 K
的含义是停止 (kill)
一个服务, S
的含义是启动一个服务。而数字则确定这些脚本的启动顺序,从
00 到 99(数字越小执行的越早)。
当 init 转换到其它运行级时,
一些相应的服务会停止, 而另一些服务则会启动。
真正的脚本在 /etc/rc.d/init.d 目录下,
它们完成实际工作, 符号链接都是指向它们的。
停止脚本的链接和启动脚本的链接都指向 /etc/rc.d/init.d 目录下的同一个脚本。
这是因为调用这些脚本时可以使用不同的参数,例如 start, stop, restart, reload,
和 status。
当调用 K
链接时,相应的脚本用 stop参数运行;当调用
S 链接时,相应的脚本用start 参数运行。
上面的说明有一个例外,在 rc0.d 和 rc6.d 目录下以 S 开头的链接不会启动任何东西,
而是用stop参数调用,
来停止某些服务。 这背后的逻辑是, 当用户要重启或关闭系统的时候,
不会要启动什么服务, 只会要系统停止。
以下是脚本参数的描述:
启动服务。
关闭服务,然后再启动。
该服务的配置已更新。如果修改了某个服务的配置文件,又不必重启这个服务的时候,
可以使用这个参数
显示服务的状态,如果服务正在运行,会显示该服务进程的
PID
。
您可以自由修改启动进程工作的方式。
我们这里给出的文件只是它们怎样工作的一个示例而已。
透过 BIOS 取得第一个可开机装置,读取主要开机区 (MBR)
取得开机管理程式;
透过开机管理程式的设定,取得
kernel 并载入记忆体且侦测系统硬体;
核心主动呼叫 init
程式;
init
程式开始执行系统初始化 (/etc/rc.d/rc.sysinit)
执行/etc/init.d/functions
,设置环境变量等。
依据 init
的设定进行 daemon
start (/etc/rc.d/rc[0-6].d/*)
依次执行脚本,启动服务。关机时依次关闭服务。
载入本机设定 (/etc/rc.d/rc.local)
/etc/profile文件。这个文件是系统启动时,任何用户登录时执行的文件。任何用户登录前,root用户也会执行一遍。
~/.bash_profile文件。这个文件每个用户都有。它在用户登录时自动执行,拥有用户的权限。它export的环境变量对该用户随后启动的进程都有效。
因此,如果用户需要开机自动以root权限执行一些脚本,那么最好的方法是编辑/etc/rc.d/rc.local文件。
如果每一个用户登录时都应该执行的脚本,如设置一些环境变量。那么应该修改/etc/profile文件。
如果某一个特定用户登录时应该执行特定的脚本,如设置该用户特定的环境变量,应该修改~/.bash_profile文件。
使用的是基于运行级(run-levels) 概念的称为
SysVinit
的专用启动工具。
它在不同的系统上可能是完全不一样的, 所以不能认为一个脚本在某个
Linux
发行版上工作正常。
SysVinit(从现在开始我们称之为"init")以运行级的模式来工作,一般有
7
(从
0
到
6)个运行级
(实际上可以有更多的运行级,但都是用于特殊情况而且一般使用不到。
参见 init(8)以获得更多信息),每个运行级对应于一套设定好的任务,
当启动一个运行级的时候, 计算机就需要执行相应的任务。
默认的运行级是 3,下面是对不同运行级的描述:
0: 关闭计算机
1: 单用户模式
2: 无网络多用户模式
3: 有网络多用户模式
4: 保留作自定义,否则同运行级
3
5: 同运行级
4,一般用于图形界面(GUI)登录(如 X的 xdm 或 KDE的 kdm)
6: 重启动计算机
用来改变运行级别的命令是init <runlevel>,在这里 <runlevel>是目标运行级别。
在 /etc/rc.d 目录下有很多类似 rc?.d (这里
? 是运行级别的数值)
和 rcsysinit.d 的目录,
里面都包含许多符号链接,其中一些以 K 字母开头,另外一些以 S 字母开头,
这些链接名在首字母后面都跟着两个数字。 这个 K
的含义是停止 (kill)
一个服务, S
的含义是启动一个服务。而数字则确定这些脚本的启动顺序,从
00 到 99(数字越小执行的越早)。
当 init 转换到其它运行级时,
一些相应的服务会停止, 而另一些服务则会启动。
真正的脚本在 /etc/rc.d/init.d 目录下,
它们完成实际工作, 符号链接都是指向它们的。
停止脚本的链接和启动脚本的链接都指向 /etc/rc.d/init.d 目录下的同一个脚本。
这是因为调用这些脚本时可以使用不同的参数,例如 start, stop, restart, reload,
和 status。
当调用 K
链接时,相应的脚本用 stop参数运行;当调用
S 链接时,相应的脚本用start 参数运行。
上面的说明有一个例外,在 rc0.d 和 rc6.d 目录下以 S 开头的链接不会启动任何东西,
而是用stop参数调用,
来停止某些服务。 这背后的逻辑是, 当用户要重启或关闭系统的时候,
不会要启动什么服务, 只会要系统停止。
以下是脚本参数的描述:
start
启动服务。
stop停止服务。
restart
关闭服务,然后再启动。
reload
该服务的配置已更新。如果修改了某个服务的配置文件,又不必重启这个服务的时候,
可以使用这个参数
status
显示服务的状态,如果服务正在运行,会显示该服务进程的
PID
。
您可以自由修改启动进程工作的方式。
我们这里给出的文件只是它们怎样工作的一个示例而已。
Linux
的开机的整个过程如下:
打
开电脑电
源,
开
始
读
取
BIOS
并进
行主
机
的自我
测试
;
透过 BIOS 取得第一个可开机装置,读取主要开机区 (MBR)
取得开机管理程式;
透过开机管理程式的设定,取得
kernel 并载入记忆体且侦测系统硬体;
核心主动呼叫 init
程式;
init
程式开始执行系统初始化 (/etc/rc.d/rc.sysinit)
执行/etc/init.d/functions
,设置环境变量等。
依据 init
的设定进行 daemon
start (/etc/rc.d/rc[0-6].d/*)
依次执行脚本,启动服务。关机时依次关闭服务。
载入本机设定 (/etc/rc.d/rc.local)
/etc/profile文件。这个文件是系统启动时,任何用户登录时执行的文件。任何用户登录前,root用户也会执行一遍。
~/.bash_profile文件。这个文件每个用户都有。它在用户登录时自动执行,拥有用户的权限。它export的环境变量对该用户随后启动的进程都有效。
因此,如果用户需要开机自动以root权限执行一些脚本,那么最好的方法是编辑/etc/rc.d/rc.local文件。
如果每一个用户登录时都应该执行的脚本,如设置一些环境变量。那么应该修改/etc/profile文件。
如果某一个特定用户登录时应该执行特定的脚本,如设置该用户特定的环境变量,应该修改~/.bash_profile文件。
相关文章推荐
- Linux启动和关闭时自动执行的所有脚本文件
- Linux启动和关闭时自动执行的所有脚本文件
- Linux启动和关闭时自动执行的所有脚本文件
- Linux启动和关闭时自动执行的所有脚本文件
- Linux启动和关闭时自动执行的所有脚本文件
- 对目录中的所有文件执行一系列指令且自动获取参数的脚本
- 详解如何在 Linux 启动时自动执行命令或脚本
- windows开机自动执行bat脚本启动cmd命令窗口并执行命令,最后自动关闭cmd命令窗
- centos shell编程4【分发系统】 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要同步的文件 expect文件分发系统 expect自动发送密钥脚本 Linux脚本执行方式 第三十八节课
- Linux下为可执行shell脚本文件(.sh),制作桌面启动快捷方式
- linux下使用shell 自动执行脚本文件
- Linux下脚本文件的自动执行
- linux启动后执行脚本(/etc/rc.local文件)
- Linux中脚本文件的自动执行——crontab命令
- Linux 中 rc.local、init.d、rc.x、init 这几个文件(夹)各有什么作用?启动执行的脚本应该均放在 rc.local 中吗?
- 详解在 Linux 启动时,如何自动执行命令或脚本
- linux启动后自动执行某个脚本
- 如何在 Linux 启动时自动执行命令或脚本
- 详解在 Linux 启动时,如何自动执行命令或脚本
- Linux下自动启动关闭Oracle脚本