- 作者:老汪软件技巧
- 发表时间:2024-11-05 15:02
- 浏览量:
作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
这是Linux进阶部分的最后一大章。讲完这一章以后,我们Linux进阶部分讲完以后,我们的Linux操作部分就算讲完了,后面的讲解就主要是Linux上的应用软件的讲解,包括虚拟化,容器,云原生,数据库,中间件等。Linux系统相关内容,主要从以下几个方面来讲解:
Linux系统-开关机
Linux系统-单用户模式
Linux系统-救援模式
Linux系统-僵尸&孤儿进程
Linux系统-systemd(本章节)
Linux系统-logrotate
Linux系统-发行版介绍
Linux系统-发行版rocky
Linux系统-发行版ubuntu
Linux系统-初始化
我们在讲解Linux系统-开关机的时候,讲过Linux在开机的过程中会执行init 进程,在不同的发行版及同发行版都是不一样的,而在centos7里面是使用systemd来进行系统初始化。
Systemd 是 Linux 系统的一套初始化系统和服务管理器。以下是关于 Systemd 的详细介绍:
一、主要功能系统初始化服务管理日志记录设备管理二、优势特点高效性灵活性可靠性统一管理三、使用方法服务管理命令
2. 日志查看
使用journalctl命令可以查看系统和服务的日志。可以通过各种选项来过滤和检索日志,如按时间范围、服务名称、日志级别等进行查询。
四、实操
其实上面讲的内容,除了管理命令和日志查看,其他的离普通运维还是比较远的。我们来讲点实际的,如果我们是通过yum或者rpm安装的软件,如果这个软件是以服务方式来提供的,比如安装的nginx,tomcat ,mysql等软件,他会自动生成xxx.service的文件,我们只需要配置启动或开机启动即可。但是某些软件我们是通过编译安装或者通过二进制部署则没有默认的这个xxx.service的,如果我们想把我们自己软件或者其他开源软件也以systemctl方式管控起来,则需要自己编写xxx.service文件。
在 Systemd 中,手工创建的 .service 文件通常可以放在两个主要目录中:/etc/systemd/system/ 和 /usr/lib/systemd/system/。这两个目录有以下区别:
**/etc/systemd/system/**用户自定义配置:这个目录主要用于存放用户自定义的服务配置文件。当你需要对系统中的某个服务进行特殊配置或者创建自己的服务时,可以将 .service 文件放在这个目录下。
优先级较高:Systemd 在读取服务配置文件时,会优先读取 /etc/systemd/system/ 目录下的文件。这意味着如果你在这个目录下创建了一个与系统默认服务同名的 .service 文件,Systemd 将使用这个自定义的配置文件而不是 /usr/lib/systemd/system/ 目录下的默认配置。
灵活性强:由于这个目录是用户可编辑的,你可以根据自己的需求随时修改服务配置。例如,你可以调整服务的启动参数、依赖关系、环境变量等。
下面是我们为手工编译的nginx定义的service文件(你可以根据你的实际情况调整和修改)。
[Unit]Description=Nginx Web ServerAfter=network.target remote-fs.target nss-lookup.target
[Service]Type=forkingPIDFile=/var/nginx.pidExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.confExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s stopRestart=on-failureRestartSec=5
[Install]WantedBy=multi-user.target
一、****[Unit] 部分
Description:对服务的简单描述,这里是 “Nginx Web Server”。
After:指定此服务应该在哪些系统目标之后启动,这里确保在网络和文件系统等基础服务准备好之后再启动 Nginx,几乎所有的服务都会依赖网络服务,主要因为我们添加的服务几乎都是网络服务。
二、****[Service] 部分
Type=forking:表示 Nginx 以派生(fork)的方式运行,即启动后父进程会退出,留下子进程继续运行。用得比较多的还有Type=simple。
PIDFile:指定 Nginx 进程 ID 文件的路径。
ExecStartPre:在启动服务之前执行的命令,这里是对 Nginx 配置文件进行测试,确保配置正确。
ExecStart:启动 Nginx 服务的命令,指定 Nginx 配置文件的路径。
ExecReload:重新加载 Nginx 配置的命令。
ExecStop:停止 Nginx 服务的命令。
Restart=on-failure:表示当服务出现故障时自动重启。
RestartSec=5:指定在服务出现故障后等待 5 秒再进行重启尝试。
三、****[Install] 部分WantedBy=multi-user.target:表示此服务在多用户模式下被需要,当系统进入多用户模式时,Systemd 会自动启动这个服务。
要使用这个服务文件,执行以下步骤:
systemctl daemon-reload
# 让Systemd 重新加载服务定义。
systemctl start nginx
#启动 Nginx 服务。
systemctl stop nginx
# 停止服务。
systemctl restart nginx
# 重启服务。
systemctl status nginx
# 查看服务状态等。
总结
1.我们可以通过配置xx.service把自己的业务纳入systemctl进行统一管控。
2.我们还可以根据需要配置是否进行开机启动,如果涉及到依赖关系,还可以决定谁先启动,谁后启动,如果出现意外则可以自动重启等功能。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!