linux核心基础-基础服务管理
1、sort uniq
for i in {1..30};do echo $(expr $RANDOM / 1000 ) ;done> ceshi.txt
##sort
不加参数默认是从小到大排序(1 12 13 2 23)
-n numeric-sort 根据字符串数值比较
-r --reverse 逆序输出排序结果
##uniq
uniq命令的功能是对连续重复行进行一些操作,经常与 sort 命令配合使用
-c, --count 打印每行出现的次数
2、1inux能正确进行互联网dns解析的配置文件是什么
/etc/resolov.conf
在这里头写入域名服务器地址
(114.114.114.114 223.5.5.5 115.115.115.115 223.6.6.6 119.29.29.29)
3、查看域名对应的ip为多少
3.1 方法1
ping 会自动帮你去做域名查找
3.2 1inux也提供了更专业化的,域名查找,解析的命令
- dig
dig @223.55.5 你的域名 - nslookup (name server look up 名称服务器查找,简称,域名查找)
3.2.1 交互式,直接输入该命令
[root@yuanlai-0224 test_tar]# nslookup
www.yuchaoit.cn
Server:
Address:
114.114.114.114
114.114.114.114#53
Non-authoritative answer:
3.2.2 非交互式
[root@muserver1 etc]# nslookup www.baidu.com
4、粉碎文件
# rm命令,删除文件,其实还是可以恢复的,现在的文件系统,都是日志型系统(你的操作,其实被系统监控,录制,做了个备份)
# rm删除数据后,磁盘其实还未立即彻底删除,根据磁盘恢复数据手段,还是可以把数据拿回来的
shred 文件名
这个命令之所以叫粉碎文件,是随机写入一堆二进制数据,导致原文件无法使用
随机写入二进制数据到文件中,比较危险,不推荐使用
[root@yuanlai-0224 test_tar]# shred gushi.txt
5、firewall防火墙
5.1简介
CentOS6x中防火墙叫做iptables
CentOS7.x 中默认使用的防火墙是firewalld,但是依然更多的是使用iptables,firewalld默认都关了。
firewalld增加了区域的概念,所谓区域是指,firewalld预先准备了几套防火墙策略的集合,类似于策略的模板,用户可以根据需求选择区域。

5.2运行模式和永久模式
运行模式:此模式下,配置的防火墙策略立即生效,但是不写入配置文件
永久模式:此模式下,配置的防火墙策略写入配置文件,但是需要reload重新加载才能生效。
firewall默认采用运行模式
5.3 查看,开启和停止firewalld服务
命令:systemctl
作用:管理服务
语法:#systemctl [选项] firewalld
选项:
status:检查指定服务的运行状况
start:启动指定服务
stop:停止指定服务
restart:重启指定服务
reload:重新加载指定服务的配置文件(并非所有服务都支持reload,通常使用restart)
使用systemctl来管理firewalld的服务,具体命令前面已经讲过,只是服务名换成了firewalld,这里不再赘述
5.4 管理firewall配置/命令
命令:firewall-cmd
作用:管理firewall具体配置
语法:#firewall-cmd [参数选项1] ....[参数选项n]
常用选项:
- 查看默认使用的区域
[root@muserver1 ~]# firewall-cmd --get-default-zone
public
- 查看所有可用区域
[root@muserver1 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
- 列出当前使用区域配置
[root@muserver1 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@muserver1 ~]#
- 列出所有区域的配置信息
[root@yuchao-linux01 ~]# firewall-cmd --list-all-zones
5.添加允许通过的服务或端口(python,ntp)
[root@yuchao-linux01 ~]# firewall-cmd --zone=public --add-port=80/tcp
[root@yuchao-linux01 ~]# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client
ports: 80/tcp # 允许80端口通过了
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
- 去掉允许通过的端口
[root@yuchao-linux01 ~]# firewall-cmd --zone=public --remove-port=80/tcp
success
[root@yuchao-linux01 ~]#
[root@yuchao-linux01 ~]# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client
ports: # 端口被移除了
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
- 添加允许ntp的防火墙策略
[root@yuchao-linux01 ~]# firewall-cmd --permanent --add-service=ntp
success
[root@yuchao-linux01 ~]#
[root@yuchao-linux01 ~]# firewall-cmd --reload
success
[root@yuchao-linux01 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client ntp
ports: 80/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
检查iptables语句
[root@yuchao-linux01 ~]# iptables -L |grep ntp
ACCEPT udp -- anywhere anywhere udp dpt:ntp ctstate NEW
- 永久模式参数
permaent(永久性的)
-- 加上这个参数,不会立即生效,重启服务后会生效
-- 不加这个参数,会立即生效,断开连接后失效
# 永久性添加规则,并未立即生效
[root@yuchao-linux01 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
success
[root@yuchao-linux01 ~]#
[root@yuchao-linux01 ~]#
[root@yuchao-linux01 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client
ports: # 端口规则还未生成
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
# 重新加载防火墙规则
[root@yuchao-linux01 ~]# firewall-cmd --reload
success
[root@yuchao-linux01 ~]# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client
ports: 80/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@yuchao-linux01 ~]# iptables -L |grep tcp
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ctstate NEW
ACCEPT tcp -- anywhere anywhere tcp dpt:http ctstate NEW
[root@yuchao-linux01 ~]#
6.1计划任务crontab
6.1 crontab用法
==语法:# crontab 选项==
常用选项:
-l:list,列出指定用户的计划任务列表==
-e:edit,编辑指定用户的计划任务列表,简单来说,计划任务就是一个文件==
-u:user,指定的用户名,如果不指定,则表示当前用户
-r:remove,删除指定用户的计划任务列表
示例代码:列出当前用户的计划任务列表
[root@muserver1 ~]# crontab -l
no crontab for root
6.2 编辑计划任务(重点)
进入计划任务编辑文件
[root@yuchao-linux01 ~]# crontab -e
打开计划任务编辑文件后,可以在此文件中编写我们自定义的计划任务:
计划任务的规则语法格式,以行为单位,一行则为一个计划:
==分 时 日 月 周 需要执行的命令==
例如:0 0 * * * reboot,代表每天0时0分执行reboot指令。
6.2.1 crontab语法(重点)

取值范围(常识):
分:0~59
时:0~23
日:1~31
月:1~12
周:0~6,0 和 7 表示星期天
四个符号:
*:表示取值范围中的每一个数字
-:做连续区间表达式的,要想表示1~7,则可以写成:1-7
/:表示每多少个,例如:想每 10 分钟一次,则可以在分的位置写:*/10
,:表示多个取值,比如想在 1 点,2 点 6 点执行,则可以在时的位置写:1,2,6
并且在定时任务里,命令,请写上绝对路径。
通过whereis命令搜索 绝对路径
[root@yuchao-linux01 ~]# whereis systemctl
systemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz
6.2.2案例
每天早上7:30起床学习
30 7 * * *
每隔3天,夜里2天,起来学习
0 2 */3 * *
夜里1点时候,每隔10分钟 起来吃点东西
*/10 1 * * *
夜里1点,3点,每隔10分钟 起来吃点东西
*/10 1,3 * * *
夜里1点到3点之间,每隔10分钟,起来吃点东西
*/10 1-3 * * *
每隔2个月的周六,夜里2点30 去见网友
30 2 * */2 6
6.3 扩展
6.3.1 crontab 权限问题
crontab是任何用户都可以创建的计划任务,但是超级管理员可以通过配置来设置某些用户不允许设置计划任务 。
黑名单配置文件位于:/etc/cron.deny 里面写用户名,一行只能写一个
# 禁止yuchao01用户设置定时任务
[root@yuchao-linux01 ~]# vim /etc/cron.deny
[root@yuchao-linux01 ~]#
[root@yuchao-linux01 ~]# cat /etc/cron.deny
yuchao01
# 切换yuchao01用户登录
[yuchao01@yuchao-linux01 ~]$ crontab -e
You (yuchao01) are not allowed to use this program (crontab)
See crontab(1) for more information
白名单还有一个配置文件,/etc/cron.allow (本身不存在,自己创建)
注意:白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则会被默认允许创建计划任务。
# 添加白名单后,会立即更新权限
[root@yuchao-linux01 ~]# echo 'yuchao01' > /etc/cron.allow
# yuchao01就可以写入了
[yuchao01@yuchao-linux01 ~]$ crontab -e
6.3.2查看计划任务文件保存路径
问题:计划任务文件具体保存在哪里呢?
答:/var/spool/cron/用户名文件中,如果使用root用户编辑计划任务,则用户文件名为root。
有图可见,该目录存放用户的定时任务信息。
# 定时任务,信息都是写在文件里的 ##crontab -e 写的文件
[root@yuchao-linux01 ~]# cat /var/spool/cron/root
* * * * * /usr/bin/echo '超哥666' >> /tmp/chaoge.txt
[root@yuchao-linux01 ~]#
[root@yuchao-linux01 ~]# cat /var/spool/cron/yuchao01
* * * * * echo "666"
6.3.3 查看计划任务日志信息
问题:在实际应用中,我们如何查看定时任务运行情况?
答:通过计划任务日志,日志文件位于/var/log/cron
6.4定时任务经验总结(规范)
- 编写定时任务要有注释说明
- 编写定时任务路径信息尽量使用绝对路径
- 编写定时任务命令需要采用绝对路径执行
- /etc/crontab文件中定义了crontab可用的PATH搜索路径
- 编写定时任务时,可以将输出到屏幕上的信息保存到黑洞中,避免占用磁盘空间
-
-
-
-
-
- sh test.sh &>/dev/null
-
-
-
-
- 或者重定向到文件中,便于排查问题
- 定时任务中执行命令,如果产生输出到屏幕的信息,都会以邮件方式告知用户
- /var/spool/mail/root,该日志会不断增大,占用磁盘空间
- 关闭本地邮件服务即可,systemctl stop postfix
- 当定时任务需要执行复杂任务的时候,需要编写为shell脚本再去运行了,注意脚本得有x权限
vim backup.sh 写入
cp -a /data /backup
tar zcvf /backup/data.tar.gz /data
# 写入配置文件
crontab -e
# 这是于超老师写的备份脚本,用于定时任务
* * * * * /bin/sh /server/scripts/backup.sh &>/dev/null
7、Linux软件包
电脑程序Program,就是某一个编程语言编写的一个代码文件,里面包含了该语言特有的指令,以及各种字符、符号。

7.1 源码包
-
源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。
-
计算机只能识别机器语言,也就是二进制语言,所以源码包安装之前需要编译。
-
编译过程耗时较长
-
大多数用户不懂开发,编译过程中可能会有各种错误,用户无力解决。
-
了解决使用源码包安装的问题,Linux 软件包的安装出现了使用二进制包的安装方式。
![]()
-
系统级开发:
C/C++:httpd、nginx
golang:docker -
应用及开发:
java:hadoop,hbase
python:openstack
perl
ruby
php
7.2 二进制包
- 二进制包,也就是源码包经过成功编译之后产生的包。
- 二进制包是 Linux 下默认的软件安装包,目前主要有以下 2 大主流的二进制包管理系统:
- RPM 包管理系统:功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行版都默认使用此机制作为软件安装的管理方式,例如 Fedora、CentOS、SuSE 等。
- DPKG 包管理系统:由 Debian Linux 所开发的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理,主要应用在 Debian 和 Ubuntu 中。
7.3 rpm命令的使用
1 查询某个软件安装情况
语法:# rpm -qa | grep 软件名称
选项:
-q:查询,query
-a:全部,all
-i :显示软件包的概要信息
-v :显示安装详细过程
-h:显示安装进度
--force :强制操作
--nodeps:忽略依赖关系(不好用,容易出错)
2 卸载某个软件
语法:# rpm -e 软件的名称(建议写完整的名称,通过-qa 查询)
3 安装某个软件
命令:rpm
作用:管理rpm软件包
语法:# rpm -ivh 软件包完整路径名称
选项:
-i:install,安装
-v:显示进度条
-h:表示以"#"形式显示进度条
4 更新某个软件
语法:# rpm -Uvh 完整的安装包路径
选项:
-U:upgrade,升级
-v:表示显示进度条
-h:表示以#形式显示进度
5 查看文件所属的包名(实用)
语法:# rpm -qf 需要查询的文件路
选项:
-f 校验所属的软件包
示例代码:查询/etc/ntp.conf 属于哪个软件包?
[root@yuchao-linux01 opt]# rpm -qf /etc/ntp.conf
ntp-4.2.6p5-28.el7.centos.x86_64
6 查询软件安装完成后,生成了哪些文件
用于查找软件安装后,默认的配置文件在哪
语法:# rpm -ql 需要查询的软件包名称
-l 显示软件包中的文件列表
rpm -ql firefox
[root@yuchao-linux01 opt]# rpm -ql firefox
查询lrzsz这个工具包,有结果就是装了,否则就是没有,或者你的软件包名字错了
lrzsz用于帮你快速拖拽,文件到linux-windows之间
rz sz两个命令
[root@yuchao-linux01 ~]# rpm -qa lrzsz
lrzsz-0.12.20-36.el7.x86_64
查询火狐浏览器装没
[root@yuchao-linux01 ~]# rpm -qa firefox
firefox-52.7.0-1.el7.centos.x86_64
#######
要使用rz、Sz命令传输文件需要给服务器安装IrzSZ:
yum -y install lrzsz
命令SZ、rz的使用方法
rz中的r意为received(接收),输入rz时,意为服务器接收文件,即将文件从本地上传到服务器。
sz中的s意为send(发送),输入sz时,意为服务器要发送文件,既从服务器发送文件到本地,或是说本地从服务器上下载文件。

浙公网安备 33010602011771号