9月 14

小程序需要做个后台服务定时采集数据,本来是在global里面写的Timer,但是发现Jexus里面这样用会造成不稳定,于是想法设法做类似windows的服务.

 

最开始研究的使用mono-service 做,后来发现例子很少,一直不能成功.

于是转而用Supervisor,线上一段摘录

Supervisor是一个C/S系统,它可以在类unix操作系统让用户来监视和控制后台服务进程的数量,一个很重要的功能就是监控服务器的主要后台进程,并在出现问题是自动重启。

 

首先安装

安装完成之后做配置   /etc/supervisor/supervisord.conf

添加如下代码

[include]
files = /etc/supervisor/conf.d/*.conf

/etc/supervisor/conf.d 新建yhhz5.conf

[program:yhhz5s]  
command=mono /var/www/yhhz5s/XXX.Console.exe
directory=/var/www/yhhz5s/
user=root
stderr_logfile = /root/error.log
stdout_logfile = /root/main.log
autostart=true
autorestart=true
startsecs=10

启动服务和停止服务

supervisorctl stop yhhz5s
supervisorctl start yhhz5s

打开命令行

supervisorctl

打开命令行之后查看状态

status

 

程序本身写成一个console

            int second = int.Parse(System.Configuration.ConfigurationSettings.AppSettings["Interval"]); 
            if (DateTime.Now.Hour >= 21 || DateTime.Now.Hour < 9)  //晚上21点到第二天早上9点,采集频率降低为20分钟一次 
                second = int.Parse(System.Configuration.ConfigurationSettings.AppSettings["IntervalAtNight"]); 
            second = second / 2; 
            Thread.Sleep(second * 1000); 
            LogHelper.Info("__________________________________________________________");
            LogHelper.Info("====================End Application======================="); 
            CollectStart.Start(); 
            LogHelper.Info("====================End Application=======================");
            LogHelper.Info("ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ"); 
            Thread.Sleep(second * 1000);

 

written by ocean \\ tags: