目录
前言
两种方式
/etc/systemd/system/
进入 /etc/systemd/system/ 文件夹
创建 nginx.service 文件
重新加载 systemd 配置文件
编辑 配置开机自启
/etc/init.d/
进入 /etc/init.d/ 文件夹
创建 mysql 文件
编写脚本内容
添加/删除系统服务
配置开机自启
查看 chkconfig 下的开机自启动服务
编辑总结
文件模板
脚本模板
前言
在服务器上安装各种软件,比如 nginx,mysql,redis 等等,如果没有配置环境变量,每次启动都需要进入到对应的安装目录下执行命令来启动。即使配置了环境变量,在启动时可能也需要指定某些启动参数,需要额外得输入,相对麻烦。
针对以上的问题,可以将制作成系统服务,通过 service 命令 或者 systemctl 命令来启动
service 服务名称 startsystemctl start 服务名称
两种方式
- /etc/systemd/system/
- /etc/init.d/
第一种即是在 /etc/systemd/system/ 文件夹下创建服务文件
第二种即是在 /etc/init.d/ 文件夹下创建服务文件
详情如下
/etc/systemd/system/
以创建 nginx 系统服务为例子
进入 /etc/systemd/system/ 文件夹
cd /etc/systemd/system/
创建 nginx.service 文件
vim nginx.service
写入以下内容
注意:路径需要替换成自己的安装路径
[Unit]
Description=Nginx HTTP Server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload -c /usr/local/nginx/conf/nginx.conf
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true[Install]
WantedBy=multi-user.target
重新加载 systemd 配置文件
systemctl daemon-reload
重新加载后,就能通过 service 或者 systemctl 来启动服务了
#启动服务
systemctl start nginx
#停止服务
systemctl stop nginx
#重启服务
systemctl restart nginx
#查看服务状态
systemctl status nginx
配置开机自启
#开启开机自启动
systemctl enable nginx
#关闭开机自启动
systemctl disable nginx
/etc/init.d/
以创建 mysql 系统服务为例子
进入 /etc/init.d/ 文件夹
cd /etc/init.d/
创建 mysql 文件
vim mysql
编写脚本内容
脚本可以自己写,在此例中用的mysql,mysql 有提供一个启动脚本,直接复制即可
官方下载 mysql 包下,安装目录下的 support-files 下有一个 mysql.server 脚本
复制 mysql.server 内容到 /etc/init.d/mysql
cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
授权
chmod +x /etc/init.d/mysql
添加/删除系统服务
#添加系统服务
chkconfig --add mysql
#删除系统服务
chkconfig --del mysql
添加服务后,就能通过 service 或者 systemctl 名来来启动服务了
配置开机自启
#开启开机自启动
chkconfig mysql on
#关闭开机自启动
chkconfig mysql off
查看 chkconfig 下的开机自启动服务
chkconfig --list
总结
两种方式都可以配置服务
第一种配置方式相对简单,只需在 /etc/systemd/system/ 文件夹下创建文件,复制模板后修改下命令,写入文件后重新加载下就行了
文件模板
[Unit]
Description=服务名称
After=network.target[Service]
Type=forking
ExecStart=启动命令
ExecReload=重启命令
ExecStop=停止命令
PrivateTmp=true[Install]
WantedBy=multi-user.target
第二种配置方式大同小异,在 /etc/init.d/ 文件夹下创建脚本,需要自己写启动脚本,更加地灵活,如果启动服务需要用到动态的启动参数,那么就可以用第二种方式来配置
脚本模板
#!/bin/bashcase $1 instart)#启动命令echo "service is started";;stop)#关闭命令echo "service is stop";;restart)#重启命令echo "service is started";;*)echo "start|stop|restart";;
esac
exit 0