77百科网
当前位置: 首页 生活百科

打开linux子系统(使用systemd把服务装进)

时间:2023-08-04 作者: 小编 阅读量: 2 栏目名: 生活百科

Linux非常的安全、可靠,而且有一股黑黝黝的妹子味道,这说明她也是柔软的。我们希望自己的应用程序,就像是Linux的血肉一样,就像是安装在Linux的心脏里。在网络权限逐渐收紧的企业环境中,使用supervisor会给自己徒添烦恼。systemctlenablexjjdogfirstjava除了这两者,disable、stop、restart也是标配的指令。这是由于systemd默认内置了两个阈值。有了它,你的应用程序终于能够和Linux合为一体,天荒地老的伴随下去了。聚焦基础架构和Linux。

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留此信息。

Linux非常的安全、可靠,而且有一股黑黝黝的妹子味道,这说明她也是柔软的。

把服务跑在Linux上,就像男生把女装藏在密码箱里一样让人放心,它的稳定安全可以让人安稳的睡个懒觉。

SPOF,是著名的单点问题。鉴于xjjdog非常讨厌卖弄缩写名词的特点,我把它的全称打在这里:single point of failure。

一台Linux是孤单一台Linux,所以跑在上面的服务,就会有单点问题。解决单点问题通常可以通过集群,也可以通过奢侈的影子节点来达到这个目的。

但无论怎么搞,我们都希望跑在Linux上的某个进程,能够随着Linux的启动自动启动,随着Linux的关闭自动关闭。我们希望自己的应用程序,就像是Linux的血肉一样,就像是安装在Linux的心脏里。

准备程序

很长一段时间里,我使用supervisor来做这种事情。但可惜的是,supervisor并不是Linux的预装软件,而且它是python写的,需要装一大堆依赖包。在网络权限逐渐收紧的企业环境中,使用supervisor会给自己徒添烦恼。

是的,并不是supervisor不好,只不过它太麻烦。频繁的网络权限申请让人抓狂,甚至喧宾夺主。

退而求其次,那就是systemd。

为了说明怎么使用它,我们准备一段小小的Java程序。

importcom.sun.net.httpserver.HttpContext;importcom.sun.net.httpserver.HttpServer;importjava.io.OutputStream;importjava.net.InetSocketAddress;publicclassRunner{publicstaticvoidmain(String[]args)throwsException{HttpServerserver=HttpServer.create(newInetSocketAddress(14000),0);HttpContextcontext=server.createContext("/");context.setHandler(exchange->{try{Stringresponse="Ojbk!";exchange.sendResponseHeaders(200,response.getBytes().length);OutputStreamos=exchange.getResponseBody();os.write(response.getBytes());os.close();}catch(Exceptionex){ex.printStackTrace();}});server.start();}}

这段代码将在14000端口开启一个Http服务器,每当你访问它的时候,它都会输出Ojbk!。

curlhttp://localhost:14000

把程序搞成服务

要想让上面的程序成为系统的一部分,需要将其服务化。

[Unit]Description=My First Java ServiceAfter=network.targetStartLimitIntervalSec=0[Service]Type=simpleRestart=alwaysRestartSec=1User=rootExecStart=/usr/bin/env java /opt/Runner[Install]WantedBy=multi-user.target

比较重要的就是ExecStart,它配置了你确切要执行的命令,我们这里当然是一个简单的class文件。

给这个文件起一个名字吧,比如xjjdogfirstjava.service,然后把文件扔进/etc/systemd/system/目录里。

要启动这个服务的话,直接执行下面的命令就好了。

systemctlstartxjjdogfirstjava

如果你找不到刚刚创建的服务,记得reload一下。

systemctldaemon-reload

如果你想要它随着Linux启动的话,可以执行enable创建一个链接就可以了。

systemctlenablexjjdogfirstjava

除了这两者,disable、stop、restart也是标配的指令。

注意到配置文件里有这么2行内容。

Restart=alwaysRestartSec=1

它表明,每当程序异常终止的时候,都会自动重启这个进程,重启的间隔是1秒。

更多一些的配置

我们注意到,上面的配置文件里,有After=network.target字样。它表明当MySQL启动完毕的时候,才会启动xjjdogfirstjava服务,也就是强行指定了一个依赖关系。

但很多小伙伴在使用上面配置的时候,经常发现服务自动重启几次之后,就再也不会再重启了。

等等,我们不是使用了Restart=always参数么?

这是由于systemd默认内置了两个阈值。

StartLimitBurst=5 StartLimitIntervalSec=10

当你把StartLimitIntervalSec设置成0的时候,目的就总算达到了,我们的程序可以一直一失败,一直重启下去。

虽然这样,保持一个重启间隔是一个比较好的习惯。因为大多数服务重启的时候,都会造成服务器资源的上升,如果你不想让你的服务器报警,那就不要这么压迫它。

End

这就是systemd,一个Linux内置的程序。有了它,你的应用程序终于能够和Linux合为一体,天荒地老的伴随下去了。

作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。

推荐阅读:

1. 玩转Linux2. 什么味道专辑

3. 蓝牙如梦4. 杀机!5. 失联的架构师,只留下一段脚本6. 架构师写的BUG,非比寻常7. 有些程序员,本质是一群羊!

小姐姐味道 不羡鸳鸯不羡仙,一行代码调半天 346篇原创内容 -->

公众号

,
    推荐阅读
  • 一个多月的牧羊犬怎么区分是长毛和短毛的?(牧羊犬的长短毛类区别方法)

    下面内容希望能帮助到你,我们来一起看看吧!一个多月的牧羊犬怎么区分是长毛和短毛的德牧分弓背与平背两种。我家有一只小德牧,属于长毛。长毛德牧外层的硬毛比较长一点,绒毛稍微少一点儿,御寒能力会稍微降低一点,短毛御寒能力会稍微高一点。西德牧羊犬就是长毛德牧,尾长适中,东德牧羊犬就是短毛的,尾巴比较短。

  • 最贵的斗牛犬(盘点世界上最昂贵的十大犬种)

    事实上,他们的健康状况不断下降是警察,军队,搜救等工作下降的原因之一。心脏病,髋关节和肘发育异常,腹胀是该品种常见的疾病,可导致长期使用狗的昂贵治疗。伯尔尼山犬在所有狗品种中都是癌症发生率最高的犬种之一,该品种的所有者报告的肌肉骨骼问题几乎是其他品种所有者的三倍。由于这些问题,伯尔尼山犬可能会面临早期的流动性和生命周期的缩短。

  • 什么是七氟丙烷气体(七氟丙烷气体简单介绍)

    接下来我们就一起去了解一下吧!什么是七氟丙烷气体七氟丙烷是一种以化学灭火为主兼有物理灭火作用的洁净气体化学灭火剂;它无色、无味、低毒、不导电、不污染被保护对象,不会对财物和精密设施造成损坏。能以较低的灭火浓度,可靠的扑灭B、C类火灾及电气火灾;储存空间小,临界温度高,临界压力低,在常温下可液化储存;释放后不含粒子或油状残余物,对大气臭氧层无破坏作用,在大气层停留时间为31~42年,符合环保要求。

  • 琂字五行属什么(琂字五行属啥)

    下面内容希望能帮助到你,我们来一起看看吧!琂字五行属什么琂字五行属火,原意为玉,在取名字的情况下喻意着前途远大、为人正直出色,是一种十分好意头的取名字汉字,并且归属于规范化常用汉字,因此能够作为取名字,户口簿也是可以百度收录的。《说文》石之似玉者。

  • 新兵下连! 这份“暖心套餐” 请查收!

    元旦前夕,武警贵州总队2023年度秋季新兵结束了为期3个月的新训生活,开始奔赴新的岗位。为使新兵迅速适应新环境,融入部队大家庭,各基层单位着眼新时代新兵思想特点,为下连新兵送上一份“暖心套餐”。在武警贵州总队黔西南支队,新兵刚入支队营门,欢呼声、鼓掌声、锣鼓声顿时响彻营区,老兵们在道路两旁整齐列队,热烈欢迎新战友的到来。

  • 墙面裂缝如何修补(怎样修补墙面裂缝)

    墙面裂缝如何修补用腻子刀刮出空隙的宽度,并刮成八字型,外宽里窄。用石膏块干粉填补住空隙,填堵的深度大于等于30-40mm,这个不需要与墙面填平,需要比墙面低1-1.5mm。空隙处刷108胶后贴玻璃布或牛皮便条。刮821腻子2-3遍并与原有墙面抹平,干后用砂纸打磨平。调墙面涂料,涂料调好后先刷样板,干后与墙面颜色比照,颜色接近,色差不大,再涂刷墙壁。

  • 大米是粗粮还是细粮(大米是不是细粮)

    细粮意思是指大米和白面,与粗粮相对。大米蛋白质中赖氨酸和苏氨酸的含量较少,所以不是一种完全蛋白质,其营养价值比不上动物蛋白质。但在午餐和晚餐时食用大米,较面食而言更有利于人们减肥。在我国南方地区人们一般食用大米作为主食,而在北方就有很大的不同。优质大米,米粒饱满,洁净,有光泽,纵沟较浅,掰开米粒其断面呈半透明白色。闻之有清新气味,蒸熟后米粒油亮,有嚼劲,气味喷香。

  • 板栗怎么保存不生虫子(板栗的保存方法)

    下面更多详细答案一起来看看吧!板栗怎么保存不生虫子通风透凉保存法:板栗脱壳本身还在进行生命反应,将板栗平铺在水泥地或者竹制品上面,存放在阴暗通风的地方,可保存30天以上。沙土储藏法:将板栗装入麻布袋子里,铺上一层稻草,覆盖上约20cm厚的沙子,可以长期存放。原装刺袍保存:在板栗没从壳里脱落时平铺保存,不要堆放,可以保存30天左右。

  • 早上好送给最想念的人(今天9.16早上好一曲思念送给我思念的人)

    亲爱的朋友早上好今天是9月16日我送你清晨的第一声问候希望能带给你好运愿你一天都有好心情牵挂在心间,祝福在指间看的是文字,送的是祝福我亲爱的朋友朋友,不因远而生疏流水,不因石而阻隔真正的朋友千金不换因为总是心相连感谢有你,相知相伴送你白云,愿你快乐心爽朗送你清风,愿你闻到百花香送你阳光,愿你永远不忧伤送你问候,愿你幸福又安康愿我的问候刚刚好带给你一份好心情愿我的祝福随你意带给你一个新起点新的一天,

  • 北欧买什么实木家具好(北欧进口家具品牌有哪些)

    Bonaldo意大利家具品牌Bonaldo是世界级的著名家具设计商,家具以其简约、高贵典雅为特点,占领大部分高端家具市场。Bonaldo以独特的创意与设计而闻名全球,艺术般的造型更是赏心悦目,无不绽放出意大利传统建筑艺术与文化。意大利品牌在家居设计领域一向是全球公认的首屈一指,究其原因,是设计师把设计每一件家具视作艺术与生命般看待。而来自意大利Forli市的家居品牌Cierre更是意大利家居行业内的顶级奢华品牌。