Linux自定义系统服务



一. Linux系统服务

Linux 系统服务有时也称为守护程序,是在Linux启动时自动加载并在Linux退出时自动停止的系统任务,CentOS 7.x开始,CentOS开始使用 systemd服务来代替 daemon ,原来管理系统启动和管理系统服务的相关命令全部由 systemctl命令来代替。
下面是一些常用的命令:
查看当前系统中所有系统服务:

systemctl list-unit-files

查看当前系统中正在运行的服务:

systemctl list-units --type service

查看某个特定的服务:

systemctl | grep "服务名"

查看服务占用的端口:

netstat -pnltu

系统服务的好处是,可以使用很多针对系统服务的命令,设置开机自启等,也更方便与任务进程的管理,那么我门怎么把一个非系统服务的进程加入到系统服务中去呢?

二. 自定义系统服务

如果是单纯的想要达到一个开机自启动的效果,其实除了注册为系统服务后配置,还可以使用下面的方法进行配置:
编辑开机启动的配置文件:

vim /etc/rc.d/rc.local

列如让Nginx开机自启动则在文件中添加下面一行代码:

/usr/local/nginx/sbin/nginx

值得注意的是:软件的启动命令必须独占一行
如果需要将软件配置为系统服务,实现更方便的管理模式的话,我们可以在/usr/lib/systemd/system格式为下的服务文件:

服务名.service

用下面的模板格式配置软件的启动命令以及依赖环境等:

[Unit]:            服务的说明
Description:       描述服务
After:             描述服务类别

[Service]             服务运行参数的设置
Type=forking          是后台运行的形式
ExecStart             为服务的具体运行命令/启动该服务的命令
ExecReload            为重启命令
ExecStop              为停止命令
PrivateTmp=True       表示给服务分配独立的临时空间

[Install]
WantedBy=multi-user.target 服务安装的相关设置,可设置为多用户,这玩意默认就这样写就行

值得注意的是:启动、重启、停止命令全部要求使用绝对路径因为需要找到该服务对应的操作脚本
这样我们就可以用systemctl命令来管理这个软件了
下面我们以将nginx注册为系统服务为例:
创建并编辑服务文件:

vim /usr/lib/systemd/system/nginx.service

内容如下:

 [Unit]
 Description=nginx - high performance web server
 After=network.target remote-fs.target nss-lookup.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
 ExecStop=/usr/local/nginx/sbin/nginx -s stop
    
 [Install]
 WantedBy=multi-user.target

保存后就可以使用systemctl命令来操作nginx了

猜你喜欢

转载自blog.csdn.net/Siebert_Angers/article/details/129092299