使用的软件:mono2.0, Linux Red hat
步骤:
1、在Window下编写一个Remoting服务端作为Window服务。包括
RemoteServer.exe(服务运行文件)
RemoteServer.exe.config(配置文件)
将这两个文件放到Linux系统的一个目录下,本例放在/home/RemoteTest/RemoteServer下
1
2 #!/bin/bash
3 #
4 # sjhService : service for example
5 #
6 # chkconfig: 2345 97 92
7 # description: for test.
8 # processname: sjhService
9 #
10 . /etc/rc.d/init.d/functions
11
12 SERVICE_NAME=sjhService
13 SERVICE_PATH=/home/RemoteTest/RemoteServer
14 SERVICE_ASSEMBLY=${SERVICE_PATH}/RemoteServer.exe
15 SERVICE_LCK=/var/run/${SERVICE_NAME}.pid
16
17 start() {
18 echo -n $"Starting $SERVICE_NAME:"
19 daemon mono-service2 -l:$SERVICE_LCK $SERVICE_ASSEMBLY
20 RETVAL=$?
21 echo
22 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SERVICE_NAME
23 return $RETVAL;
24 }
25
26 stop () {
27 echo -n $"Shutting down Mono Service $SERVICE_NAME:"
28 test -f $SERVICE_LCK && kill `cat $SERVICE_LCK`
29
30 RETVAL=$?
31 if [ $RETVAL -eq 0 ]; then
32 echo "Success stop";
33 else
34 echo "Error stop";
35 fi;
36 }
37
38 status() {
39 echo -n "Checking for Mono Service $SERVICE_NAME:"
40 test -f $SERVICE_LCK
41 RETVAL=$?
42 return $RETVAL;
43 }
44
45 pause() {
46 echo "Pausing Mono Service $SERVICE_NAME:"
47 test -f $SERVICE_LCK && kill -USR1 `cat $SERVICE_LCK`
48 RETVAL=$?
49 return $RETVAL;
50 }
51
52 cd $SERVICE_PATH
53 case "$1" in
54 start)
55 start;
56 RETVAL=$?;
57 ;;
58 stop)
59 stop;
60 RETVAL=$?;
61 ;;
62 pause)
63 pause;
64 RETVAL=$?
65 ;;
66 condrestart)
67 stop;
68 start;
69 RETVAL=$?;
70 ;;
71 restart|reload)
72 stop;
73 start;
74 RETVAL=$?;
75 ;;
76 status)
77 status;
78 RETVAL=$?;
79 ;;
80 *)
81 echo $"$SERVICE_NAME: Usage: < start | stop | pause | restart | reload | status >"
82 ;;
83 esac;
84
85 exit $RETVAL;
86
2、 编写Linux服务脚本sjhServer,将脚本放在 /etc/rc.d/init.d目录下
3、 建立符号链接。建立相应运行级别的脚本符号链接,本例中是2、3、4、5级,使用命令 :
cd /etc/rc.d/rc2.d (相应地建立第3级的链接,cd到rc3.d目录下)
ln –s /etc/rc.d/init.d/sjhServer S97sjhServer
4、 启动服务。使用命令:
service sjhService start
5、 本例中有一个客户端程序RemoteClient.exe用做侦听。运行RemoteClient.exe,返回运行结果说明服务已经在运行,如果客户端出现目标机器积极拒绝说明服务没有启动
6、停止服务,使用命令:
service sjhService stop
到此ASP.NET的服务移植到Linux就算完成,和其它Linux的系统服务一样,操作方法都一样。
存在的几个疑点:
一、第3点建立符号链接时,只建立了S的链接,没有建立K的链接。还有启动和停止服务的顺序的定义有什么规则,是否对其它服务有顺序上的依赖。
二、服务的暂停不起作用,Remoting这个服务是否没有这个概念。其它类型服务有待测试。