守护进程
[定义]
守护进程(daemon),在UNIX或其他多任务操作系统中在后台长期不间断运行的程序。通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。[附加说明]
1 linux系统在启动时会启动很多进程(例如:init进程,等待用户登录的进程login,等待FTP客户连接的vsftpd等)。这些进程向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。
系统守护进程:如atd, cron, lpd, syslogd, login等
网络守护进程:如sshd, httpd, sendmail, xinetd等
- 独立运行的守护进程
独立运行的守护进程的脚本存放在/etc/init.d/目录下
所有的系统服务都是独立运行的。如:cron, syslogd等
- 由超级服务器运行的守护进程
[守护进程的启用和终止]
在服务器运行期间,可以随时启用和停止守护进程。另外,当修改了守护进程的配置文件之后,也要重新启动守护进程。启用和终止有两种方法:1 直接在/etc/init.d/目录下的脚本管理守护进程
# /etc/init.d/daemon-name start|stop|restart|reload
2 使用service命令
# service daemon-name start|stop|restart|reload
[查看守护进程树]
可以使用pstree命令查看系统的守护进程树。以我的ubuntu12.04为例。$ pstree
init-+-NetworkManager-+-dhclient
| |-dnsmasq
| `-2*[{NetworkManager}]
|-accounts-daemon---{accounts-daemon}
|-acpid
|-at-spi-bus-laun---2*[{at-spi-bus-laun}]
|-atd
|-avahi-daemon---avahi-daemon
|-bamfdaemon---2*[{bamfdaemon}]
|-bluetoothd
|-chromium-browse-+-chrome-sandbox---chromium-browse---chromium-browse-+-2*[chromium-browse---4*[{chromium-browse}]]
| | `-7*[chromium-browse---3*[{chromium-browse}]]
| |-chromium-browse
| |-chromium-browse---17*[{chromium-browse}]
| |-chromium-browse---6*[{chromium-browse}]
| `-36*[{chromium-browse}]
|-colord---2*[{colord}]
|-console-kit-dae---64*[{console-kit-dae}]
|-cron
|-cupsd---dbus
|-2*[dbus-daemon]
|-dbus-launch
|-dconf-service---2*[{dconf-service}]
|-gconfd-2
|-geoclue-master
|-6*[getty]
|-gnome-keyring-d---6*[{gnome-keyring-d}]
|-gnome-terminal-+-bash---pstree
| |-gnome-pty-helpe
| `-4*[{gnome-terminal}]
|-goa-daemon---{goa-daemon}
|-goldendict---7*[{goldendict}]
|-gvfs-afc-volume---{gvfs-afc-volume}
|-gvfs-fuse-daemo---3*[{gvfs-fuse-daemo}]
|-gvfs-gdu-volume
|-gvfs-gphoto2-vo
|-gvfsd
|-gvfsd-burn
|-gvfsd-metadata
|-gvfsd-trash
|-hud-service---3*[{hud-service}]
|-indicator-appli---{indicator-appli}
|-indicator-datet---2*[{indicator-datet}]
|-indicator-messa---{indicator-messa}
|-indicator-print---2*[{indicator-print}]
|-indicator-sessi---2*[{indicator-sessi}]
|-indicator-sound---2*[{indicator-sound}]
|-irqbalance
|-lightdm-+-Xorg
| |-lightdm-+-gnome-session-+-bluetooth-apple---2*[{bluetooth-apple}]
| | | |-compiz-+-sh---gtk-window-deco---2*[{gtk-window-deco}]
| | | | `-4*[{compiz}]
| | | |-deja-dup-monito---2*[{deja-dup-monito}]
| | | |-gdu-notificatio---2*[{gdu-notificatio}]
| | | |-gnome-fallback----2*[{gnome-fallback-}]
| | | |-gnome-screensav---2*[{gnome-screensav}]
| | | |-gnome-settings--+-syndaemon
| | | | `-3*[{gnome-settings-}]
| | | |-lightdm-session
| | | |-nautilus---2*[{nautilus}]
| | | |-nm-applet---2*[{nm-applet}]
| | | |-polkit-gnome-au---2*[{polkit-gnome-au}]
| | | |-ssh-agent
| | | |-telepathy-indic---2*[{telepathy-indic}]
| | | |-update-notifier---3*[{update-notifier}]
| | | |-zeitgeist-datah---{zeitgeist-datah}
| | | `-3*[{gnome-session}]
| | `-{lightdm}
| `-2*[{lightdm}]
|-mission-control---2*[{mission-control}]
|-modem-manager
|-polkitd---{polkitd}
|-pulseaudio-+-gconf-helper
| `-2*[{pulseaudio}]
|-rsyslogd---3*[{rsyslogd}]
|-rtkit-daemon---2*[{rtkit-daemon}]
|-sshd
|-ubuntu-geoip-pr---2*[{ubuntu-geoip-pr}]
|-udevd---2*[udevd]
|-udisks-daemon-+-udisks-daemon
| `-2*[{udisks-daemon}]
|-unity-applicati---2*[{unity-applicati}]
|-unity-files-dae---2*[{unity-files-dae}]
|-unity-lens-vide---{unity-lens-vide}
|-unity-music-dae---{unity-music-dae}
|-unity-musicstor---{unity-musicstor}
|-unity-panel-ser---3*[{unity-panel-ser}]
|-unity-scope-vid---2*[{unity-scope-vid}]
|-upowerd---2*[{upowerd}]
|-upstart-socket-
|-upstart-udev-br
|-whoopsie---{whoopsie}
|-wpa_supplicant
|-zeitgeist-daemo---{zeitgeist-daemo}
`-zeitgeist-fts-+-cat
`-{zeitgeist-fts}
[介绍几个常见的守护进程]
1时钟同步守护进程网络时钟同步可以使用网络时间协议(Network Time Procotol NTP)实现。NTP协议的目的是在Internet上传递统一,标准的时间。常用于同步的应用。具体的实现方案是在网络上指定若干个时钟源网站,为用户提供授时服务,并且这些网站间能改相互比对,提高准确度。
具体的实现请常看相关的NTP协议手册
一般使用的同步网站是http://www.pool.ntp.org/en/,里面有中国的。
2 安全登录守护进程OpenSSH
SSH(Secure SHell)协议是C/S模式协议,即区分客户端和服务器端。一次成功的SSH会话需要两端的通力合作来完成。OpenSSH使用非对称密钥的RSA和DSA认证协议来认证用户。其过程是:
(1)本地主机使用ssh客户命令告诉远程主机的sshd守护进程,想使用RSA/DSA认证协议登录
(2)远程主机的sshd守护进程会生成一个随机数,并使用存储于该机器上的公钥对这个随机数进行加密
(3)远程主机的sshd守护进程把加密了的随机数发回给正在本地主机上运行的ssh客户
(4)本地主机的ssh客户使用密钥对中的私钥对这个随机数进行解密后,再把它发回给远程主机的sshd的守护进程。
(5)远程主机的sshd守护进程进行判断,若密钥对匹配,则允许登录。