下面以网络服务ruptime(client end) ruptimed(server end) 为例说明如何搭建linux中的网络服务
- 编写守护进程deamon,详见APUE.2e chapter 16 Network IPC: Sockets
- 为了将本地主机作为服务器,将/etc/hosts 中localhost和hostname的ip修改为0.0.0.0 注意不是127.0.0.1。
- 将服务绑定到端口号, 注意服务的协议(TCP/UDP)。 在/etc/services/中插入 record。
- 例如,插入记录:ruptime 4000/tcp。
- 在/etc/init.d/ruptime中编写相应的启动脚本
#! /bin/sh
### BEGIN INIT INFO
# Provides: ruptimed
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: ruptime
### END INIT INFO
start()
{
echo "start ruptime"
/home/tlh1987/apue-practice/ruptimed
exit 0;
}
stop()
{
killall ruptimed
echo "stop ruptime"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "usage: $0 start|stop|restart"
exit 0;
esac
- 利用service ruptime [start | stop | restart] 控制服务的运行状态
- 利用netstat -anp 监控网络服务的状态。
- 例如,插入记录:ruptime 4000/tcp。
- 在/etc/init.d/ruptime中编写相应的启动脚本
#! /bin/sh ### BEGIN INIT INFO # Provides: ruptimed # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: ruptime ### END INIT INFO start() { echo "start ruptime" /home/tlh1987/apue-practice/ruptimed exit 0; } stop() { killall ruptimed echo "stop ruptime" } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "usage: $0 start|stop|restart" exit 0; esac