又到了一周的新的开始,刚开始还是来了个小测验,这次考试有几题错的都非常离谱,还是不够细心,看着答案都选错了,做为一个运维工程师还是要足够细心,足够耐心。
1. iptables规则备份和恢复
设定的防火墙规则只是保存在内存中,并没有保存到配置文件中,也就说当系统重启后以前设定的规则就没有了,所以设定好规则后要先保存规则,以免重启后规则丢失。
//通过iptables-save命令备份规则
[root@knightlai ~]#iptables-save >iptables-script
//通过iptables-restore规则集到数据包过滤表中
[root@knightlai ~]#iptables-restore iptables-script
2. firewalld的9个zone
firewalld默认的9个zone说明
区域 |
说明 |
drop(丢弃) |
任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。 |
block(限制) |
任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。 |
public(公共) |
在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。 |
external(外部) |
特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。 |
dmz(非军事区) |
用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。 |
work(工作) |
用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。 |
home(家庭) |
用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。 |
internal(内部) |
用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。 |
trusted(信任) |
可接受所有的网络连接。 |
查看所有zone命令:firewall-cmd --get-zones
[root@knightlai ~]#firewall-cmd --get-zones
查看默认的区域
[root@knightlai ~]# firewall-cmd --get-default-zone
public
3. firewalld关于zone的操作
firewalld有两个基础的概念,分别是zone和service,每一个zone里面有不同的iptables规则。
设定系统默认的zone
//设定默认zone为work
[root@knightlai ~]# firewall-cmd --set-default-zone=work
success
给指定网卡设置zone
[root@knightlai ~]#firewall-cmd --zone=public --add-interface=ens33
给指定网卡变更zone
[root@knightlai ~]#firewall-cmd --get-zone-of-interface=ens33
删除指定网卡的zone
//ens33接口当前所在zone为public
[root@knightlai ~]#firewall-cmd --get-zone-of-interface=ens33
查看活动zone的列表
[root@knightlai ~]#ffirewall-cmd --get-active-zones
查看指定区域的所有设置
[root@knightlai ~]# firewall-cmd --zone=public --list-all
4.firewalld关于service的操作
一项服务可以是本地和目的地端口的列表,如果服务被允许的话,也可以是一系列自动加载的防火墙辅助模块。预先定义的服务的使用,让客户更容易被允许或者被禁止进入服务。与对开放端口或者值域,或者端口截然不同,使用预先定义服务,或者客户限定服务,或许能够让管理更容易。
列出系统里所有的service
[root@knightlai ~]# firewall-cmd --get-services
查看默认zone下的service
[root@knightlai ~]#firewall-cmd --list-services
查看指定zone下的service
[root@knightlai ~]#firewall-cmd --zone=work --list-services
给指定zone来添加服务
//可增加 --permanent选项并重新加载防火墙,使之成为永久性设置。 //firewall-cmd --reload重载防火墙不中断已建立连接 //firewall-cmd --complete-reload不仅仅中断您已经移除的服务,还会中断所有已经建立的连接。
[root@knightlai ~]# firewall-cmd --zone=public --add-service=ftp
从指定zone移除服务
[root@knightlai ~]#firewall-cmd --zone=public --list-services
将添加后的服务保存到配置文件(会在/etc/firewalld/zones目录生成一个配置文件)
//--permanent 写入配置文件永久生效
[root@knightlai ~]# firewall-cmd --zone=public --add-service=ftp --permanent
5.linux任务计划cron(重点内容)
对于需要周期性执行的任务可以使用crontab命令,该命令所使用的服务是crond。因此在使用之前一定要先启动crond服务。
当使用者执行crontab命令时,系统会按如下步骤操作
1.先查找/etc/corn.allow文件,在该文件中存在的用户可以使用crontab,不在该文件中的用户不能使用crontab(即使用没有写在/etc/cron.deny中)
2.如果没有/etc/cron.allow就寻找/etc/cron.deny文件,在该文件中存在的用户不能使用crontab,在该文件中不存的用户就可以用crontab
3.如果两个文件都不存在,则只有root可以使用crontab。
多数linux版本默认的文件是/etc/cron.deny,而且该文件为空
crontab建立例行性任务的方式
1.针对用户的例行性任务,用crontab -e命令来管理任务
2.针对系统的例行性任务,可以通过/etc/crontab文件来管理任务
针对用户的例行性任务
语法: crontab [-u username] [-l|-e|-r]
选项说明
-u 只用root才有权限使用这个参数,用于帮助其他用户建立或删除crontab
-e 编辑crontab的工作内容,即进入crontab编辑模式
-l 查看crontab的工作内容
-r 移除crontab的工作内容,如果要删除某一项的内容,只能使用crontab -e手动删除
crontab的模式是:分 时 日 月 周 命令
分范围0-59,时范围0-23,日范围1-31,月范围1-12,周1-7
"-"表示一个时间段范围,可用格式1-5表示一个范围1到5
","表示分割时段的意思,可用格式1,2,3表示1或者2或者3
"*"表示任何时间都能够接受,任何时间都可以执行该命令可用格式。"/n"代表每隔n个时间单位。*/2表示被2整除的数字,比如小时,那就是每隔2小时
查看计划任务列表: crontab -l
[root@knightlai ~]#crontab -l
添加计划任务: crontab -e
[root@knightlai ~]#crontab -e
删除计划任务: crontab -r
[root@knightlai ~]#crontab -r
注意:
命令都用绝对路径的形式
写脚本的时候,添加日志记录功能。
6.chkconfig工具
Centos6及以前版本系统中运行级
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:多用户模式,少nfs服务
等级3表示:多用户模式,不带图形
等级4表示:是一种保留的级别
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
在centos6中的 /etc/inittab 中定义开机的默认运行级别
在centos7中,已经没有用运行级的概念了,只是为了向上兼容。
chkconfig命令主要用来查询或设置系统服务的运行级别,但是并不会立即启动或停止一个服务。chkconfig主要用在Centos6及以前的系统中,Centos7中使用的比较少,已经在向systemd过渡。
用法:
chkconfig [--list] [--type 类型] [名称]
chkconfig --add 名称
chkconfig --del 名称
chkconfig --override 名称
chkconfig [--level 级别] [--type 类型] 名称 on|off|resetpriorities
显示系统服务列表
[root@knightlai ~]#chkconfig --list
关闭指定服务的自动启动
[root@knightlai ~]#chkconfig mysql off
指定服务在某一运行级的关闭与开启//要2级别关闭
[root@knightlai ~]#chkconfig mysql off --level 2
0和1和6级别不能设置成开
0级别在关机状态是不可能开启的
1级别是单用户模式,服务是不可能开启的
6级别在重启的时候,是不可能开启的——>重启相当于先关闭在启动(重启的那一刻是先关闭才对)。
一个脚本加入到服务列表中
首先该启动脚本要放入到 /etc/init.d 这个目录下——>只有在这个目录下,才可以添加到服务列表中去
其次脚本格式有如下要求
1.是一个shell脚本
2.固定格式:
//启动和关闭顺序自己定义即可,这里是 64 36 # chkconfig: 2345 64 36
最后用chkconfig add将相应的脚本加入到服务列表
[root@knightlai ~]#chkconfig --add mysql
删除服务列表中的服务
[root@knightlai ~]#chkconfig --del mysql
7.systemd管理服务
Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度。
systemd 的目标是:尽可能启动更少的进程 尽可能将更多进程并行启动
查看systemd信息
显示单元依赖关系
[root@knightlai ~]#systemctl list-dependencies
显示sockets信息和哪些是活动的
[root@knightlai ~]# systemctl list-sockets
查看活动的system任务
[root@knightlai ~]# systemctl list-jobs
查看单元文件及状态
[root@knightlai ~]#systemctl list-unit-files
显示单元是否载入及状态
[root@knightlai ~]# systemctl list-units
显示默认的目标
[root@knightlai ~]# systemctl get-default
管理服务
列出所有的服务
[root@knightlai ~]# systemctl list-units --all --type=service
查看服务状态
[root@knightlai ~]# systemctl status firewalld.service
停止服务
[root@knightlai ~]# systemctl status firewalld.service
改变系统状态
重启
systemctl reboot
关机
systemctl poweroff
进入紧急模式
systemctl emergency
恢复默认目标
systemctl default
8. unit介绍
系统初始化需要做的事情非常多。需要启动后台服务,比如启动 SSHD 服务;需要做配置工作,比如挂载文件系统。这个过程中的每一步都被 systemd 抽象为一个配置单元,即 unit。可以认为一个服务是一个配置单元;一个挂载点是一个配置单元;一个交换分区的配置是一个配置单元;等等。systemd 将配置单元归纳为以下一些不同的类型
service 系统服务
target 多个unit组成的组
device 硬件设备
mount 文件系统挂载点
automount 自动挂载点
path 文件或路径
scope 不是由systemd启动的外部进程
slice 进程组
snapshot systemd快照
socket 进程间通信套接字
swap swap文件
timer 定时器
systemd中与unit相关的命令
列出正在运行的unit
[root@knightlai ~]# systemctl list-units
列出所有,包括失败的或者inactive的
[root@knightlai ~]# systemctl list-units --all
9. target介绍
在Centos7之前的版本,使用运行级别代表特定的操作模式。运行级别被定义为七个级别,用数字0到6表示,每个级别可以启动特定的一些服务。Centos7使用target替换运行级别。
一个service属于一种类型的unit
多个unit组成了一个target
一个target里面包含了多个service
列出系统中所有的target
[root@knightlai ~]# systemctl list-unit-files --type=target
查看指定target下面有哪些unit
[root@knightlai ~]# systemctl list-dependencies multi-user.target
查看所有的target
[root@knightlai ~]#systemctl list-units --type=target --all
查看系统默认的target
[root@knightlai ~]# systemctl get-default
设置默认的target
[root@knightlai ~]# systemctl set-default multi-user.target
扩展习题:cron的练习题:
# 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
*/5 * * * *root run-parts /root/file
- 每天凌晨1点20分清除/var/log/slow.log这个文件
- 20 1 * * * root echo "">/var/log/slow.log
- 每周日3点执行 “/bin/sh /usr/local/sbin/backup.sh”
- * * * * 6 root /bin/sh/usr/local/sbin/backup.sh
- 每月14号4点10分执行 “/bin/sh /usr/local/sbin/backup_month.sh”
- 10 4 /14 * * root /bin/sh/usr/local/sbin/backup_month.sh
- 每隔8小时执行 “ntpdate time.windows.com”
- * /8 * * * root ntpdate time.windows.com
- 每天的1点,12点,18点执行 “/bin/sh /usr/local/sbin/test.sh”
- * 1,12,18 * * * root /bin/sh/usr/local/sbin/test.sh
- 每天的9点到18点执行 “/bin/sh /usr/local/sbin/test2.sh”
- 18 9 * * * root /bin/sh/usr/local/sbin/test.sh