服务的新建和规格解析
目前只针对systemctl 和systemd,关于service,后续补充对比!
服务 —— Linux下运行的软件我们通常把他注册为服务,
这样我们就可以通过命令开启、关闭以及保持开机启动等功能。
1、linux(以CentOS7为例)的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,需要开机不登陆就能运行的程序,存在系统服务里,即:/usr/lib/systemd/system目录下。
2、CentOS7的每一个服务以.service结尾,
一般会分为3部分:[Unit]、[Service]和[Install]
示例:
#vim /usr/lib/systemd/system/test.service
[Unit] ------主要是对这个服务的说明
Description=java test project ------用于描述服务
After=test.service ------用于描述服务类别/服务的启动顺序,在某种条件达到后才执行
[Service] ------ 一些具体运行参数的设置
Type=forking ------给当前的服务单元设置进程的启动类型
Simple、forking、oneshot、dbus、notify
User=users -------设置服务运行的用户
Group=users -------设置服务运行的用户组
PIDFile=/usr/local/test/test.pid -------存放PID的文件路径
ExecStart=/usr/local/test/bin/startup.sh -----服务的具体运行命令【绝对路径】
ExecReload= --------重启命令【绝对路径】
ExecStop=/usr/local/test/bin/shutdown.sh -----停止命令【绝对路径】
PrivateTmp=true ---------给服务分配独立的临时空间
[Install]
WantedBy=multi-user.target -----服务安装的相关设置,可设置为多用户的
3、首先使用systemctl start [ 服务名(也是文件名) ] 可测试服务是否可以成功运行,
如果不能运行则可以使用systemctl status [ 服务名(也是文件名) ]查看错误信息和其他服务信息,然后根据报错进行修改,直到可以start,如果不放心还可以测试restart和stop命令。接着,只要使用systemctl enable xxxxx就可以将所编写的服务添加至开机启动即可。
4、systemctl常用命令
systemctl enable test.service --------设置为开机自启动,使某服务自动启动;
systemctl disable test.service --------使某服务不自动启动
systemctl start test.service --------启动某服务
systemctl stop test.service --------停止某服务
service test restart --------重启某服务
systemctl restart test.service --------重启某服务
systemctl status test.service --------检查服务状态