1.添加自定义服务
有些程序安装好之后并未添加到systemctl服务管理中,比如,通过源码安装的程序。找到systemctl服务管理的根文件夹:/usr/lib/systemd/system/
自定义一个服务名,一般就按照安装服务原名,并且编辑:
vim /usr/lib/systemd/system/nginx.service
添加以下代码:
注意:经测试,只添加 start 状态,其他状态不添加也能直接用
[Unit] 服务的说明
Description 描述服务
After 描述服务类别
[Service] 服务运行参数的设置
Type=forking 是后台运行的形式
ExecStart 为服务的具体运行命令
ExecRestart 为重启命令(中断重启)
ExecReload 为重启命令(平滑重启)
ExecStop 为停止命令
PrivateTmp=True 表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径
[Install] 服务安装的相关设置,可设置为多用户
可以添加几个命令,可以进行查看:(如mysql
)
2.刷新服务
systemctl daemon-reload
3.操作命令
systemctl start nginx
#启动服务
systemctl stop nginx
#停止服务
systemctl restart nginx
#重启服务
systemctl status nginx
#查看服务
systemctl enable nginx
#开机自启
systemctl disable nginx
#开机不自启
4.一般用例
4.1 源码安装nginx
安装目录 /usr/local/nginx
vim /etc/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx reload
ExecStop=/usr/local/nginx/sbin/nginx quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
4.2 源码安装 tomcat
安装目录 /usr/local/tomcat
vim /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
ExecReload=/bin/kill -s HUP
#ExecStop=/bin/kill -s QUIT
#能用,但是查看状态的时候会显示有误
PrivateTmp=true
[Install]
WantedBy=multi-user.target
4.3 源码安装mysql
安装目录 /usr/local/mysql
vim /etc/systemd/system/mysql.service
[Unit]
Description=mysql
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecReload=/usr/local/mysql/support-files/mysql.server reload
ExecStop=/usr/local/mysql/support-files/mysql.server stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
4.3 源码安装Redis
安装目录 /usr/local/redis
配置文件为 /usr/local/redis/conf/redis.conf
vim /etc/systemd/system/redis.service
[Unit]
Description=redis
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecStop=/usr/local/bin/redis-cli -a string1307 shutdown
#必须添加密码,否则可能报错
ExecReload=/bin/kill -s HUP $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target