0%

systemd使用笔记

Linux用systemd挂常驻应用很方便,简单记录下使用笔记。

参考的是How To Run Java Jar Application with Systemd on Linux,其中守护了一个Java Jar程序。

创建单独的用户(可以省略)

理论上不创建单独用户可以用,只要有软件和文件的执行的权限就行。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 创建一个组

sudo groupadd -r appmgr

# 创建一个用户
# -r 系统账户
# -s /bin false 没有登陆shell
# -g appmgr 加入组

sudo useradd -r -s /bin/false -g appmgr jvmapps

# 查看用户
id jvmapps

添加服务

创建一个服务文件。

sudo vim /etc/systemd/system/myapp.service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Manage Java service

# 下面指定路径、命令和用户,根据自己的命令修改。
# 命令记得带上bin文件的全部路径,比如下面的/bin/java
[Service]
WorkingDirectory=/opt/prod
ExecStart=/bin/java -Xms128m -Xmx256m -jar myapp.jar
User=jvmapps
Type=simple
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

完成后还要修改文件夹路径的权限。

sudo chown -R jvmapps:appmgr /opt/prod

使修改生效

1
2
3
4
5
6
7
8
9
sudo systemctl daemon-reload

sudo systemctl start myapp.service

# 查看app状态,按q退出
systemctl status myapp

# 如果状态fail了,通过下方的指令看日志
journalctl -u myapp -b

补充命令

1
2
3
4
5
6
7
8
9
10
11
# 重启
systemctl restart myapp

# 停止
systemctl stop myapp

# 停止守护
systemctl disable myapp

# 开启守护
systemctl enable myapp