linux的service管理

更新时间 🔔🕙 2024年1月6日

在centos6上面,
一直使用

service mongod start/stop/restart/status

但是,在centos7和ubuntu16.04之后的版本上,service命令就有点不好用了。
可以使用systemctl命令来完成操作。

systemctl is-enabled servicename.service #查询服务是否开机启动
systemctl enable *.service #开机运行服务
systemctl disable *.service #取消开机运行
systemctl start *.service #启动服务
systemctl stop *.service #停止服务
systemctl restart *.service #重启服务
systemctl reload *.service #重新加载服务配置文件
systemctl status *.service #查询服务运行状态
systemctl daemon-reload #重新加载一些更改了配置的基础程序配置

为某个程序创建多个service。
例如:mongodb,默认有一个service,但是我们有时候要多开server,需要创建多个service。
service文件,一般存在于【/etc/systemd/system】,或是【/lib/systemd/system/】
例如原始的mongodb的service【/lib/systemd/system/mongod.service】,

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
Documentation=https://docs.mongodb.org/manual

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
PIDFile=/var/run/mongodb/mongod.pid
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false

# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings

[Install]
WantedBy=multi-user.target

我们只需要复制该文件,更改里面的【ExecStart】,就可以创建多个service了。

cp ./mongod.service ./mongod_a.service
# 然后修改【ExecStart】的值
# 然后enable就可以开机自启动
systemctl enable mongod_a.service
# 启动该服务
systemctl start mongod_a.service
# 查看服务启动状态,以及启动失败原因
systemctl status redis-server.service
journalctl -xe

自定义自启动脚本

我们经常使用的,就是创建一个开机自启动的脚本,执行我们自定义的一些配置。
首先,我们创建一个文件【/data/tools/init/startup.sh】,里面创建的脚本是

#!/bin/sh
echo "1111\n" >> /data/tools/init/111.log

接下来创建service。创建文件【/lib/systemd/system/cus-startup.service】

[Unit]
Description=cus startup init
After=network.target
[Service]
Type=simple
ExecStart=/data/tools/init/startup.sh
[Install]
WantedBy=multi-user.target

这样,就可以执行【systemctl enable cus-startup】来开机自启动脚本。
我们也可以手动再次执行【service cus-startup start】来启动这个脚本。

转载请备注引用地址:编程记忆 » linux的service管理