如何自己写一个systemd.service文件

systemd.service

1 文件路径

/etc/systemd/system(供系统管理员和用户使用)
/usr/lib/systemd/system(供发行版打包者使用)

2 内容

0 组成结构
  • [Unit] 控制单元
  • [Service] 服务
  • [Install] 安装

以SSH为例:

sudo cat /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
1 定义控制单元 [Unit]
  • Description:代表整个单元的描述,可根据需要任意填写。
  • Documentation:指示文档位置
  • Wants:本单元启动了,它“想要”的单元也会被启动,但如果这个单元启动不成功,对本单元没有影响。
  • Requires: 这个单元启动了,那么它“需要”的单元也会被启动; 它“需要”的单元被停止了,它自己也活不了。但是请注意,这个设定并不能控制启动顺序,因为它“需要”的单元启动也需要时间,若它“需要”的单元启动还未完成,就开始启动本单元,则本单元也无法启动,所以不建议使用这个字段
  • OnFailure:若本单元启动失败了,那么启动这个单元作为折衷。
  • Before/After:指定启动顺序
2 定义服务本体 [service]
  • Type:服务的类型,各种类型的区别如下所示
    • simple:默认,这是最简单的服务类型。意思就是说启动的程序就是主体程序,这个程序要是退出那么一切皆休。
    • forking:标准 Unix Daemon 使用的启动方式。启动程序后会调用 fork() 函数,把必要的通信频道都设置好之后,父进程退出,留下守护精灵的子进程。
    • oneshot:适用于那些被一次性执行的任务或者命令,它运行完成后便了无痕迹。因为这类服务运行完就没有任何痕迹,我们经常会需要使用 RemainAfterExit=yes。意思是说,即使没有进程存在,Systemd 也认为该服务启动成功了。同时只有这种类型支持多条命令,命令之间用;分割,如需换行可以用\
    • dbus:这个程序启动时需要获取一块 DBus 空间,所以需要和 BusName= 一起用。只有它成功获得了 DBus 空间,依赖它的程序才会被启动。
  • ExecStart:在输入的命令是start时候执行的命令,这里的命令启动的程序必须使用绝对路径,比如你必须用/sbin/arp而不能简单的以环境变量直接使用arp
  • ExecStop:在输入的命令是stop时候执行的命令,要求同上
  • ExecReload:这个不是必需,如果不写则你的service就不支持restart命令。ExecStart和ExecStop是必须要有的。
3 安装服务 [install]

意义:服务编写完之后还需要被systemd装载

  • WantedBy:设置服务被谁装载,一般设置为multi-user.target
  • Alias:为service设置一个别名,可以使用多个名字来操作服务。
  • Also:在安装这个服务时候还需要的其他服务
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值