咏南中间件随LINUX开机自动启动
咏南中间件随LINUX开机自动启动
LINUX DEAMON,LINUX也有类似WINDOWS的服务。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | 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文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | [UNIT] #服务描述 Description=ynCrossMiddleWare #指定了在systemd在执行完那些target之后再启动该服务 After=MiddleWare [Service] #定义Service的运行类型,一般是forking(后台运行) Type=forking #定义systemctl start|stop|reload *.service 的执行方法(具体命令需要写绝对路径) #注:ExecStartPre为启动前执行的命令 ExecStart=/usr/yn/ynCrossServer -start ExecReload=/usr/yn/ynCrossServer -reload ExecStop=/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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?