我们知道Centos7之后搁浅Sysvinit,改用复杂功能又及其强大,又特别惹人烦恼的systemd. 这个名字取得很大气,直接用system + d . Sysvint从unix时期就已经早早的存在了,在各大国外的社区都很不少大牛针对init 和 systemd进行讨论,目前来看支持Sysvinit的人多点。
周边人对于systemd的看法. 有意思的是,我周边的开发人员都觉得无所谓,看了systemd的高级功能更是蠢蠢欲动。也确实systemd的功能对比init来说,复杂强大的多,比如并行化,unit, target ,socket , timer等等。 我以前的运维朋友,包括bat那帮人都不喜欢systemd,为什么? 又要学一个新东西,madan的。 咱们也不说什么高端的说法,不说systemd不符合unix的设计哲学,不符合简单美。 我个人也讨厌新东西,虽然他的新功能很是吸引人。
该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新. http://xiaorui.cc/?p=3462
前面虽然说的很直爽,但现实中因为各种各样的环境会导致你去用systemd。 不是因为systemd而去用centos7 ,而是因为centos7用systemd。 跟朋友一起开发一个开源的OpenApi,这与做什么这里先不说,保密。 这哥们蛋疼的想做一个systemd sd_notify的外部支持,用golang扩展一个模块。 文章的后面会告诉你,实现代码是怎么个简单粗暴。
systemd sd_notify是什么? 传统的服务化进程管理,我们只是能知道他活着,他挂了. sd_notify可以做到一个运行程序跟systemd交互通信。 我主动告诉systemd我现在的状态,不仅仅是让systemd通过event pid粗浅的认为我的状态。 另外sd_notify也是可以发出类似进度的指令。
这里说下使用systemd遇到的问题:
其实官方文档有说明 。 READY 只是有1 , 一开始是stackoverload看了个sd_notify的说明有 0 2的值。 后来….
systemd是不会给程序传递信号,让他去reload,只能是你自己加信号解决。
不要轻易让systemd把自己标注为ERROR的状态,原本只是想做个提示,结果发现systemd把你给干掉了。
watchdog还是有点意思的,你可以申请一个watchdog dev设备,去定期喂数据,保持这个keep alive,他会改变定时器时间。
更加详细的syste