博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
咏南中间件随LINUX开机自动启动
阅读量:4967 次
发布时间:2019-06-12

本文共 3865 字,大约阅读时间需要 12 分钟。

咏南中间件随LINUX开机自动启动

LINUX DEAMON,LINUX也有类似WINDOWS的服务。

program ynCrossServer;{$HINTS OFF}{$APPTYPE CONSOLE}{$R *.res}uses  {$IFDEF MSWINDOWS}  MidasLib,  {$ENDIF }  {$IFDEF POSIX}  Posix.Unistd,  {$ENDIF}  uPlugHelp,  uUnidacPool,  Web.WebReq,  IdHTTPWebBrokerBridge,  uLog,  System.SysUtils,  WebservicesImpl in 'WebservicesImpl.pas',  WebservicesIntf in 'WebservicesIntf.pas',  WebModuleUnit1 in 'WebModuleUnit1.pas' {WebModule1: TWebModule},  uWebservices in 'uWebservices.pas' {ynWebServices: TDataModule},  uIDTcpSvr in 'uIDTcpSvr.pas' {idTcpSvr: TDataModule},  uIDHttpSvr in 'uIDHttpSvr.pas' {idHttpSvr: TDataModule},  uCrossHttpSvr in 'uCrossHttpSvr.pas' {crossHttpSvr: TDataModule},  uCrossTcpSvr in 'uCrossTcpSvr.pas' {crossTcpSvr: TDataModule},  uCrossWebSckSvr in 'uCrossWebSckSvr.pas' {CrossWebSckSvr: TDataModule};{$IFDEF POSIX}procedure daemon;begin  try    if WebRequestHandler <> nil then      WebRequestHandler.WebModuleClass := WebModuleClass;    TUnidacPool.SetDBParams;    Log := TLog.Create;    uPlugHelp.LoadPlugs;//  ynWebServices := TynWebServices.Create(nil);//  crossTcpSvr := TcrossTcpSvr.Create(nil);    crossHttpSvr := TcrossHttpSvr.Create(nil);//  CrossWebSckSvr := TCrossWebSckSvr.Create(nil);    repeat      sleep(10000);    until False;  finally    if idTcpSvr <> nil then      FreeAndNil(idTcpSvr);    if idHttpSvr <> nil then      FreeAndNil(idHttpSvr);    if ynWebServices <> nil then      FreeAndNil(ynWebServices);    if crossHttpSvr <> nil then      FreeAndNil(crossHttpSvr);    if crossTcpSvr <> nil then      FreeAndNil(crossTcpSvr);    if CrossWebSckSvr <> nil then      FreeAndNil(CrossWebSckSvr);    uplughelp.UnloadPlugs;    var i: Integer;    for i := 0 to Length(DBPoolArray) - 1 do      FreeAndNil(DBPoolArray[i]);    FreeAndNil(log);  end;end;var pid: Cardinal;{$ENDIF}begin  {$IFDEF MSWINDOWS}  if WebRequestHandler <> nil then    WebRequestHandler.WebModuleClass := WebModuleClass;  TUnidacPool.SetDBParams;  Log := TLog.Create;  uPlugHelp.LoadPlugs;  //idHttpSvr, crossHttpSvr,要绑定不同的端口,才能同时存在//  idTcpSvr := TidTcpSvr.Create(nil);//  idHttpSvr := TidHttpSvr.Create(nil);//  ynWebServices := TynWebServices.Create(nil);//  crossTcpSvr := TcrossTcpSvr.Create(nil);  crossHttpSvr := TcrossHttpSvr.Create(nil);//  CrossWebSckSvr := TCrossWebSckSvr.Create(nil);  try    Writeln('输入exit,按回车链,退出程序');    var s: string;    while True do    begin      Readln(s);      if sametext('exit', s) then      begin        Break;      end      else        Writeln('无法识别的命令');    end;  finally    if idTcpSvr <> nil then      FreeAndNil(idTcpSvr);    if idHttpSvr <> nil then      FreeAndNil(idHttpSvr);    if ynWebServices <> nil then      FreeAndNil(ynWebServices);    if crossHttpSvr <> nil then      FreeAndNil(crossHttpSvr);    if crossTcpSvr <> nil then      FreeAndNil(crossTcpSvr);    if CrossWebSckSvr <> nil then      FreeAndNil(CrossWebSckSvr);    uplughelp.UnloadPlugs;    var i: Integer;    for i := 0 to Length(DBPoolArray) - 1 do      FreeAndNil(DBPoolArray[i]);    FreeAndNil(log);  end;  {$ENDIF}  {$IFDEF POSIX}  pid := fork;  if pid = 0 then   begin    writeln('starting service');    daemon;   end;  {$ENDIF}end.

  

1)将中间件部署文件复制到 /usr/yn/ 目录

2)创建并编辑/usr/lib/systemd/system/yn.service文件

[UNIT]#服务描述Description=ynCrossMiddleWare#指定了在systemd在执行完那些target之后再启动该服务After=MiddleWare[Service]#定义Service的运行类型,一般是forking(后台运行)   Type=forking#定义systemctl start|stop|reload *.service 的执行方法(具体命令需要写绝对路径)#注:ExecStartPre为启动前执行的命令ExecStart=/usr/yn/ynCrossServer -startExecReload=/usr/yn/ynCrossServer -reloadExecStop=/usr/yn/ynCrossServer -stop#创建私有的内存临时空间PrivateTmp=True[Install]#多用户WantedBy=multi-user.target

  重载系统服务:systemctl daemon-reload

人工启动服务:systemctl start yn.service

人工停止服务:systemctl stop yn.service
人工重启服务:systemctl reload yn.service

设置开机启动:systemctl enable yn.service

 

转载于:https://www.cnblogs.com/hnxxcxg/p/11458640.html

你可能感兴趣的文章
RunLoop(运行循环)-002-加载大图
查看>>
eclipse中修改tomcat的配置,解决全局性的get提交乱码问题
查看>>
UI: 使用 UIViewController 展现和管理视图
查看>>
编译器会强制没有数据成员的对象长度非零
查看>>
键盘13事件
查看>>
前端----css总结
查看>>
python 终极篇 cookie与session
查看>>
iOS Socket编程-C语言版(UDP)
查看>>
Swift开源项目精选
查看>>
Android Fragment详解(一):概述
查看>>
二叉树深度
查看>>
六种方式读取properties资源文件
查看>>
[LeetCode] Combinations
查看>>
客户端-服务器端互动比较与原生实例(比较ajax,server-sent event,websocket/netsocket)...
查看>>
MQTT 入门介绍——菜鸟教程
查看>>
使用SQLiteOpenHelper管理SD卡中的数据库
查看>>
gradient css
查看>>
javascript {}+"" 与 ""+{}
查看>>
create-react-app安装失败或者安装很慢
查看>>
转 js+cookie 购物车
查看>>