【运维】Linux自定义服务以及注意事项


前言

之前有一篇文章,讲述了windows系统上设置开机自启的相关方法。

关于Linux的开机自启,常见的是自定义服务,并设置开机自启,但也有一些坑需要注意,特记此文,分享给大家

前提
本文中所使用的系统:Ubuntu 22.04
服务管理器:systemd


一、自定义服务

Linux中一切皆文件,服务也不例外,同样是通过一个文件来定义的

一般存放在此路径下: /etc/systemd/system

基本步骤:

  1. 切换到目录
  2. 创建文件your_service_name.service
  3. 编辑文件,写入配置
cd /etc/systemd/system

touch your_service_name.service

# 注意:编辑system目录下的文件需要管理员权限,
# 所以要么使用root账号,
# 要么给当前登录账号分配管理权限
sudo vi your_service_name.service

打开your_service_name.service,填入下面内容(忽略注释)

[ Unit]
# 服务简要描述
Description=The example service desc
# 在xxx服务之后启动,若无依赖,则不需要配置
After=network.target

# 这里是服务的相关执行内容配置
[Service]
# 可直接复用
Type=simple
# systemctl start/restart/stop service_name真正执行的脚本
# 这里可以配置脚本,也可以直接配置命令
ExecStart=/home/xxx/xxx/Start.sh
ExecReload=/home/xxx/xxx/Reload.sh
ExecStop=/home/xxx/xxx/Stop.sh

# 什么情况下自动重启
Restart=on-failure
# 启动服务使用的用户
User=root
# 启动服务的用户所在的用户组
Group=root
# 服务启动的工作目录
WorkingDirectory=/home/xxx/xxx

# 可直接复用
[Install]
WantedBy=multi-user.target

二、调试验证以及注意事项

1.重载systemd配置

目录 /etc/systemd/system 下文件出现增删改后,需要重载systemd配置

sudo systemctl daemon-reload

2.验证并设置为开机自启

# 启动
sudo systemctl start your_service_name

# 重启
sudo systemctl restart your_service_name

# 停止
sudo systemctl stop your_service_name

上面命令执行后,查看一下服务状态

systemctl status your_service_name

启动后的状态
在这里插入图片描述
设置开机自启

sudo systemctl enable your_service_name

3.注意事项

  1. your_service_name.service中ExecStart、ExecStop、ExecReload配置可执行之后,对应的systemctl start/restart/stop命令才能执行成功,否则会超时失败
  2. systemctl start命令会在后台挂起运行,所以Start.sh脚本中不需要nohup等自动挂起命令,否则会启动失败
  3. 也不要通过相关daemon配置。Start.sh文件最终应该是服务启动态,而不是直接执行结束。如果执行结束,则会出现:服务启动后立刻进入dead状态
  4. 配置好之后,启动、关闭、重启命令都要验证一下
  5. 设置开机自启后,重启机器验证一下

出现问题后排查方法

# 查看服务的状态
systemctl status your_service_name

# 查看服务是否自启
sudo systemctl list-unit-files --type=service | grep your_service_name

# 查看服务依赖
sudo systemctl list-dependencies your_service_name

# 查看系统日志
journalctl -xeu your_service_name

# 重启机器
sudo reboot -f 
# 或
sudo shutdown -r now

总结

本文讲述了在Ubuntu系统上,自定义服务过程和注意事项。

实现类似功能还有其他方法,比如crontab命令,感兴趣的同学可以自行查询资料实现,这里不再赘述。

有其他问题,请留言,看到会回复

最好的祝愿!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值