linux:制作systemctl系统服务

用yum安装的软件(比如nginx)可以直接使用systemctl来管理 ,但是如果是源码安装的,无法使用systemctl来管理。

systemctl管理的原理:

1、我们在/usr/lib/systemcd/system下有各种.service文件

也就是说,要想被systemctl管理,就要在/usr/lib/systemd/system目录下,该软件就必须要在这个目录下创建这样一个.service文件。

2、我们以niginx为例,系统自带的nginx软件,在/usr/lib/systemd/system目录下有nginx.service文件

我们cat nginx.service看看里面的内容(cat sshd.service里面的内容,也大体一致):

[Unit]
Description= mynginx service(服务描述)
After=network-online.target(我这个服务在network-online启动之后启动) remote-fs.target nss-lookup.target(可加可不加)
Wants=network-online.target(可以不要)

[Service]
Type=forking(默认,用forking来启动我的进程)
PIDFile=/run/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t(运行start命令)
ExecStart=/usr/sbin/nginx (运行start命令)
ExecReload=/usr/sbin/nginx -s reload (运行reload命令)
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target(在哪个运行级别)

3、我们以nginx为例,创建mynginx.service文件

cd /usr/lib/systemd/system

vim mynginx.service

[Unit]
Description= mynginx service(服务描述)
After=network-online.target(我这个服务在network-online启动之后启动)

[Service]
Type=forking(默认,用forking来启动我的进程)
ExecStart=/usr/local/nginx/sbin/nginx (运行start命令)
ExecStop=/usr/local/nginx/sbin/nginx -s stop (运行stop命令)
ExecRestart=/usr/local/nginx/sbin/nginx -s restart(运行restart命令)
ExecReload=/usr/local/nginx/sbin/nginx -s reload (运行reload命令)
[Install]
WantedBy=multi-user.target(在哪个运行级别)

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值