1.linux的发行版介绍
Fedora是基于RHEL,CentOS,Scientific Linux, 和Oracle Linux的社区版本。相比RHEL,Fedora打包了显著的更多的软件包。其中一个原因是,多样化的社区参与Fedora的建设;它不只是一家公司。在这个过程中,CentOS用于活动,演示和实验,因为它是对最终用户免费提供的,并具有比Fedora的一个更长的发布周期(通常每隔半年左右发布一个新版本)。
SUSE, SUSE Linux Enterprise Server (SLES), 和openSUSE 之间的关系类似于 Fedora, Red Hat Enterprise Linux, 和CentOS的关系。
Debian是包括Ubuntu在内许多发行版的上游,而Ubuntu又是Linux Mint及其他发行版的上游。Debian在服务器和桌面电脑领域都有着广泛的应用。Debian是一个纯开源计划并着重在一个关键点上,稳定性。它同时也提供了最大的和完整的软件仓库给用户。
Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。下面介绍一下各个发行版本的特点:
Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多 的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非 常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管 理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用, 但是Fedora Core的稳定性较差,最好只用于桌面应用。
Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范 的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing 和 unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经 过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是 稳定和安全性都非常的高。Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资 料也很丰富,有很多支持的社区,有问题求教也有地方可去:)
Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是 一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的 Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。
Gentoo,伟大的Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是Gentoo 被称为最完美的Linux发行版本的原因之一。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美 FreeBSD的广受美誉的ports系统 ——Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软 件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux 发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。
最后,介绍一下FreeBSD,需要强调的是:FreeBSD并不是一个Linux系统!但FreeBSD与Linux的用户群有相当一部分是重 合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似,所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支: stable和current。顾名思义,stable是稳定版,而 current则是添加了新技术的测试版。FreeBSD采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运 行,但是Ports系统没有Portage系统使用简便,使用起来稍微复杂一些。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选 择,但对硬件的支持没有Linux完备,所以并不适合作为桌面系统。
下面给为选择一个Linux发行版本犯愁的朋友一些建议:
如果你只是需要一个桌面系统,而且既不想使用盗版,又不想花大量的钱购买商业软件,那么你就需要一款适合桌面使用的Linux发行版本了,如果你 不想自己定制任何东西,不想在系统上浪费太多时间,那么很简单,你就根据自己的爱好在ubuntu、kubuntu以及xubuntu中选一款吧,三者的 区别仅仅是桌面程序的不一样。
如果你需要一个桌面系统,而且还想非常灵活的定制自己的Linux系统,想让自己的机器跑得更欢,不介意在Linux系统安装方面浪费一点时间,那么你的唯一选择就是Gentoo,尽情享受Gentoo带来的自由快感吧!
如果你需要的是一个服务器系统,而且你已经非常厌烦各种Linux的配置,只是想要一个比较稳定的服务器系统而已,那么你最好的选择就是CentOS了,安装完成后,经过简单的配置就能提供非常稳定的服务了。
如果你需要的是一个坚如磐石的非常稳定的服务器系统,那么你的唯一选择就是FreeBSD。
如果你需要一个稳定的服务器系统,而且想深入摸索一下Linux的各个方面的知识,想自己定制许多内容,那么我推荐你使用Gentoo。
2.安装Centos7.6
(略)
3.配置环境变量,实现执行history的时候可以看到执行命令的时间。
#vim /etc/profile
添加export HISTTIMEFORMAT="%H:%M:%S "
然后保存退出
#source /etc/profile
4.Linux哲学思想
一切皆文件,因为操作系统里的所有目录都是以文件的形式排列的
5.总结Linux常用命令使用格式,并用实例说明
5.1文件与目录操作
5.1.1显示目录内容
ls
-a 显示隐藏文件
-l 显示内容列表
-s 以文件大小排序
5.1.2复制
cp [源文件] [目标文件]
-f 强制覆盖已经存在的文件
-i 覆盖已经存在的文件,并提示确认
-p 复制时保持原文件的属性
-r 对子目录一并进行复制
-b 覆盖已存在的文件前将文件备份
5.1.3移动文件或重命名
mv
-b 覆盖已存在的文件前将文件备份
-f 强制覆盖已经存在的文件
5.1.4打印当前工作目录
pwd
5.1.5删除文件或目录
rm
-f 强制进行删除,不进行确认
-r 递归方式删除目录及目录下的所有内容
-v 显示执行过程
5.1.6改变文件夹权限
chmod
-R 以递归的方式改变目录及其子目录权限
5.1.7查找文件
find path -option [-print] [-exec command ] {} ;
-name <查找模式> 按照名字查找
-empty 查找文件大小为0的文件或目录
-path <查找模式> 按照路径查找
-size <文件大小> 按照文件大小查找
-exec 指令名称 {} ; 用指令操作查找到的文件
-amin<分钟> 访问时间(+表示之前,-表示之内)
-atime<24小时数> 访问时间(+表示之前,-表示之内)
-mtime<24小时数> 修改时间(+表示之前,-表示之内)
-ctime<24小时数> 状态修改时间(+表示之前,-表示之内)
-depth 从指定目录下最深层的子目录开始查找
5.1.8创建目录
mkdir
-p 创建给定路径中缺少的中间目录
5.1.9创建空文件
touch
5.1.10切换目录
cd … 返回上一级目录
cd …/… 返回上两级目录
5.1.10文本编辑
vi/vim
内置命令;
😒 光标跳到最后一行行首
Ctrl+f 将内容向下滚动一屏
/字符串 文本查找操作
:set nu 显示行号
5.1.11编辑匹配到的文本
sed
1)替换文件中内容
sed s/pattern/replacement/flags
s,表明只替换每行中出现的第一处
ns,指定修改文件中的第n行文本
4种可用的flags:
数字,表明新文本将替换第几处模式匹配的地方
g,表明新文本将会替换所有匹配的文本
p,表明原先的内容要打印出来
w file,表明新文本将会替换所有匹配的文本并将替换的结果写到指定文件中
2)删除行
sed ‘nd’ file
d,表示删除
n,可以是第几行的数字,也可以是匹配模式
3)转换
sed y/inchars/outchars/ file
y,表示转换
4)插入和附加文本
i,表示插入,’ni\表示附加到第n行后
a,表示附加,’na\表示附加到第n行后
c,表示修改行
5) 回顾打印
sed -n ‘np’ file
-n,禁止输出其它行
p,表示打印,np表示打印第n行,n可以是匹配模式
6)处理文件
sed -n ‘nw filename’new_file
w,表示写文件,nw表示打印第n行,n可以是匹配模式
-n,表示不让行显示到STDOUT上
sed ‘nr filename’new_file
r,将文件中的数据插入到数据流中
7)next命令
单行用n
多行用N
例:sed ‘/header/{n;d}’
5.1.12对文本进行复杂化处理
awk
基本语法:
awk [-option] ’ BEGIN{ statements } statements2 END{ statements } ’
工作方式:
1.执行begin中语句块;
2.从文件或stdin中读入一行,然后执行statements2,重复这个过程,直到文件全部被读取完毕;
3.执行end语句块;
进阶语法:
awk -F 分隔符 ‘/模式/{动作}’ 输入文件
数据字段变量:
NR:表示记录数量,在执行过程中对应当前行号;
NF:表示字段数量,在执行过程总对应当前行的字段数;
$0:这个变量包含执行过程中当前行的文本内容;
$1:第一个字段的文本内容;
$2:第二个字段的文本内容;
5.2文本过滤与处理
5.2.1正序显示文件内容
cat
-n 显示行号
文件内容分屏查看
more
+n 从第n行开始显示
5.2.2分屏显示文件内容
less
-N 每一行行首显示行号
-m 显示剩余文件内容的百分比
5.2.3在文件中搜索匹配的行
grep
-i 忽略大小写的不同
-w 整个单词匹配
-x 整行匹配
-c 统计符合匹配模式的行数
-n 显示匹配模式的行所在的行号
-o 只输出匹配的文本行
-v 只输出没有匹配的文本行
5.2.4显示文件的头部内容
head
-n <行数> 指定显示头部内容的行数
5.2.5输出文件尾部内容
tail
-f 显示文件最新追加内容
5.2.6统计文件的字节数、单词数和行数
wc
-l 统计行数
-w 统计单词数
-c 统计字符数
5.2.7报告或忽略文件中的重复行
uniq
-c 统计重复行出现的次数
-d 仅输出重复行的内容。重复的行只输出一次
-u 仅显示不重复行的内容
-s 开始的位置
5.2.8删除文件中的指定字段
cut
-f <起始字段的位置-结束字段的位置> 显示指定的字段内容
-d <分隔符> 指定字段的分隔符,默认字段分隔符为“TAB”
cut 取的范围:
N- 第N个字段到结尾
-M 第1个字段为M
N-M N到M个字段
cut 取的单位:
-b 以字节为单位
-c 以字符为单位
-f 以字段为单位(使用定界符)
5.2.9对文件进行排序(默认升序)
sort
-f 忽略大小写的差异
-n 按数字进行排序
-r 降序排序
-b 忽略行间空白
-u 过滤重复行
-k POS1[,POS2] 排序从POS1位置开始;如果指定了POS2的话,到 POS2位置结束
-t 指定一个用来区分键位置的字符
5.3备份压缩
5.3.1打包备份
tar
-c 创建打包文件
-x 解压
-t 显示tar包中的文件列表
-v 显示打包的详细过程
-f 指定tar包的文件名
-C<目的目录> 切换到指定的目录
5.4磁盘管理
5.4.1报告磁盘空间使用情况
df
-h 以可读形式显示
5.4.2显示文件夹大小
du
-h 以可读形式显示
–max-depth=1 只显示第一层
-s 列出总量而已,而不列出每个各别的目录占用容量
5.4.3磁盘IO
iotop
5.5文件管理系统
5.5.1加载文件系统
mount
-l 显示所有已加载的文件系统
5.5.2卸载文件系统
umount
5.5.3进程与作业管理
周期性执行的任务
crontab
-l 显示待执行任务列表
-e 编辑计划任务
5.5.4按照名称杀死进程
killall
5.5.5以忽略挂起信号方式运行程序
nohup
5.5.6报告系统当前进程快照
ps
Unix风格:
-e 显示所有进程
-f 显示完整格式程序信息
-o format 仅显示由format指定的列(pid:进程ID,tty:终端,user:用户,comm:进程名,lstart:开始时间,etime:运行时间)
-O format不仅显示由format指定的列(pid:进程ID,tty:终端,user:用户,comm:进程名,lstart:开始时间,etime:运行时间),还显示命令的详细信息
BSD风格:
a 显示所有进程
u 采用基于用户的格式显示
x 显示所有进程,包括未分配任何终端的进程
H 以进程层级格式显示进程相关信息
e 显示命令使用的环境变量
r 仅显示运行中的进程
o format 仅显示由format指定的列(pid:进程ID,tty:终端,user:用户,comm:进程名,lstart:开始时间,etime:运行时间)
c 显示用以启动进程的程序名称
5.5.7基于名称查找进程
pgrep
5.5.8最大连接数
ulimit
-a 查看
- SHn 修改最大打开文件数(等同最大连接数)
5.5.9系统服务
chkconfig
–list 列出所有系统服务
5.5.10性能监测与优化
报告系统整体性能情况
top
-d <间隔时间> 屏幕刷新间隔时间
5.5.11显示内存的使用情况
free
-m 以MB为单位
-g 以GB为单位
5.5.12报告服务器的状态的命令集合
dstat
-c 统计CPU状态
-d 统计磁盘读写状态
–fs 统计文件打开数和inodes数
–top-mem 内存最高的进程
–top-io IO最高的进程
–top-cpu CPU使用率最高的进程
5.6软件包管理
5.6.1基于RPM的软件包管理器
yum
参数说明:
install安装rpm软件包
update 更新rpm软件包
remove 删除指定的rpm软件包
info 显示指定的rpm软件包的描述和概要信息
5.6.2RPM软件包安装
rpm
-i 安装软件包
-v 显示详细信息
-h 显示执行进度
-U 后面的软件即使没有安装过,则系统将予以直接安装;若后面接的软件有安装过旧版,则系统自动更新至新版
-F 如果后面接的软件并未安装到你的Linux系统上,则该软件不会被安装;亦即只有已安装到你Linux系统内的软件会被“升级”
-q 仅查询,后面接的软件名称是否有安装
-qa 列出所有的已经安装在本机Linux系统上面的所有软件名称
5.7网络配置
5.7.1配置网络接口
ifconfig
5.8网络测试
5.8.1显示网络状态
netstat
-t tcp协议相关
-u udp协议相关
-w raw socket相关
-l 处于监听状态
-a 所有状态
-n 以数字显示IP和端口
-e 扩展格式
-p 显示相关进程及PID
-r 显示内核路由表
-I 表示显示所有接口
-I IFACE 表示显示指定接口
5.8.2查看网络流量
iftop
-i 设定监测的网卡
-B 以bytes为单位显示流量(默认是bits)
5.9网络应用
5.9.1从指定URL地址下载文件
wget
5.10网络安全
5.10.1安全远程文件复制
scp
-q 不显示复制进度
-r 以递归方式复制目录
5.10.2查看进程占用带宽
nethogs
5.11监控
5.11.1检测命令运行结果
watch
-n或–interval watch 缺省每2秒运行一下程序,多用于周期性执行命令/定时执行命令
-d或-differences 用 -d 或–differences选项watch 会高亮显示变化的区域。而-d = cumulative 选项会把变动过的地方(不管最近的那次有没有变动)都会高亮显示出来。
-t或-no-title 会关闭watch 命令在顶部的时间间隔命令