一,date 查看或者修改系统时间的命令

修改时间加-s和单引号

二,系统计划任务也叫定时任务 crontab

用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务
日志文件:/var/log/cron
当我们设置了一个定时的计划任务时,会存在/var/spool/cron/
root用户设置的在/var/spool/cron/
lisi用户设置的就在/var/spool/cron/lisi
设置定时任务
#为root用户设置一个定时任务
crontab -e -u root
然后进入到下面的界面,按键盘i 进行编写

我输入* * * * * /usr/bin/date >> /opt/time.txt,然后按键盘esc键,再:wq 退出且保存

意思是每分钟都把输出的时间储存到/opt/time.txt
分时日月周后面的命令需要加绝对路径
我们不知道date命令的绝对路径的话
which date

编辑计划任务
这里来说一下进入编辑器模式都要怎么写
#系统每五分钟执行后面的命令,输出hello储存到hello.txt
*/5 * * * * /usr/bin/echo 'hello' >> /opt/hello.txt
五个星号的位置对应着分时日月周,几分几点几号几月周几,24小时制
*/5 * * * * 就是每五分钟执行一次后面跟的命令
* */2 * * * 就是每两个小时执行一次后面的命令
0 8 * * * 每天8点执行,这里是早上8点,下午8点应该是20
0 8 * * 5 每周五的每天八点执行
0 8 * *1-5 每周一到周五的,每天8点执行
0 8 * * 1,3,7 每周一周三周日的早上8点执行
0 8 1 * 1 每周一的早上8点执行,和每个1号的早上八点执行
时间分割
* :匹配范围内任意时间
, :分隔多个不连续的时间点
- :指定连续时间范围
/n :指定时间频率,每n ...
验证设置的任务
#追着看这个文件的尾行,实时更新,想要退出的话,按键盘ctrl+c
tail -f /opt/time.txt

查看计划任务

删除计划任务
crontab -r -u 用户名
三,杀死进程

1,
kill 进程编号

2,
包含就算,但是容易误杀
pkill -9 进程名

3,
需要加上严格的进程名
killall -9 进程名字
四,任务的前后台调度

nohup
用这个命令的话,即使退出终端,后台依然会继续运行
#挂起一个while进程,
这个进程是输出时间,休眠5秒,输出时间,休眠5秒,这样循环,
'用当前的解释器执行,当成立的时候执行下面的,结束'
bash -c 是用当前的解释器执行后面的东西的意思,c是command
输出正确的内容放到这个地址下面,这个地址是我们自己建的
输出错误的时候放到这个地址下面,这个也是我们自己建的路径
我们默认
0是我们输出的内容
1是终端输出的正确内容
2是报错的输出
nohup bash -c 'while true
do
date
sleep 5
done' 1>/date/time.log 2>/date/time.err &

检验
ps aux | grep bash

screen
先下载一下
dnf install -y screen
下载不下来的话
dnf install -y epel-release && dnf install -y vim && dnf install -y net-tools && dnf install -y screen && dnf install -y nginx
作用(一次性装完 5 个必备工具)
-
epel-release → 安装官方扩展源(screen 必须靠它才能装上)
-
vim → 强大的编辑器
-
net-tools → 包含 ifconfig、netstat 等网络命令
-
screen → 后台挂机工具
-
nginx → 网页服务器
五,Linux系统防火墙
systemctl对防火墙的管理
查看防火墙状态
systemctl status firewalld
询问防火墙是不是开机自启
systemctl is-enabled firewalld
防火墙的关闭,重启
关闭防火墙
systemctl stop firewalld
重启防火墙
systemctl restart firewalld
关闭防火墙的开机自启
systemcal disable firewalld
防火墙区域
|----------------|-------------------------------------------------------------|
| 区域 | 默认策略 |
| trusted | 允许所有数据包 【白名单】 |
| home | 拒绝流入的流量,允许ssh,mdns,ipp-client,amba-client,dhcpv6-client服务通过 |
| internal | 等同于home |
| work | 拒绝流入的流量,允许ssh,ipp-client,dhcpv6-client服务通过 |
| public(默认) | 拒绝流入的流量,默认允许 ssh,dhcpv6-client,ping 服务通过 |
| external | 拒绝流入的流量,允许ssh服务通过 |
| dmz | 拒绝流入的流量,允许ssh服务通过 |
| block | 拒绝流入的流量,非法流量采取拒绝操作【明确的拒绝】 |
| drop | 拒绝流入的流量,非法流量采取丢弃操作 |
查看防火墙的区域和规则
# 通过查看区域所在的配置文件来看当前系统中支持的区域
ls /usr/lib/firewalld/zones/

查看当前的默认防火墙区域
#用 firewalld 防火墙的命令行工具(cmd),查询(get)系统当前的默认(default)区域(Zone
firewall-cmd --get-default-zone
设置默认区域
把网卡 / IP 分配到哪个区域,防火墙就会套用这个区域的预设规则
我们把默认区域设置到block,来观察一下


发出去的 ping 请求,被目标机器(192.168.88.101)的防火墙直接拦截丢弃了
列出当前区域有哪些规则
#用 firewalld 防火墙的命令行工具,把public这个区域的所有配置规则,完整列出来
firewall-cmd --list-all --zone=public

1,target: 目标策略,这个区域的默认流量处理规则,是防火墙的核心兜底策略 default= 遵循 firewalld 全局默认策略(允许主动向外的响应流量,拒绝所有未明确放行的入站流量)
ACCEPT(全允许)、REJECT(拒绝)、DROP(丢弃)
2,icmp-block-inversion: ICMP 阻断反转,是否反转 ICMP 流量的阻断规则,控制 ping 等 ICMP 包的拦截逻辑
no= 正常生效 ICMP 阻断规则;yes= 反转规则,被阻断的 ICMP 反而会被允许,一般保持no即可
3,interfaces: 绑定网卡:这个区域绑定的物理网卡,网卡上的所有流量都会套用这个区域的规则
4,sources: 来源 IP,绑定到这个区域的源 IP / 网段,来自这些 IP 的流量会套用该区域规则
空 = 没有绑定任何源 IP,仅靠网卡来匹配流量
5,services: 放行服务:这个区域明确允许通过的预定义服务,这些服务的入站请求会被放行
cockpit dhcpv6-client ssh,当前允许了 3 个服务:
- ssh:远程登录服务(必须开,否则连不上服务器)
- cockpit:Web 图形化管理服务
- dhcpv6-client:IPv6 地址自动获取服务
6,ports: 放行端口,这个区域明确允许通过的自定义端口,格式为「端口号 / 协议
空 = 没有手动放行任何自定义端口,比如你开了 Nginx,就要在这里加80/tcp
7,protocols :放行协议,这个区域明确允许通过的网络协议,比如 ICMP、TCP、UDP 等
空 = 没有放行额外协议,默认只允许服务对应的协议,比如要放行 ping 的 ICMP 协议,就要在这里加icmp
8,forward: 转发开关,是否允许这个区域的流量转发,也就是充当路由器转发数据包, yes= 开启转发,一般用于服务器做 NAT 网关、路由转发的场景,普通服务器保持默认即可
9,masquerade: 地址伪装,也就是 NAT 地址转换,开启后可以隐藏内网 IP,让内网机器通过这台服务器上网
no= 关闭状态,普通单节点服务器不需要开;做路由器 / 网关时才需要开启
10,forward-ports: 端口转发,配置端口映射,把外部端口的流量转发到内网的其他 IP: 端口 空 = 没有配置端口转发,比如要把 8080 端口转发到内网 192.168.88.102 的 80 端口,就要在这里配置
11,source-ports :源端口放行,放行特定源端口的流量,一般用于出站流量控制
12,icmp-blocks :ICMP 阻断,配置要拦截的 ICMP 类型,比如拦截 ping 请求、重定向包等,空 = 没有拦截任何 ICMP 包
13,rich rules :富规则 ,自定义的高级防火墙规则,支持更复杂的匹配逻辑(比如按 IP、时间、协议组合控制)空 = 没有配置高级规则
防火墙区域的应用

启动nginx服务
#启动nginx服务
systemctl start nginx
#查看nginx是不是在运行
systemctl status nginx

看一下自己的服务器设置在哪个防火墙区域,如果设置在trusted那就是允许所有人访问,如果我设置在block/drop区域,就是拒绝了所有客户机的访问
#查看自己服务器的默认设置
firewall-cmd --get-default-zone
我这里的默认区域是public,为了方便理解,我将分别把我的默认区域设置到trusted和block
当我的默认区域是trusted时
#设置我的默认防火墙区域为trusted
firewall-cmd --set-default-zone=trusted
所有人可以访问我的服务器,但是有一个人我不想让他访问,他的地址是192.168.88.130
#把这个人的地址放到block区,永久生效,他就不能访问我的服务器
firewall-cmd --add-source=192.168.88.130 --zone=block --permanent
#让规则立即生效
firewall-cmd --reload
我们把这个block区展开看一下,block区的信息看一下他在不在,我们观察发现,这个地址出现在block区的sources(来源)这里,那就是把他放到这个拒绝访问的block区成功了,他就访问不了我们了
firewall-cmd --list-all --zone=block

我现在又同意他访问我了,怎么做呢
方法1,给防火墙block区域添加一个http协议,这个人用这个协议访问我的话,他就能进来了,如果他不用这个协议访问我,他还是进不来
#给block区添加http协议,永久生效
firewall-cmd --add-service=http --zone=block --permanent
#让规则立即生效
firewall-cmd --reload
#查看一下block区域的信息
firewall-cmd --list-all --zone=block

方法2,直接把他从block区里放出来,给他自由
#把这个人的地址从block里移除
firewall-cmd --permanent --remove-source=192.168.88.130 --zone=block
#让规则立即生效
firewall-cmd --reload
#查看一下block区域的信息
firewall-cmd --list-all --zone=block

当他哪个区,都不在的时候,他自由了,再来访问我的时候,就要遵循我设置的默认防火墙区域规则,我这里设置的默认防火墙区域是trusted,允许所有人访问我的服务器,那么他也是一样可以访问了,而现在这个http协议对我没有任何意义了,
但是当我下次再重新设置防火墙时,把我的默认防火墙区域设置为block区域时,也就代表着通过Http协议来访问我的人,可以访问成功,我们这里把它删掉
#把 HTTP 相关的放行规则从 block 区域移除
firewall-cmd --permanent --remove-service=http --zone=block
当我的默认区域是block时
#设置我的默认防火墙区域为block
firewall-cmd --set-default-zone=block
#让规则立即生效
firewall-cmd --reload
#查看自己服务器的默认设置
firewall-cmd --get-default-zone


block是一个全拒绝模式,并且是会有提示明确拒绝(drop也为全拒绝模式,但是没有提示)
我现在默认拒绝所有人的访问,我不允许别人访问我的服务器,但是我就想给一个人走后门,我就让他来访问我,我就想让192.168.88.130来访问我,怎么做?
方法1,加一个http协议,通过这个协议来访问我的人,就可以访问成功
#给block区添加http协议,永久生效
firewall-cmd --add-service=http --zone=block --permanent
#让规则立即生效
firewall-cmd --reload
#查看一下block区域的信息
firewall-cmd --list-all --zone=block
方法2,我单独把这个人的地址放到trusted里,他就能进来了
#把这个人的地址放到trusted区,永久生效,他就不能访问我的服务器
firewall-cmd --add-source=192.168.88.130 --zone=trusted --permanent
#让规则立即生效
firewall-cmd --reload
#查看一下trusted区域的信息
firewall-cmd --list-all --zone=trusted


为了后续的练习我们把他从白名单拉出来,把默认区域设置回public
#把他从白名单移除
firewall-cmd --permanent --remove-source=192.168.88.130 --zone=trusted
#让规则立即生效
firewall-cmd --reload
#设置默认区域为public
firewall-cmd --set-default-zone=public
#让规则立即生效
firewall-cmd --reload
# 确认默认区域已经是public
firewall-cmd --get-default-zone
# 确认IP已经从trusted区域移除
firewall-cmd --list-all --zone=trusted
富规则设置
富规则就是一个比较复杂的防火墙的一个设置
富规则设置:拒绝node2 ping node1
# 1. 查看当前防火墙区域
firewall-cmd --get-default-zone
# 2. 添加富规则:拒绝来自 node2 的 ICMP echo-request (ping)
firewall-cmd --permanent --add-rich-rule=
'rule family="ipv4" source address="192.168.1.20" protocol value="icmp" block'
# 3. 重新加载防火墙规则
firewall-cmd --reload
# 4. 查看已添加的富规则
firewall-cmd --list-rich-rules
# 5. 移除富规则
firewall-cmd --permanent --remove-rich-rule=
'rule family="ipv4" source address="192.168.1.20" protocol value="icmp" block'
firewall-cmd --reload #永久设置需要重新加载才能生效