进入 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:如果系统休眠,是否自动唤醒系统
来源:oschina
链接:https://my.oschina.net/u/3350266/blog/3004686