简单的Linux服务管理

在这里记录一些基础的 Linux 服务管理维护方式,作为程序员,总是会用到的。

手动运行

以一个 Java Web 项目为例,手动运行 Jar 包可能是这样的:

nohup java -jar YongWang-1.0-SNAPSHOT.jar > /dev/null 2>&1 &

这样程序就可以在后台运行,但是有一些缺点:

  • 系统重启后程序不会启动
  • 只能通过 ps 查询进程状态
  • 想要关闭程序的话,需要通过 ps 查找进程号,然后手动 kill
  • 难以接入各种自动化工具

因此,将程序注册为服务是一个更好的选择。

使用 root 用户操作系统级服务

注册服务

如果想将我们的程序注册为服务,首先需要编写一个配置文件,这个文件可以放在 /etc/systemd/system/ 路径下。

文件的名称一般参考服务的名称,并以 .server 结尾,因此在这个例子中,我的文件名为 yongwang.service

yongwang.service
[Unit] Description=YongWang Server [Service] WorkingDirectory=/home/vc/ywyl/server/ ExecStart=java -jar YongWang-1.0-SNAPSHOT.jar [Install] WantedBy=multi-user.target

之后,需要通过命令注册服务

systemctl daemon-reload

服务管理命令

后续我们对服务的管理,一般包括:

  • 启动服务
systemctl start yongwang
  • 停止服务
systemctl stop yongwang
  • 查看服务状态
systemctl status yongwang
  • 设置开机自启
systemctl enable yongwang
  • 取消开机自启
systemctl disable yongwang

使用普通用户注册用户级服务

注册服务

对于非 root 用户,也可以使用自身的权限注册用户级服务,将配置文件编写在 /etc/systemd/user/ 路径下:

yongwangapp.service
[Unit] Description=YongWang Server [Service] WorkingDirectory=/home/lenovo/vc/ywyl/server/ ExecStart=java -jar YongWang-1.0-SNAPSHOT.jar [Install] WantedBy=multi-user.target

服务管理命令

普通用户的服务管理命令与 root 用户相似,但都需要添加 --user 参数,例如:

systemctl --user start yongwang

简单的Linux服务管理
https://vitsumoc.github.io/简单的Linux服务管理.html
作者
vc
发布于
2024年5月22日
许可协议