您现在的位置是:首页 >技术交流 >从零开始学习Linux运维,成为IT领域翘楚(九)网站首页技术交流

从零开始学习Linux运维,成为IT领域翘楚(九)

造次阿 2024-06-09 00:00:03
简介从零开始学习Linux运维,成为IT领域翘楚(九)

?Linux系统服务

在这里插入图片描述

Service命令

服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程。

语法:

service 服务名 [start | stop | restart | reload | status]

注意:

service命令其实是去/etc/init.d目录下,去执行相关程序

示例1

查看当前防火墙的状况,关闭防火墙和重启防火墙。

 [root@zk3 ~]# service iptables status

Systemd命令

Linux的启动一直采用init进程。

$ sudo /etc/init.d/apache2 start
# 或者
$ service apache2 start

两个缺点:

一是启动时间长。 init 进程是串行启动只有前一个进程启动完,才会启动下一个进程。

二是启动脚本复杂。 init 进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。

systemctl

systemctl 是 Systemd 的主命令,用于管理系统。

System V init命令systemctl命令作用
service foo startsystemctl start foo.service启动服务
service foo restartsystemctl restart foo.service重启服务
service foo stopsystemctl stop foo.service停止服务
service foo reloadsystemctl reload foo.service重新加载配置文件(不终止服务)
service foo statussystemctl status foo.service查看服务状态

systemd-analyze

systemd-analyze 命令用于查看启动耗时。

# 查看启动耗时
$ systemd-analyze                            
# 查看每个服务的启动耗时
$ systemd-analyze blame
# 显示瀑布状的启动过程流
$ systemd-analyze critical-chain
# 显示指定服务的启动流
$ systemd-analyze critical-chain atd.service

hostnamectl

hostnamectl 命令用于查看当前主机的信息。

# 显示当前主机的信息
$ hostnamectl
# 设置主机名。
$ sudo hostnamectl set-hostname rhel7

timedatectl

timedatectl 命令用于查看当前时区设置。

# 查看当前时区设置
$ timedatectl
# 显示所有可用的时区
$ timedatectl list-timezones                
# 设置当前时区
$ sudo timedatectl set-timezone
America/New_York
$ sudo timedatectl set-time YYYY-MM-DD
$ sudo timedatectl set-time HH:MM:SS

Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。

⭐	systemctl 是 Systemd 的主命令管理系统
⭐	systemd-analyze 命令用于查看启动耗时。
⭐	hostnamectl 命令用于查看当前主机的信息。
⭐	localectl 命令用于查看本地化设置。
⭐	timedatectl 命令用于查看当前时区设置。

Chkconfig

chkconfig命令用来更新、查询、改动不同执行级上的系统服务。比方安装了httpd服务,而且把启动的脚本放在了/etc/rc.d/init.d文件
夹下,有时候须要开机自己主动启动它,而有时候则不须要,因此,就能够使chkconfig命令来进行控制。

选项:

参数参数说明
–add将相应的服务加入chkconfig管理
–del将相应的服务从chkconfig管理中删除
–level查看相应服务的运行级别

示例1

列出chkconfig 所知道的所有命令。

# chkconfig --list

开启服务。

# chkconfig telnet on //开启Telnet 服务
# chkconfig --list     //列出chkconfig 所知道的所有的服务的情况

关闭服务

# chkconfig telnet off // 关闭 Telnet 服务
# chkconfig --list     // 列出chkconfig所知道的所有的服务的情况

systemctl 设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令

System V init 命令systemctl 命令作用
chkconfig foo onsystemctl enable foo.service开机自动启动
chkconfig foo offsystemctl disable foo.service开机不自动启动
chkconfig foosystemctl is-enabled foo.service查看特定服务是否为 开机自动启动
chkconfig --listsystemctl list-unit-files --type=service查看各个级别下服务 的启动与禁用情况

附录:

经常使用服务介绍

amd:  		   # 自己主动安装网络文件系统守侯进程
apmd:          # 高级电源管理
Arpwatch:     # 记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库
Autofs:       # 自己主动安装管理进程automount。与NFS相关,依赖于NIS
Bootparamd:   # 引导參数server。为LAN上的无盘工作站提供引导所需的相关信息
crond:        # 计划任务
Dhcpd:        # 启动一个动态IP地址分配server
Gated:        # 网关路由守候进程,使用动态的OSPF路由选择协议
Httpd:        # WEBserver
Inetd:        # 支持多种网络服务的核心守候程序
Innd:         # Usenet新闻server
Linuxconf:    # 同意使用本地WEBserver作为用户接口来配置机器
Lpd:          # 打印server
Mars-nwe:     # mars-nwe文件和用于Novell的打印server
Mcserv:       # Midnight命令文件server
named:        # DNSserver
netfs:        # 安装NFS、SambaNetWare网络文件系统
network:      # 激活已配置网络接口的脚本程序
nfs:          # 打开NFS服务
nscd:         # nscdserver,用于NIS一个支持服务,它快速缓存用户口令和组成成员关系
portmap:      # RPC portmap管理器,与inetd相似,它管理基于RPC服务的连接
postgresql:   # 一种SQL数据库server。
routed:       # 路由守候进程,使用动态RIP路由选择协议
rstatd:       # 一个为LAN上的其他机器收集和提供系统信息的守候程序
ruserd:       # 这是一个基于RPC的服务。它提供关于当前记录到LAN上一个机器日志中的用户信息
rwalld:       # 这是一项基于RPC的服务。同意用户给每一个注冊到LAN机器的其他终端写消息
rwhod:        # 激活rwhod服务进程。它支持LAN的rwho和ruptime服务
sendmail:     # 邮件serversendmail
smb:          # Samba文件共享/打印服务
snmpd:        # 本地简单网络管理候进程
squid:        # 激活代理serversquid
syslog:       # 一个让系统引导时起动syslog和klogd系统日志守候进程的脚本
xfs:          # X Window字型server,为本地和远程Xserver提供字型集
xntpd:        # 网络时间server
ypbind:       # 为NIS(网络信息系统)客户机激活ypbind服务进程
yppasswdd:    # NIS口令server
ypserv:       # NIS主server
gpm:          # 管鼠标的服务
identd:       # AUTH服务。在提供用户信息方面与finger相似

?Linux系统定时任务

在这里插入图片描述

什么是定时任务

定时任务命令是cond,crond就是计划任务,类似于我们平时生活中的闹钟,定点执行。

为什么要用crond

计划任务主要是做一些周期性的任务,比如凌晨3点定时备份数据、晚上23点开启网站抢购接口、凌晨0点关闭抢占接口等。

计划任务主要分为以下两种使用情况:

?	系统级别的定时任务
临时文件清理、系统信息采集、日志文件切割

?	用户级别的定时任务
定时向互联网同步时间、定时备份系统配置文件、定时备份数据库的数据。

crontab配置文件

[root@centos7 ~]# vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6)(Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
备注:
1* 表示任意的(分、时、日、月、周)时间都执行
2- 表示一个时间范围段,5-73, 表示分隔时段,6,0,4表示周六、日、四
4/1 表示每隔n单位时间,*/1010分钟

crontab的时间编写规范

00 02 * * * ls          #每天的凌晨2点整执行
00 02 1 * * ls          #每月的1日的凌晨2点整执行
00 02 14 2 * ls         #每年的214日凌晨2点执行
00 02 * * 7 ls          #每周天的凌晨2点整执行
00 02 * 6 5 ls          #每年的6月周五凌晨2点执行
00 02 14 * 7 ls         #每月14日或每周日的凌晨2点都执行
00 02 14 2 7 ls         #每年214日或每年2月的周天的凌晨2点执行
*/10  02 * * * ls       #每天凌晨2点,每隔10分钟执行一次
* * * * *  ls           #每分钟都执行
00 00 14 2 *  ls        #每年214日的凌晨执行命令
*/5 * * * *  ls         #每隔5分钟执行一次
00 02 * 1,5,8 * ls      #每年的158月凌晨2点执行
00 02 1-8 * *  ls       #每月1号到8号凌晨2点执行
0 21 * * * ls           #每天晚上2100执行
45 4 1,10,22 * * ls     #每月的11022号的445执行
45 4 1-10 * * ls        #每月的110号的445执行
3,15 8-11 */2 * * ls    #每隔两天上午8点到11点的第3和第15分钟执行
0 23-7/1 * * * ls       #晚上11点到早上7点之间,每隔一个小时执行
15 21 * * 1-5 ls        #周一到周五每天晚上2115执行

在这里插入图片描述

crontab命令选项

?	-e                     #编辑定时任务
?	-l                     #查看定时任务
?	-r                     #删除定时任务
?	-u                     #指定其他用户

计划任务实践示例

示例1

假设在每周一、三、五的凌晨 3 点 25 分,都需要使用 tar 命令把某个网站的数据目录进 行打包处理,使其作为一个备份文件。

25 3 * * 1,3,5 /usr/bin/tar -zcvf backup.tar.gz /opt/wwwroot
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。