大部分内容来自网络:
linux中有两种方式管理守护进程(其实只要是调用了deamon函数的程序都能成为守护进程):
- standalone方式。进程被放到/etc/init.d中,启动方式可以选在用/sbin/service XXX restart,也可以用/etc/init.d/XXX restart。这两种方式本质一样都是运行了/etc/init.d/目录下面的某个脚本,这里面的脚本按照规范都要支持start stop restart这样的参数。这一类的程序都会作为一个单独的服务运行。
- super deamon方式。这种方式运行的进程都会注册到xinetd这进程,从外面看只有这一个进程,发给注册进程的消息都由xinetd转给注册进程来处理。xinetd的配置文件在/etc/inetd.conf,注册进xinetd的每个进程的配置在/etc/xinet.d/文件夹中。需要注意的一点是:inetd本身是一个守护进程,linux用standalone的方式来管理他,所以可以在/etc/init.d/目录中找到xinetd对应的脚本,就叫/etc/init.d/xinetd。
- BIOS
- MBR
- kernel loading
- init program
- /etc/rc.d/rc.sysinit 运行初始化脚本
- /etc/rc.d/rc[0-6].d/ 运行不同运行level下的守护进程,每个运行level对应一个目录,目录下面都是软链接,软链接指向的位置都在/etc/init.d/目录下面。由此可见,init.d其实就是init daemon的含义是啊
- /etc/rc.d/rc.local 运行本地设置脚本
- /usr/sbin/ntsysv(red hat专有)
- /sbin/chkconfig
个人总结:如标题所说,这是关于守护进程怎么设置自动启动的方法。需要记住的是放到/etc/init.d中的脚本需要支持start,stop,restart这样的参数,而且为了能够支持chkconfig的管理,需要在脚本开头添加如下注释行:第二行三个数字的意义分别是,在那些启动级别生效,启动顺序20,终止顺序90。也就是说,当你执行chkconfig *** on的时候,chkconfig会在/etc/rcN.d/目录下自动创建S20***软连接(N为2,3,4,5),指向/etc/init.d/目录下的启动脚本。
#! /bin/bash
# chkconfig: 2345 20 90
# description: A daemon for binding qemu process to core.
写好脚本,并放置在/etc/init.d/目录下之后,怎么设置生效呢?
1. 执行下列命令,设置服务开机自启动:
chkconfig--add cbd
chkconfig cbd on
2. 立即生效:service cbd start 当然也可以重新启动机器。
------------------------------------------------------------------分割线----------------------------------------------------------------------
linux程序开机自启动的方法详解~程序自动启动~Myself
1.开机启动时自动运行程序
Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。例如:编辑 /etc/rc.d/rc.local 文件,在文件最末加上一行"xinit"或"startx",可以在开机启动后直接进入X-Window。
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 命令来建立、修改、删除这些命令文件。
例如,建立文件crondFile,内容为"00 9 23 Jan * HappyBirthday",运行"crontab cronFile"命令后,每当元月23日上午9:00系统自动执行"HappyBirthday"的程序("*"表示不管当天是星期几)。 (/etc/crontab中配置命令即可)也可以
5.定时自动运行程序一次
定时执行命令at 与crond 类似(但它只执行一次):命令在给定的时间执行,但不自动重复。at命令的一般格式为:at [ -f file ] time ,在指定的时间执行file文件中所给出的所有命令。也可直接从键盘输入命令:
个人总结:这篇文章总结的非常好,把各种希望处理的情况都列出来了。其中第一点就是本文中 应用的第一篇文章的内容,适合于设置开机自启动守护进程。第二点适合进行一些环境设置,个人最喜欢的是将自己所有想要的设置写成脚本放置在/etc/profile.d/目录下,因为/etc/profile会自动执行/etc/profile.d/目录下的所有脚本。也就是说,可以的话尽量不要修改/etc/bashrc或者/etc/profile文件。
----------------------------------------------------------------分割线--------------------------------------------------------------------