linux systemd

扶醉桌前 提交于 2021-01-14 07:44:56

进入 root 权限

Systemd 默认从目录/etc/systemd/system/读取配置文件。 但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/。

vim xxx.serive

[Unit]
Description=caftpgo
#在xxx启动之后
After=network.target
#在xxx启动之前
#Before=
#依赖
#弱依赖关系
#Wants=
#强依赖关系
#Requires=

#启动行为
[Service]
TimeoutStartSec=30
#环境参数文件
#EnvironmentFile=
#启动类型 simple(默认值)forking oneshot dbus notify idle
#Type=
WorkingDirectory=/home/iretailer/ftpServer/goftp/
ExecStart=/home/iretailer/ftpServer/goftp/caftp_go
#Restart字段:定义了 sshd 退出后,Systemd 的重启方式
Restart=always
RestartSec=10
StartLimitInterval=0

[Install]
#表示该服务所在的 Target。
WantedBy=multi-user.target

各种参数可选值

Type

Type字段定义启动类型。它可以设置的值如下:

  • simple(默认值):ExecStart字段启动的进程为主进程
  • forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程
  • oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务
  • dbus:类似于simple,但会等待 D-Bus 信号后启动
  • notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务
  • idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合

Restart

Restart字段可以设置的值如下:

  • no(默认值):退出后不会重启
  • on-success:只有正常退出时(退出状态码为0),才会重启
  • on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
  • on-abnormal:只有被信号终止和超时,才会重启
  • on-abort:只有在收到没有捕捉到的信号终止时,才会重启
  • on-watchdog:超时退出,才会重启
  • always:不管是什么退出原因,总是重启

#启动

#开机启动
sudo systemctl enable xxx.service
sudo systemctl start xxx.service
#服务的状态状态
sudo systemctl status xxx.service
sudo systemctl disable xxx.service

JAVA 启动例子

[Unit]
Description=sendmail
After=network.target

[Service]
TimeoutStartSec=30
WorkingDirectory=/root/sendMail
ExecStart=/usr/bin/java -jar /root/sendMail/sendmail.jar
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

Timer

[Unit]
Description=Runs mytimer every hour

[Timer]
#每天17点执行
OnCalendar= *-*-* 17:00:00
Unit=mytimer.service

[Install]
WantedBy=multi-user.target

[Unit]部分定义元数据。

[Timer]部分定制定时器。Systemd 提供以下一些字段。

  • OnActiveSec:定时器生效后,多少时间开始执行任务
  • OnBootSec:系统启动后,多少时间开始执行任务
  • OnStartupSec:Systemd 进程启动后,多少时间开始执行任务
  • OnUnitActiveSec:该单元上次执行后,等多少时间再次执行
  • OnUnitInactiveSec: 定时器上次关闭后多少时间,再次执行
  • OnCalendar:基于绝对时间,而不是相对时间执行
  • AccuracySec:如果因为各种原因,任务必须推迟执行,推迟的最大秒数,默认是60秒
  • Unit:真正要执行的任务,默认是同名的带有.service后缀的单元
  • Persistent:如果设置了该字段,即使定时器到时没有启动,也会自动执行相应的单元
  • WakeSystem:如果系统休眠,是否自动唤醒系统
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!