使用chkconfig命令可以查看在不同启动级别下课自动启动的服务(或是程序),命令格式如下:
chkconfig --list
可能输出如下:
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off
(0-6 为启动级别 ; 关闭/开启为相应级别下该服务的自动启动选项)
如果希望对自动启动选项做出改变,命令格式为:
chkconfig --level x name on/off
例如 chkconfig --level 2345 ntpd off
以上的命令可以查询系统可提供的服务,如果希望开机时、某用户登录时、定时、某用户退出时、某一时刻启动某一程序,可采用以下方法:
1.开机启动时自动运行程序
Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。
例如:编辑 /etc/rc.d/rc.local 文件,在文件最末加上一行"xinit"或"startx",可以在开机启动后直接进入X-Window;
又比如:你编写了一个可执行脚本test,放在/root/doc/test,可以在/etc/rc.d/rc.local 文件末尾添加一行/bin/bash /root/doc/test保存退出即可。
还比如:需要指定在某些启动级别(这里以在3、4、5三种启动级别下执行为例)下执行某个脚本testlevel,需要按照规范修改这个脚本,然后将其存放到/etc/rc.d/init.d下,然后可以有两种方式来添加自启动,其一是ln
-s /etc/rc.d/init.d/testlevel/etc/rc.d/rc3.d/testlevel
、ln -s /etc/rc.d/init.d/testlevel
/etc/rc.d/rc4.d/testlevel 、ln -s /etc/rc.d/init.d/testlevel
/etc/rc.d/rc5.d/testlevel ;其二是执行以下两条命令chkconfig --add testlevel; chkconfig --level 345
testlevel on
2.登录时自动运行程序
用户登录时,bash首先自动执行系统管理员建立的全局登录script :/etc/profile。然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、 /.profile,但只执行最先找到的一个。
因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。
3.退出登录时自动运行程序
退出登录时,bash自动执行个人的退出登录脚本/.bash_logout。例如,在/.bash_logout中加入命令"tar -cvzf c.source.tgz *.c",则在每次退出登录时自动执行 "tar" 命令备份 *.c 文件。
4.定期自动运行程序
Linux有一个称为crond的守护程序,主要功能是周期性地检查 /var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些文件中的命令。用户可以通过crontab 命令来建立、修改、删除这些命令文件。
例如,crontab -e命令建立文件crondFile,内容为"0 9 23 6 * HappyBirthday",每当6月23日上午9:00系统自动执行"HappyBirthday"的程序("*"表示不管当天是星期几)。
通过 crontab -l命令可查看已添加的定时执行程序。
5.定时自动运行程序一次
定时执行命令at 与crond 类似(但它只执行一次):命令在给定的时间执行,但不自动重复。at命令的一般格式为:at [ -f file ] time ,在指定的时间执行file文件中所给出的所有命令。
示例:任务在启动时运行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