我想遵循每个平台上用于启动脚本的习惯用法,并且这意味着在Ubuntu上运行Upstart,在Fedora上运行systemd。
是否有编写Systemd系统文件的良好教程?
是否有需要注意的“最佳实践”? br />
我发现了以下资源:
关于systemd的Fedora Wiki页面
关于编写systemd系统文件的博客
Wikidia上的Systemd
>
我主要是在寻找各种API作为参考,以及要遵循的基本格式。
#1 楼
我将从Systemd手册页开始。它们代表了系统和服务的全面资源。还有freedesktop Systemd常见问题解答。
评论
手册页将很有用(尽管我希望它更干净),但是是否有基本的系统文件教程?像哪些部分是必需的,哪些部分是推荐的,哪些部分是可选的。手册页似乎假设我已经是systemd系统文件的专家,而我不是。
–beatgammit
2011年6月21日15:54
不幸的是,我并没有意识到。可能有一个假设,就是如果您要编写初始化脚本,那么您已经知道如何编写初始化脚本。查看Arch脚本,然后选择与您所需的脚本相似的脚本:archlinux.org/packages/community/i686/systemd
– Jasonwryan
2011年6月21日在18:28
谢谢!在您的帮助和我发现的博客的帮助下,我得以基本工作。 Systemd似乎比新贵或旧的systemv init守护程序好得多。
–beatgammit
2011年6月22日4:47
谁有时间在那里开始。我的意思是,如果您知道自己在做什么,那将是一个很好的参考,但是神圣的手册页面很复杂。
–乔纳森·科玛(Jonathan Komar)
2015年4月6日在16:51
@ macmadness86 OP在寻找权威来源(请参阅最后一段);对于大多数需求,阅读类似应用程序的服务文件,然后查阅手册页的特定部分将绰绰有余。它们实际上非常简单。
– Jasonwryan
15年4月6日在18:50
#2 楼
以下示例受此链接的启发,该链接实际上并未提及所有步骤,而列出该链接只是为了说明来源:http://patrakov.blogspot.com/2011/01/writing-systemd-service-files.html第1步:我创建了此文件(注释位置),该文件实际上是使用扩展参数触发bash进程的。您可以触发自己的命令,该命令可能与bash不同。
[root@y500-fedora ~]# cat /etc/systemd/system/foo.service
[Unit]
Description=foo
[Service]
ExecStart=/bin/bash -c "while true; do /bin/inotifywait -qq --event close_write /sys/class/backlight/acpi_video0/brightness; su myusername -c '/bin/xbacklight -display :0 -set $(cat /sys/class/backlight/acpi_video0/brightness)'; done"
[Install]
WantedBy=multi-user.target
步骤2:
重新加载
systemd
:systemctl daemon-reload
开始新服务:
systemctl enable foo
(类似地,您也可以
disable
它)(可选)第3步:它应在下次重新引导进入多用户模式(运行级别3)时自动启动,但是如果您要立即启动它:
systemctl start foo
systemctl status foo # optional, just to verify
更新:为了完整起见,我应该补充一下,ubuntu bionic似乎有一个非常详尽的手册页。 RTFM在这里
评论
systemctl具有cat命令快捷方式,以供参考。
–安迪·贝蒂斯沃思(Andy Bettisworth)
16年1月11日,0:04
cat命令的快捷方式是什么?喜欢一种无需输入整个路径即可创建和编辑systemd控制文件的方法吗?
– JpaytonWPD
16年2月1日在13:23
理想情况下,此文件应具有哪些权限?
– knocte
16/12/22在8:49
@knocte的权限是没有意义的,因为它将是一个特权进程,它将读取它,而只是不写入而将其读取。该文件的位置是特权位置(/ usr / lib / systemd / ...),您可能需要一些特殊权限才能在此处添加文件。
–死灵法师
17年1月14日在21:45
根据systemd.unit手册页,应将其放在/ etc / systemd / system中。 / usr / lib / systemd是适当的分发程序包放置其文件的位置。
– wbkang
17年5月29日在0:09
#3 楼
Redhat文档是一个很好的资源。在RHEL7上创建和修改系统化的单位文件
使用SYSTEMD管理服务| systemd简介
评论
虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
–斯蒂芬·劳赫(Stephen Rauch)
17年2月24日在19:20
@StephenRauch我知道普通链接不是很受欢迎,但这是一个巨大的话题,要在答案中进行总结并不容易。
– ac骨
17年2月24日在19:26
DigitalOcean还提供了一套非常全面的教程和相关文档:digitalocean.com/community/tutorials/…
– Irbanana
18-10-31在14:09
评论
关于systemd的Arch Linux Wiki页面上有一个有趣的部分,关于编写服务文件。> man systemd.service>> man systemd.unit