systemctl 服务编写
Linux 服务
启动Linux服务,一般有两种方法, 一种是service
, 一种是systemctl
1 | service nginx start |
service
是比较老的系统的管理方式, systemctl
是比较新的管理方式,一些老的系统不支持systemctl
, 但新的系统systemctl
会兼容service
service start
其实执行的是/etc/init.d/
下面的shell脚本,脚本中定义了start,stop等操作。这些脚本需要我们自己编写。
systemctl
是比较新的系统里的服务管理方式,systemctl
脚本都放在/etc/systemd/system/
(Ubuntu)或者/usr/lib/systemd/system
(Centos)下。如果在该目录下找不到相应的脚本,它会去/etc/init.d
目录下找service
的启动脚本。
systemd init系统
大部分Linux发行版,如Rhel,CentOS,Fedora,Ubuntu,Debian和Archlinux,都采用systemd作为其初始系统。实际上,Systemd不仅仅是一个init系统,这也是为什么有些人强烈反对其设计的原因之一,这违背了公认的unix座右铭:“做一件事,做得好”。systemd使用自己的.service文件, 其他init系统使用简单的shell脚本来管理服务,不过慢慢的就会被systemctl取代,这里主要介绍systemcl的一些操作以及systemd服务脚本编写。
基本命令
启动与停止
1
2systemctl stop nginx
systemctl start nginx查看服务状态
1
systemctl status nginx
设置服务开机启动
1
systemctl enable nginx
查看服务log
1
journalctl -u foo-daemon
自定义服务
新建一个systemd service file /etc/systemd/system/demo.service
1 | sudo touch /etc/systemd/system/demo.service |
写入以下内容, /usr/sbin/demo
可以是自己随便写一个小程序
1 | [Unit] |
加载脚本
1 | sudo systemctl daemon-reload |
现在 就创建了一个linux服务,我们就可以用systemctl操作我们服务了
1 | sudo systemctl start demo |
更多有关systemctl介绍 请查看systemd