操作服务的命令

在Linux中管理服务,需要使用systemctl命令,例如常用的打开/关闭防火墙

$ systemctl start firewalld
$ systemctl stop firewalld

在这里列举一下systemctl命令常用的操作

# 启动服务
$ systemctl start xxx

# 停止服务
$ systemctl stop xxx

# 重启服务
$ systemctl reload xxx

# 启用服务开机自启
$ systemctl enable xxx

# 关闭服务开机自启
$ systemctl disable xxx

# 查看服务状态
$ systemctl status xxx

# 查看服务是否正在运行
$ systemctl is-active xxx

# 查看服务是否启动失败
$ systemctl is-failed xxx

# 查看服务是否开机自启
$ systemctl is-enabled xxx

# 查看服务列表
$ systemctl list-units xxx

# 刷新服务配置
$ systemctl daemon-reload

服务文件

我们操作的服务都是以文件的形式存储在系统中,服务文件的存储位置有两处,其中一个位于/etc/systemd/system,systemctl会读取该目录下的服务文件并执行,同时该目录中有一些文件为符号连接,连接的地址为/usr/lib/systemd/system,这个是真正存放服务的目录

标准的服务文件以.service结尾,文件内容包括UnitServiceInstall三个区块,我在/opt/java目录下上传了practice-web.jar的文件,接下来就为他编写服务文件

一般来说自建服务在/etc/systemd/system目录下就可以了,在该目录下创建practice-web.service文件,内容为:

[Unit]
# 服务描述
Description=practice-web.jar

[Service]
# 服务类型为简单服务
Type=simple
# 任何用户都可以使用
User=nobody
# 服务执行时启动的命令,注意这里必须使用绝对路径
ExecStart=/usr/local/jdk-17.0.1/bin/java -jar /opt/java/practice-web.jar

[Install]
# 自启模式配置
WantedBy=multi-user.target

文件编写完成后重新载入服务配置,然后就可以像启动防火墙一样启动jar包

# 刷新服务配置
$ systemctl daemon-reload

# 启动jar包服务
$ systemctl start practice-web.service

# 设置服务开机自启
$ systemctl enable practice-web.service

可以留意一下在/etc/systemd/system目录下有个multi-user.target.wants目录,而服务配置文件中有一段WantedBy=multi-user.target,当启用服务开机自启后,该目录下就会生成符号连接,这就是WantedBy的作用

更多服务详细信息可以到阮一峰博客去看,写的非常详细