1.daemon是一直运行的程序,提供系统或者网络服务,叫做守护进程
主要分类:
stand_alone:此 daemon 可以自行单独启动服务,如sshd,httpd
super daemon: 一支特殊的 daemon 来统一管理。 早期的 super daemon 是 inetd 这一个,后来则被 xinetd 所取代了。这种机制比较有趣的地方在于, 当没有用户端的要求时,各项服务都是未启动的情况,等到有来自用户端的要求时, super daemon 才唤醒相对应的服务。当用户端的要求结束后,被唤醒的这个服务也会关闭并释放系统资源。这种机制的好处是:
(1)由于 super daemon 负责唤醒各项服务,因此 super daemon 可以具有安全控管的机制,就是类似网路防火墙的功能
(2)由于服务在用户端的连线结束后就关闭,因此不会一直占用系统资源。
但是缺点是什么呢? 因为有用户端的连线才会唤醒该服务,而该服务载入到记忆体的时间需要考虑进去,因此服务的反应时间会比较慢一些啦,常见的有telnet服务
daemon 工作形态的类型:
服务与端口的对应:
/etc/services这个文档规定了服务和端口的对应关系,一般不要去改里面的设定
2.daemon 的启动脚本与启动方式
服务的启动涉及到很多方面,执行档、设定档、执行环境等等,所以需要一个shell脚本来启动服务,下面是一些重要文件位置:
3.服务的防火墙管理 xinetd, TCP Wrappers
简单的防火墙机制,通过设置/etc/hosts.allow, /etc/hosts.deny 这两个文件来实现。只要一个服务受到 xinetd 管理,或者是该服务的程式支援 TCP Wrappers 函数库的功能时,那么该服务的防火墙方面的设定就能够以 /etc/hosts.{allow,deny} 来处理。ldd命令可以查看服务所连接的函数库,ldd $(which sshd httpd)
这两个档案的判断依据是: (1) 以 /etc/hosts.allow 为优先,而 (2) 若分析到的 IP 或网段并没有记录在 /etc/hosts.allow ,则以 /etc/hosts.deny 来判断
TCP Wrappers 特殊功能:
可以在hosts.allow和hosts.deny两个设定档里面添加设置,实现更复杂的功能:
3.系统开启的服务
ps,top,netstat都可以观察系统开启的服务,netstat -tulpn
设定开机后立即启动服务的方法:
chkconfig: 管理系统服务预设开机启动与否
- [root@www ~]# chkconfig --list [服务名称]
- [root@www ~]# chkconfig [--level [0123456]] [服务名称] [on|off]
- 选项与参数:
- --list :仅将目前的各项服务状态列出来
- --level:设定某个服务在该 level 下启动 (on) 或关闭 (off)
chkconfig只是设置开机启动,并不能马上生效
service 服务名 start | stop | restart
上述命令可以立刻生效,但是不会影响开机启动
chkconfig: 设定自己的系统服务
有时候,需要启动自己写的服务。首先,需要将启动脚本加入到/etc/init.d/中,如
- [root@www ~]# vim /etc/init.d/myvbird
- #!/bin/bash
- # chkconfig: 35 80 70
- # description: 没啥!只是用来作为练习之用的一个范例
- echo "Nothing"
然后利用chkconfig来管理
- [root@www ~]# chkconfig [--add|--del] [服务名称]
- 选项与参数:
- --add :增加一个服务名称给 chkconfig 来管理,该服务名称必须在 /etc/init.d/ 内
- --del :删除一个给 chkconfig 管理的服务