城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

Linux上使用supervisor完成守护进程的工作

9月17日 多上心投稿
  我们经常需要当一个进程挂了之后能自动被拉起来,保证服务正常运行,这时候可以考虑使用supervisor。概念
  supervisor是用Python开发的一套通用的进程管理程序(CS模型),可以方便的启动、重启、关闭单个或多个进程(包括非Python进程)。
  supervisor是类似于一个监管员,它在系统中是一个进程管理工具,当系统进程中断的时候supervisor能自动重新启动它。可以运行在各种类unix的机器上。
  supervisor是一个CS模型的程序,supervisord是server端,supervisorctl是client端。下载python3pip的离线安装包
  为了方便后面做离线安装包,这里将所有的依赖的包下载到本地,可以方便到无网络环境下安装。
  aptgetdownloadpython3pipaptcachedependsipython3pipawkDepends:{print2}xargsaptgetdownload
  aptgetdownloadpython3distutilsaptcachedependsipython3distutilsawkDepends:{print2}xargsaptgetdownload
  aptgetdownloadpython3setuptoolsaptcachedependsipython3setuptoolsawkDepends:{print2}xargsaptgetdownload
  aptgetdownloadpython3wheelaptcachedependsipython3wheelawkDepends:{print2}xargsaptgetdownload本地安装python3pip【不需要网络】
  dpkgipython3distutils3。10。6122。04all。deb
  dpkgipython3setuptools59。6。01。2all。deb
  dpkgipython3wheel0。37。12all。deb
  dpkgipython3pip22。0。2dfsg1all。deb下载supervisor并安装
  pip3downloadsupervisor4。2。5py2。py3noneany。whl
  pip3installsupervisor4。2。5py2。py3noneany。whl
  安装完成后,可以找到usrlocalbinsupervisorctl创建配置
  mkdirpetcsupervisordconf。d
  echosupervisordconfetcsupervisord。conf修改配置
  配置末尾的include注释,改为:
  vietcsupervisord。conf
  〔include〕
  filesetcsupervisorconf。d。打开注释(;),将路径修改为etcsupervisordconf。d
  ;这句代码说明它会加载etcsupervisorconf。d文件夹中的所有。ini配置文件
  〔rootbogonetc〕vietcsupervisord。conf
  去掉注释前:;〔inethttpserver〕;inet(TCP)port127。0。0。1:9001;ipaddress:portspecifier,:defaultisnousername(openserver);password123;defaultisnopassword(openserver)
  去掉之后:〔inethttpserver〕;inet(TCP)serverdisabledbydefaultport:9001;ipaddress:portspecifier,:defaultisnousername(openserver)defaultisnopassword(openserver)
  〔supervisord〕logfiletmpsupervisord。defaultCWDsupervisord。loglogfilemaxbytes50MB;maxmainlogfilebytesb4default50MBlogfilebackups10;0meansnone,default10others:debug,warn,tracepidfiletmpsupervisord。defaultsupervisord。defaultfalseminfds1024;min。default1024minprocs200;min。default200;umask022;default022;setuidtothisUNIXsupervisordidentifier,AUTOchildlogdir,defaultTEMP;environmentKEYdef。Therpcinterface:RPC(supervisorctlwebinterface)towork。Aaddedbydefiningtheminseparate〔rpcinterface:x〕sections。
  将;usersupervisord修改为userroot
  启动服务
  supervisordcetcsupervisord。conf
  启动完成后可以使用psefgrepsupervisor命令查看进程rootljdefaultstring:usrlocalSINOpackagepsefgrepsupervisorroot11593381016:46?00:00:00usrbinpython3usrlocalbinsupervisordcetcsupervisord。confroot1202622639110017:17pts100:00:00grepcolorautosupervisorrootljdefaultstring:usrlocalSINOpackage浏览器查看服务状态
  http:ip:9001然后输入用户名和密码
  即可登录supervisorweb管理页面,其界面如下
  配置文件详解;Samplesupervisorconfigfile。〔unixhttpserver〕filevarrunsupervisorsupervisor。socket路径;chmod0700;socket文件的权限;chownnobody:socket所属用户及组;用户名;password123;密码;〔inethttpserver〕;是否启用服务,默认是关闭的(启用的话可以看到supervisor管理的服务状态);port127。0。0。1:9001;监听的IP及端口;用户名;password123;密码〔supervisord〕;supervisord全局配置logfilevarlogsupervisorsupervisord。supervisor日志路径logfilemaxbytes50MB;单个日志文件最大数logfilebackups10;保留多少个日志文件(默认10个)(others:debug,warn,trace)pidfilevarrunsupervisord。pid文件路径启动是否丢到前台,设置为false,表示以daemon的方式启动minfds1024;最小文件打开数,对应系统limit。conf中的nofile,默认最小为1024,最大为4096minprocs200;最小的进程打开数,对应系统的limit。conf中的nproc,默认为200;umask022;(default022);启动supervisord服务的用户,默认为(supervisordidentifier,defaultissupervisor);这里的目录指的是服务的工作目录;(defaultfalse);(AUTOchildlogdir,defaultTEMP);environmentKEY(keyvaluepairstoaddtoenvironment);(def。false);thebelowsectionmustremainintheconfigfileforRPC;(supervisorctlwebinterface)towork,addedbydefiningtheminseparaterpcinterface:sections〔rpcinterface:supervisor〕supervisor。rpcinterfacefactorysupervisor。rpcinterface:makemainrpcinterface〔supervisorctl〕serverurlunix:varrunsupervisorsupervisor。useaunix:URLserverurlhttp:127。0。0。1:9001;useanhttp:password123;cmdlineprompt(defaultsupervisor);historyfile。Thebelowsampleprogramsectionshowsallpossibleprogramsubsectionvalues,;createoneormorerealprogram:supervisor。;〔program:theprogramname〕;定义一个守护进程,比如下面的启动程序使用的命令,可以是绝对路径或者相对路径;processname(programname)s;一个python字符串表达式,用来表示supervisor进程启动的这个的名称,默认值是(programname)s;numprocs1;Supervisor启动这个程序的多个实例,如果numprocs1,则processname的表达式必须包含(processnum)s,默认是1;supervisord在生成子进程的时候会切换到该目录;umask022;umaskforprocess(defaultNone);priority999;权重,可以控制程序启动和关闭时的顺序,权重越低:越早启动,越晚关闭。默认值是999;如果设置为true,当supervisord启动的时候,进程会自动启动;设置为随supervisord重启而重启,值可以是false、true、unexpected。false:进程不会自动重启;startsecs10;程序启动后等待多长时间后才认为程序启动成功,默认是10秒;startretries3;supervisord尝试启动一个程序时尝试的次数。默认是3;exitcodes0,2;一个预期的退出返回码,默认是0,2。;stopsignalQUIT;当收到stop请求的时候,发送信号给程序,默认是TERM信号,也可以是HUP,INT,QUIT,KILL,USR1,orUSR2;stopwaitsecs10;在操作系统给supervisord发送SIGCHILD信号时等待的时间;如果supervisord以root运行,则会使用这个设置用户启动子程序;如果设置为true,进程则会把标准错误输出到supervisord后台的标准输出文件描述符;把进程的标准输出写入文件中,如果stdoutlogfile没有设置或者设置为AUTO,则supervisor会自动选择一个文件位置;stdoutlogfilemaxbytes1MB;标准输出log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小;stdoutlogfilebackups10;标准输出日志轮转备份的数量,默认是10,如果设置为0,则不备份;stdoutcapturemaxbytes1MB;当进程处于stderrcapturemode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB;如果设置为true,当进程在写它的把进程的错误日志输出一个文件中,除非redirectstderr参数被设置为stderrlogfilemaxbytes1MB;错误log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小;stderrlogfilebackups10;错误日志轮转备份的数量,默认是10,如果设置为0,则不备份;stderrcapturemaxbytes1MB;当进程处于stderrcapturemode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB;如果设置为true,当进程在写它的stderr到文件描述符的时候,PROCESSLOGSTDERR事件会被触发;environmentA1,B2;一个kv对的list列表;serverurlAUTO;是否允许子进程和内部的HTTP服务通讯,如果设置为AUTO,supervisor会自动的构造一个Teventlistenersubsectionvalues,eventlistener:sentbysupervisor。这个地方是自定义一个守护进程〔program:elasticsearch〕;定义一个守护进程elasticsearchenvironmentESHOME设置ESHOME环境变量启动elasticsearch的用户进入到这个目录中执行启动命令numprocs1;Supervisor启动这个程序的多个实例,如果numprocs1,则processname的表达式必须包含(processnum)s,默认是1设置为随supervisord启动而启动设置为随supervisord重启而重启startretries3;设置elasticsearch重启的重试次数priority1;权重,可以控制程序启动和关闭时的顺序,权重越低:越早启动,越晚关闭。默认值是999;〔eventlistener:theeventlistenername〕;theprogram(relativeusesPATH,cantakeargs);processname(programname)s;processnameexpr(default(programname)s);numprocs1;numberofprocessescopiestostart(def1);eventsEVENT;eventnotif。typestosubscribeto(reqd);buffersize10;eventbufferqueuesize(default10);directorytocwdtobeforeexec(defnocwd);umask022;umaskforprocess(defaultNone);priority1;therelativestartpriority(default1);startatsupervisordstart(default:true);restartatunexpectedquit(default:unexpected);startsecs10;numberofsecsprogmuststayrunning(def。1);startretries3;maxofserialstartfailures(default3);exitcodes0,2;expectedexitcodesforprocess(default0,2);stopsignalQUIT;signalusedtokillprocess(defaultTERM);stopwaitsecs10;maxnumsecstowaitb4SIGKILL(default10);setuidtothisUNIXredirectprocstderrtostdout(defaultfalse);stdoutlogpath,NONEdefaultAUTO;stdoutlogfilemaxbytes1MB;maxlogfilebytesb4rotation(default50MB);stdoutlogfilebackups10;ofstdoutlogfilebackups(default10);emiteventsonstdoutwrites(defaultfalse);stderrlogpath,NONEdefaultAUTO;stderrlogfilemaxbytes1MB;maxlogfilebytesb4rotation(default50MB);ofstderrlogfilebackups(default10);emiteventsonstderrwrites(defaultfalse);environmentA1,B2;serverurlAUTO;overrideserverurlcomputation(childutils);Thebelowsamplegroupsectionshowsallpossiblegroupvalues,;createoneormorerealgroup:processgroups。;〔group:thegroupname〕;服务组管理,可以将多个服务名写到这里管理(组名自定义);programsprogname1,progname2;上面配置好的服务名,比如elasticsearch,kibana,priority999;therelativestartpriority(default999);The〔include〕sectioncanjustcontainthefilessetting。Tsettingcanlistmultiplefiles(newlines)。Itcanalsocontainwildcards。Tinterpretedasrelativetothisfile。Iincludefilesthemselves。〔include〕filesetcsupervisord。d。具体进程
  下面到了最关键步骤,自己定义一个ini文件,将需要守护的进程的配置放到
  etcsupervisorconf。d这个目录下,如下图〔program:mainsoundbelt〕userjetsondirectorymntaialgorithmcommandpython3mainsoundbelt。pyautostarttrueautorestarttruestartretries1redirectstderrtruestdoutlogfilemntaialgorithmlogmainsoundbelt。logstderrlogfilemntaialgorithmlogmainsoundbelt。logstdoutlogfilemaxbytes1MBstdoutlogfilebackups5nodaemontrueenvironmentOPENBLASCORETYPEARMV8,LDPRELOADmntaialgorithmlibscikitlearn。libslibgompd22c30c5。so。1。0。0
  注意上面的environment表示启动时需要的环境变量。修改项目配置文件后,重新加载rootljdefaultstring:usrlocalSINOpackagesupervisorctlreloadRestartedsupervisord
  启动成功可以在网页上面看到running的状态
投诉 评论 转载

踏上新征程实现新突破!温州海经区着力打造更具活力的湾区智创城2022年,是温州瓯江口产业集聚区华丽转身、精彩蝶变的一年。这一年,浙江温州瓯江口产业集聚区更名为浙江温州海洋经济发展示范区(以下简称温州海经区)。5月20日上午,浙江温……指南速递早产儿或低体重儿并发症如何处理?仅供医学专业人士阅读参考更多儿科常见病诊疗指南,上临床决策助手App!早产儿(出生时胎龄低于37周)或低出生体重儿(出生体重低于2。5kg,LBW)相较于正常产儿呼……对于交管12123这款软件大家使用感觉如何?我觉得这个软件挺实用的,六年内的车审车不用再去交管所了,在手机上就能办理,等着把标识邮过来就行了,另外这款软件还可以查违章和处理违章,只要是没有扣分只有罚款的违章都不用去……只属于你的限量款埃安AIONY颜值百变对于很多人来说,似乎每天都在为如何便捷出行而烦恼,尤其是对于生活在一些大城市的人来说,拥挤的城市总是会为人徒增烦恼。为了方便很多人都会选择购买一款代步小车,尤其是对于一些新手来……Linux上使用supervisor完成守护进程的工作我们经常需要当一个进程挂了之后能自动被拉起来,保证服务正常运行,这时候可以考虑使用supervisor。概念supervisor是用Python开发的一套通用的进程管理程……电话兵常偷听日军电话,说自己不懂日语,孰料日军屡遭泄密日伪军据点里,新来的电话兵说自己不懂日语,却以日语叽里呱啦挺好玩为由经常偷听日军电话,有汉奸用日语试探他,他也听不懂。后来,日军重要军事行动不知为何却多次泄密。电话兵……我买了一部新手机,把旧手机恢复出厂设置后送人,但忘了解绑银行一般来说旧手机只要恢复了出厂设置,就不会再保留个人信息了,所以这种情况下即使把手机送人了,也不会导致银行卡等隐私数据泄露。此外银行卡一般是和手机号绑定的,并非和手机绑定。……你们觉得唐山的未来,是在中心城区,还是在沿海?大家好,我是来自国际庄的胖子,非常高兴回答这个问题。唐山的未来在中心城区,还是在沿海?答案肯定是在沿海了,唐山虽贵为河北省GDP第一大市,但是唐山传统市区非常小,企……俱乐部进球历史第一人,C罗时隔4年再次取得大四喜昨天凌晨,沙特联赛第16轮,利雅得胜利40胜瓦赫达麦加,C罗上演大四喜,这是C罗俱乐部第706球,职业生涯的第824球。本场比赛,塔利斯卡因红牌停赛,C罗单核带队,顶在前……秦国丞相李斯是什么样的人?一文带你了解战国末期,秦朝的建立和巩固,离不开李斯的一份力量,然而秦朝最终的覆灭,也和李斯脱不开关系。从某种意义上说,他的成就是一个时代的成就,他的过失是一个时代的过失。那么,有功又……上海铁路警方通报女子霸座辱骂乘务员鉴定及调查正进行据上海铁路公安局9月24日通报,9月23日,女子高铁独霸三座辱骂乘务员网传女子高铁霸座还辱骂乘务员等网络信息引起网民关注。上海铁路警方经调查,9月22日20时许,持有G7286……张黎上将谈年轻时到军报投稿的经历强军路上的良师益友这是我(郭磊)的老哥战友张传禄在公众号上发文按语〔笑〕《解放军报》纪念创刊60周年,约请与军报有长期联系的我军高级将领撰写纪念文章。此文为该报发表的原副总参谋长张黎上将的专稿,……
最高上涨7509元!南京二手房小区涨跌榜单了解一下仅播4集,热度直逼第一,秦岚聂远一出手,就是民国情感剧王炸中国纺织的演变从古到今高水旺一双巧手灼灼匠心续写唐三彩千年传奇浙江女孩零彩礼嫁给美国小伙,婚后做主播养家,丈夫在家带娃你吃过云南过桥米线吗?山西一神奇土堆,千年来不曾积雪,挖开之后的景象让专家欣喜不已张常宁大婚,中国女排朱婷姚迪未送祝福引起争议!其中有何隐情吗风吹半夏富商冯遇最虚伪?宝儿在患难时倾囊相助,结局很意外央视主持李思思因家庭原因舍弃热爱的事业,竟转行带货!宝宝肚子胀气怎么排气?我国扑翼机续航时长破世界纪录,北航造扑翼机开启鸟形飞行器时代

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁