Linux系统服务相关命令【定时任务设置】【任务进程管理】【防火墙区域应用】

一,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 个必备工具)

  1. epel-release → 安装官方扩展源(screen 必须靠它才能装上)

  2. vim → 强大的编辑器

  3. net-tools → 包含 ifconfig、netstat 等网络命令

  4. screen → 后台挂机工具

  5. 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 个服务:

  1. ssh:远程登录服务(必须开,否则连不上服务器)
  2. cockpit:Web 图形化管理服务
  3. 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 #永久设置需要重新加载才能生效
相关推荐
凯丨2 小时前
Claude Code 自动化开发的完整体系
运维·自动化
L、2184 小时前
昇腾NPU性能调优Checklist——从“能跑“到“跑得快“的20步
服务器·人工智能·深度学习
SilentSamsara5 小时前
concurrent.futures 实战:进程池与线程池的统一抽象
运维·开发语言·python·青少年编程
不吃土豆的马铃薯5 小时前
Spdlog 进阶:日志基本控制、日志格式控制、异步记录器
linux·服务器·开发语言·前端·c++
疯狂成瘾者5 小时前
常见的 Linux 版本
linux·运维·服务器
szxinmai主板定制专家5 小时前
基于ZYNQ MPSOC图像采集与压缩系统总体设计方案
linux·arm开发·人工智能·嵌入式硬件·fpga开发
GOTXX5 小时前
SenseNova U1 实战体验:API 调用 + OpenClaw 接入全流程
服务器·网络·人工智能·语言模型
liulilittle6 小时前
TCP UCP:基于卡尔曼滤波的BBR增强型拥塞控制算法
linux·网络·c++·tcp/ip·算法·c·通讯
xingyuzhisuan6 小时前
GPU服务器集群搭建指南——选型、部署、优化+避坑全解析
运维·服务器·人工智能·gpu算力