自有服务概念
服务是一些特定的进程,自有服务就是系统开机后就自动运行的一些进程,一旦客服端发出请求,这些进程就自动为它们服务,windows系统中,把这些自动运行的进程,称为“服务”
比如我们用终端软件 XShell或者SecureCRT连接我们的Linux服务器的时候,我们的服务器为啥会对连接做出响应?是因为SSH服务开机就 自动运行了。
所谓自有服务,可以简单理解为Linux系统开机自动运行的服务(程序)
一、systemctl命令
在CentOS7中 systemctl 命令用来服务管理和开启启项管理
显示系统服务
语法:systemctl [选项]
显示Linux系统中所有服务(包括启动的和没有启动的)
systemctl list-units --type service --al
只列出已经启动的Linux系统服务
systemctl list-units --type service
用管道+grep找到 shhd服务
服务管理
1. 查看状态
查看系统服务转态 语法:systemctl status [服务名称]
2. 停止服务 stop
语法:systemctl stop [系统服务名称]
3. 启动服务 start
语法:systemctl start [系统服务名称]
4. 重启服务 restart
语法:systemctl restart [系统服务名称] 等价于:stop + start
5. reload 热重载技术
语法:system reload [系统服务名称]
并非所有服务都支持热重载技术
有些服务,比如 Nginx,更改了配置文件,但是不能重启Nginx服务,只是想立即让我们配置文件的更改生效,就可以使用热重载技术
服务持久化
所谓服务持久化,就是服务在开机的时候,是否自启动
1. 设置服务开机自启
语法:systemctl enable [系统服务名称]
2. 设置开机不自启
语法:systemctl disable [系统服务名称]
3.查看服务是否设置开机自启动
语法:systemctl list-unit-files
二、NTP时间同步服务
概念
NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间协议
比如: 某个点上公司网站,由于访问量很多的,后端由100台服务器组成集群。50台负责接收订单,50台负责安排发货,接收订单的服务器需要记录用户下订单的具体时间,把数据传给负责发货的服务器,由于100台服务器时间各不相同,记录的时间经常不一致,甚至会出现下单时间是明天,发货时间是昨天的情况。
NTP时间同步原理
问题:标准时间是哪里来的?
? 现在的标准时间是由原子钟报时的国际标准时间UTC(Universal Time Coordinated,世界协调时),所以NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。
在NTP中,定义了时间按照服务器的等级传播,Stratum层的总数限制在15以内
比如windows上的时间同步 从哪可以找合适的NTP服务器呢?
服务器列表
NTP时间同步操作
手工同步
语法:ntpdate NTP服务器的IP地址或者域名
通过date 可以查看当前系统时间
自动同步
语法:
- 启动htpd服务
systemctl start ntpd - 把ntpd服务追加到系统开机启动项中
systemctl enable ntpd 注意:一定要让 设置 ntpd服务开机自启动
三、防火墙
概念
防火墙:简单来说防火墙就是一堵墙,抵挡一些网络攻击。 防火墙有物理防火墙和软件防火墙两类。
Linux中的防火墙
在CentOS7中,防火墙为 firewalld
firewalld => fire火 wall墙 daemon守护进程
区域
firewalld 增加了区域的概念,所谓区域是指,firewalld 预先准备了几套防火墙策略的模板,用户可以根据需求选择区域。
常见区域以及相应策略规则(哪些端口或服务可以通过防火墙,哪些不能通过)
区域 | 默认策略 |
---|
public | 拒绝流入的流量,除非与流出的流量相关,允许ssh,dhcpv6-client服务通过 | trusted | 允许所有数据包 | home | 拒绝流入的流量,除非与流出的流量相关,允许ssh,mdns,ippclient,amba-client,dhcpv6-client服务通过 | internal | 等同于home | work | 拒绝流入的流量,除非与流出的流量相关,允许ssh,ipp-client,dhcpv6-client服务通过 | external | 拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过 | dmz | 拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过 | block | 拒绝流入的流量,除非与流出的流量相关,非法流量采取拒绝操作 | drop | 拒绝流入的流量,除非与流出的流量相关,非法流量采取丢弃操作 |
模式分类
- 运行模式:该模式下,配置的防火墙立即生效,但是不写入配置文件
- 永久模式:此模式下,配置的防火墙策略写入配置文件,但是需要
reload 才能生效
防火墙设置
查看防火墙运行状态
语法:systemctl status firewalld
停止防火墙
语法:systemctl stop firewalld
注意:这个操作一般只在学习环境总操作 一旦停止防火墙,其设置的所有规则会全部失效!
启动防火墙
语法:systemctl start firewalld
防火墙重启与重载操作
重启语法:systemctl restart firewalld
重启 => 先停止防火墙服务,再开启防火墙服务
重载语法:systemctl reload firewalld
如果我们对防火墙的配置文件做了更改(永久模式),需要使用 reload 进行重载让其立即生效
注意:reload 并没有停止正在运行的防火墙服务,只是在服务的基础上变换了防火墙的规则,也就是说 重载操作并没有重启关闭防火墙
设置防火墙开机自启
设置开机启动: 语法:systemctl enable firewalld
设置开机不启动: 语法:systemctl disable firewalld
firewalld 防火墙规则
1. 查看防火墙默认区域
语法:firewall-cmd --get-default-zone
2. 查看所有支持的区域
语法:firewall -cmd --get-zones 不同的区域就是不同的规则
3. 查看当前区域的规则设置
语法:firewall-cmd --list-all
4. 查看所有区域的规则设置
firewall-cmd --list-all-zones
添加运行通过的服务或端口
1. 通过服务名称添加规则
语法:firewall -cmd --zone=public --add-service=[服务的名称]
2. 通过名称移除防火墙
语法:firewall-cmd --zone=public --remove-service=http
3. 通过服务的端口号添加规则
语法:firewall-cmd --zone=public --add-port=[端口号]
4. 通过服务的端口号移除规则
语法:firewall-cmd --zone=public --remove-port=[端口号/tcp]
永久模式permanent
在Linux的新版防火墙firewalld中,其模式一共分为两大类:运行模式(临时模式)+ 永久模式。
运行模式:不会把规则保存到防火墙的配置文件中,设置完成后立即生效
永久模式:会把规则写入到防火墙的配置文件中,但是其需要reload重载后才会立即生效
根据服务名称添加规则(永久)
firewall-cmd --zone=public --add-service=服务名称 --permanent 需要reload重载后永久配置才会生效 firewall-cmd --reload
根据端口号添加规则(永久)
firewall-cmd --zone=public --add-port=服务占用的端口号 --permanent 需要reload重载后永久配置才会生效 firewall-cmd --reload
四、Linux中的计划任务
Linux中的计划任务可以在Linux操作系统中定时的执行某些任务,比如定时重启服务,定时的往一个文本里写入东西,也可以定时删除一些没有用的临时文件
crontab 命令
语法:crontab [选项] 常用选项: -l :显示目前已经设置的计划任务
-e :使用vim 编辑器编辑计划任务的文件
计划任务编写
crontab -e 进入计划任务编辑文件
打开计划任务编辑文件后,可以在此文件中编写我们自定义的计划任务
注意:计划任务的规则语法格式,以行为单位,一行为一个计划
计划任务格式
分 时 日 月 周 要执行的命令 注意:执行的命令,命令一定要是它的绝对路径,通过which 查看- 取值范围
分:0~59 时:0~23 日:1~31 月:1~12 周:0~7(0 和 ) - 四个符号
* :表示取值范围中的每一个数字- :做连续区间的表达式,比如2到6 可以写成 2-6 / :表示每多少个时间执行一次,比如:每10分钟一次,可以写成 */10 , :表示多个取值,比如想在 3点,7点和19点执行,可以写成 1,2,6
计划任务示例
示例1: 每个月的 1号的 00:30删除临时文件目录/tmp 下的临时文件 第一步:定制格式 分 时 日 月 周 /usr/bin/rm -rf /root/tmp/* 第二步:定制时间 30 0 1 * * /usr/bin/rm /usr/bin/rm -rf /root/tmp/*
示例2: 每分钟往根目录下的 tmp.txt文件里写一个 hello 第一步:定制格式 分 时 日 月 周 /usr/bin/echo 第二步:定制时间 * * * * * /usr/bin/echo "hello" >> /tmp.txt
示例3: 每周的星期五的23:30移除防火墙的8080服务 第一步:定制格式 分 时 日 月 周 /usr/bin/firewall-cmd --zone=public ==remove-port=8080/tcp 第二步:定制时间 30 23 * * 5 /usr/bin/firewall-cmd --zone=public ==remove-port=8080/tcp
示例4: 每隔两天的下午14点到17点的第10和第32分钟往tmp.txt文件里写入 Linux 第一步:定制格式 分 时 日 月 周 /usr/bin/echo "Linux" >> /tmp.txt 第二步:定制时间 10,32 14-17 */2 * * /usr/bin/echo "hello" >> /tmp.txt
crontab -e 进入计划任务编辑文件 把这些任务每个占一行写入文件里保存就好
计划任务权限
1. 黑名单
crontab 是任何用户都可以创建的计划任务,但是root 管理员可以通过配置来设置某些用户不允许设置计划任务。
如想限定某个用户使用计划任务,就可以使用任务计划黑名单,黑名单的文件路径/etc/cron.deny 文件。 用vim打开该文件,然后把要拉黑的用户名写到文件中再保存。
示例: 比如我要把 hhy 这个用户加入到黑名单
加入黑名单中,在hhy 用户下就无法使用任务计划命令crotab 命令了
2. 白名单
在Linux计划任务中,除了有黑名单外,还有白名单。 白名单的作用是允许哪些用户使用计划任务。 白名单文件的路径为:/etc/cron.allow ,需要注意的是此文件需要自己创建的
注意:
白名单优先级高于黑名单,如果是一个用户同时存在两个名单文件中,则默认被允许创建计划任务
也就是说同时把用户加入黑名单和白名单,还能能使用 crontab 命令
3. 查看计划任务的保存文件
在 /var/spool/cron 目录下有每个用户的任务计划文件,通过命令就可以查看到任务计划
4. 计划任务日志程序
任务计划的日志文件的路径为 /var/log/cron 示例: 通过使用 tail -f /var/log/cron 查看日志
at命令
在CentOS7中有个at命令,也可以显示定时任务计划。只不过at命令是设置的任务计划是只执行一次的。
其它版本可能需要安装通过yum install at -y 命令安装才能使用。
启动at底层服务
at 命令需要启动服务才能使用 启动语法: systemctl start atd 暂停语法: systemctl enable atd
at使用
示例1:4天后的下午5点执行/usr/bin/echo ,将hello追加到tmp.txt文件里
# at 2pm+4 days
at> /usr/bin/echo hello >> /root/tmp.txt
at>ctrl+D退出
am = 上午、pm = 下午、 4 days = 4天
示例2:
明天的 18点启动httpd 服务
$ at 18:00 tomorrow
at> /usr/bin/systemctl start httpd
at> <EOT>
job 10 at Fri Jul 1 18:00:00 2022
tomorrow = 明天
示例三: 使用 atq 查看没有执行的任务计划
示例四: 删除指定的计划任务 语法:atq atrm 任务号
|