关机时执行指定脚本

前端之家收集整理的这篇文章主要介绍了关机时执行指定脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在.login中执行相应命令,或在.bashrc(用tcsh shell,在.tcshrc)里写命令。是不行的,.login是在用户登录时执行,用户可能在本地无需登录,或者在远程多个用户登录,多次登录;而.tcshrc是在shell启动时执行,登录用户一般会多次打开shell,这样该命令或程序就会被多次执行。

Linux 启动顺序:

1、 BIOS自检

2、 运行系统内核并检测硬件

3、 运行系统的第一个进程init

4、 init读取系统引导配置文件/etc/inittab中的信息进行初始化

/etc/rc.d/rc.sysinit------系统初始化脚本

/etc/rc.d/rcX.d/[KS]*------根据运行级别配置服务

/etc/rc.d/rc.local---------执行本地特殊配置

其它---------不同运行级别的特殊服务

Linux启动运行init程序来启动相关程序初始化,与启动相关的一个概念是运行级,运行级是操作系统当前运行的级别,在不同运行级别上可以定义属于该运行级的启动程序,系统的运行级别可以在/etc/inittab文件指定,与运行级相关运行程序通过从源/etc/rc.d/init.d下链接到目的/etc/rcX.d,这里X为系统的默认运行级别,因此,默认的启动脚本放在/etc/rc.d/init.d下。

事例,任务在启动时运行mm:

方法

1. 建立自启动脚本/etc/rc.d/init.d/mm,内容为:

#!/bin/bash

/usr/local/bin/* (注:此内容替换为你想执行的命令)

设置文件属性为可执行:

#chmod +x /etc/rc.d/init.d/mm

2. 查看计算机运行级别,在文件/etc/inittab里看到id:3:initdefault:,则此系统运行级别为3。

3. 到/etc/rc3.d目录下,把你要执行的可执行文件做一个软连接,而且在命名的时候要以大写S字母开头,S之后的数字大小代表执行顺序的先后,数字越大越靠后执行

#ln -s /etc/rc.d/init.d/mm /etc/rc3.d/S100mm

#ln -s /etc/rc.d/init.d/mm /etc/rc0.d/K20mm

关机执行脚本:

1. vi /etc/init.d/mm

#!/bin/bash

ls >/dev/null 2>&1 (此处把ls替换为你自己的内容

  注意:此处的顺序不能更改,否则达不到想要的效果。此时先将标准输出重定向到 /dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null。

2. chmod +x /etc/init.d/mm

3. ln -s /etc/init.d/mm /etc/rc6.d/K01mm /var/lock/subsys/

4. 当你在关机时一切在悄无声息的进行着。

注:(1)本人在实验时,做关机运行脚本不成功解决方法。是在 /var/lock/subsys/中建立相同的文件mm,或拷贝或者直接软链接过来 ln -s /etc/init.d/mm /var/lock/subsys/ 。

(2)若在字符界面下只设置开机启动,只在rc3.d目录下链接S100filename便可。 如:ln -s /etc/init.d/filename /etc/rc3.d/S100filename

猜你在找的Ubuntu相关文章