服务名 | 含义 |
---|---|
ntpd | 用于同步计算机的系统时间的服务 |
firewalld | 防火墙服务 |
crond | 计划任务服务 |
NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。
工作场景:
公司开发了一个电商网站,由于访问量很大,网站后端由100台服务器组成集群。50台负责接收订单,50台负责安排发货,接收订单的服务器需要记录用户下订单的具体时间,把数据传给负责发货的服务器,由于100台服务器时间各不相同,记录的时间经常不一致,甚至会出现下单时间是明天,发货时间是昨天的情况。
标准时间是哪里来的?
现在的标准时间是由原子钟报时的国际标准时间UTC(Universal Time Coordinated,世界协调时),所以NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。
在NTP中,定义了时间按照服务器的等级传播,Stratum层的总数限制在15以内
工作中,通常我们会直接使用各个组织提供的,现成的NTP服务器
NTP授时网站:http://www.ntp.org.cn/pool.php
同步服务器时间方式有2 个:一次性同步手动同步、通过服务自动同步。
手动同步
用法一:ntpdate 时间服务器IP
示例代码:
#ntpdate 120.25.108.11
含义:从服务器120.25.108.11同步标准网络时间到服务器(120.25.108.11服务器由阿里云提供,可以从http://www.ntp.org.cn/pool.php网站获取)
注意:从网络同步时间,要确保自己的服务器可以访问互联网
含义:服务器不可用,这里的服务器是指网络上的时间服务器,不可用,不代表是对方服务器有问题,也有可能是你自己的服务器网络不通,无法连接到网络上的时间服务器。
自动同步
用法二:启动ntpd服务,并配置为开机启动
示例代码:
#systemctl start ntpd
#systemctl enable ntpd
含义:启动ntpd服务,并配置为开机启动,服务启动后,系统会自动同步网络时间
注意:从网络同步时间,要确保自己的服务器可以访问互联网
启动后就自动同步了
问题2:需不需要让ntpd服务,开机自动运行?
需要
ntpd服务配置文件位置 /etc/ntp.conf
防火墙:防范一些网络攻击。有软件防火墙、硬件防火墙之分。
防火墙选择让正常请求通过,从而保证网络安全性。
Windows防火墙:
CentOS6x中防火墙叫做iptables
CentOS7.x 中默认使用的防火墙是firewalld
firewalld增加了区域的概念,所谓区域是指,firewalld预先准备了几套防火墙策略的集合,类似于策略的模板,用户可以根据需求选择区域。
常见区域及相应策略规则
区域 | 默认策略 |
---|---|
trusted | 允许所有数据包 |
home | 拒绝流入的流量,除非与流出的流量相关,允许ssh,mdns,ippclient,amba-client,dhcpv6-client服务通过 |
internal | 等同于home |
work | 拒绝流入的流量,除非与流出的流量相关,允许ssh,ipp-client,dhcpv6-client服务通过 |
public | 拒绝流入的流量,除非与流出的流量相关,允许ssh,dhcpv6-client服务通过 |
external | 拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过 |
dmz | 拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过 |
block | 拒绝流入的流量,除非与流出的流量相关,非法流量采取拒绝操作 |
drop | 拒绝流入的流量,除非与流出的流量相关,非法流量采取丢弃操作 |
运行模式:此模式下,配置的防火墙策略立即生效,但是不写入配置文件
永久模式:此模式下,配置的防火墙策略写入配置文件,但是需要reload重新加载才能生效。
firewall默认采用运行模式
命令:systemctl
作用:管理服务
语法:#systemctl [选项] firewalld
选项: status:检查指定服务的运行状况
start:启动指定服务
stop:停止指定服务
restart:重启指定服务
reload:重新加载指定服务的配置文件(并非所有服务都支持reload,通常使用restart)
使用systemctl来管理firewalld的服务,具体命令前面已经讲过,只是服务名换成了firewalld,这里不再赘述
命令:firewall-cmd
作用:管理firewall具体配置
语法:#firewall-cmd [参数选项1] …[参数选项n]
常用选项:
用法一:firewall-cmd 选项
示例代码:
#firewall-cmd --get-default-zone
含义:查看默认使用区域,当前默认使用区域为public
用法二:firewall-cmd 选项
示例代码:
#firewall-cmd --get-zones
含义:查看所有可用区域
用法三:firewall-cmd 选项
示例代码:
#firewall-cmd --list-all
含义:查看所有可用区域
用法四:firewall-cmd 选项
示例代码:
#firewall-cmd --list-all-zones
含义:查看所有可用区域
用法五:firewall-cmd 选项
示例代码:
#firewall-cmd --zone=public --add-port=1024/tcp
含义:在public区域,添加允许tcp协议的1024端口通过的规则
#firewall-cmd --zone=public --add-service=ftp
含义:在public区域,添加允许ftp服务通过的规则
用法五:firewall-cmd 选项
示例代码:
#firewall-cmd --zone=public --remove-port=1024/tcp
含义:在public区域,去掉允许tcp协议的1024端口通过的规则
#firewall-cmd --zone=public --remove-service=ftp
含义:在public区域,去掉允许ftp服务通过的规则
用法七:firewall-cmd 选项
示例代码:
#firewall-cmd --permanent --zone=public --add-port=1024/tcp
含义:在public区域,使用permanent参数,永久添加允许1024端口通过的规则
用法七:firewall-cmd 选项
示例代码:
#firewall-cmd --reload
含义:重新加载配置
作用:操作系统不可能24 小时都有人在操作,有些时候想在指定的时间点去执行任务(例如:每天凌晨 2 点去重新启动Apache),此时不可能真有人每天夜里 2 点去执行命令,这就可以交给计划任务程序去执行操作了。
语法:# crontab 选项
常用选项:
-l:list,列出指定用户的计划任务列表
-e:edit,编辑指定用户的计划任务列表,简单来说,计划任务就是一个文件
-u:user,指定的用户名,如果不指定,则表示当前用户
-r:remove,删除指定用户的计划任务列表
示例代码:列出当前用户的计划任务列表
进入计划任务编辑文件
打开计划任务编辑文件后,可以在此文件中编写我们自定义的计划任务:
计划任务的规则语法格式,以行为单位,一行则为一个计划:
分 时 日 月 周 需要执行的命令
例如:0 0 * * * reboot,代表每天0时0分执行reboot指令。
取值范围(常识):
分:0~59
时:0~23
日:1~31
月:1~12
周:0~7,0 和 7 表示星期天
四个符号:
*:表示取值范围中的每一个数字
-:做连续区间表达式的,要想表示1~7,则可以写成:1-7
/:表示每多少个,例如:想每 10 分钟一次,则可以在分的位置写:*/10
,:表示多个取值,比如想在 1 点,2 点 6 点执行,则可以在时的位置写:1,2,6
特别补充:在Linux系统中,有些命令不能直接在计划任务中使用,使用后,其也不会生效。如useradd命令。如果想让其生效必须使用完整路径。
问题:如何查询一个命令的真实路径在哪个位置?
答:使用whereis 命令名称
问题1:每月1、10、22 日的4:45 重启network 服务
问题2:每周六、周日的1:10 重启network 服务
问题3:每天18:00 至23:00 之间每隔30 分钟重启network 服务
问题4:每隔两天的上午8 点到11 点的第3 和第15 分钟执行一次重启
分时日月周 命令或服务
问题1:45 4 1,10,22 * * service network restart
问题2:10 1 * * 6,7 service network restart
问题3:*/30 18-23 * * * service network restart
问题4:3,15 8-11 */2 * * reboot
案例:每1 分钟往 root 家目录中的 readme.txt 中输一个1,为了看到效果使用追加输出【输出使用echo 命令,语法:# echo 输出的内容】
在末行模式下输入:wq
保存并退出,使用tail -f查看readme.txt动态变化
注意:在计划任务中,默认最小单位就是分,不能再小了。如果需要做到秒级别则需要配合研发相关代码。
crontab是任何用户都可以创建的计划任务,但是超级管理员可以通过配置来设置某些用户不允许设置计划任务 。
黑名单配置文件位于:/etc/cron.deny
里面写用户名,一行只能写一个
保存退出,切换到cndws普通用户,执行crontab命令,如下图所示:
/etc/cron.allow (本身不存在,自己创建)
注意:白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则会被默认允许创建计划任务。
问题:计划任务文件具体保存在哪里呢?
答:/var/spool/cron/用户名文件中
,如果使用root用户编辑计划任务,则用户文件名为root
问题:在实际应用中,我们如何查看定时任务运行情况?
答:通过计划任务日志,日志文件位于/var/log/cron