Linux系统内核作者:
内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。
Linux内核版本又分为稳定版和开发版,两种版本是相互关联,相互循环:
稳定版:具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些bug或加入一些新的驱动程序。
开发版:由于要试验各种解决方案,所以变化很快。
内核源码网址:http://www.kernel.org 所有来自全世界的对Linux源码的修改最终都会汇总到这个网站,由Linus领导的开源社区对其进行甄别和修改最终决定是否进入到Linux主线内核源码中。
# 命令1
uname -a
# 命令2
cat /proc/version
Linux发行版 (也被叫做 GNU/Linux 发行版) 通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
主流:目前的Linux操作系统主要应用于生产环境,主流企业级Linux系统仍旧是RedHat或者CentOS
免费:RedHat 和CentOS差别不大,基于Red Hat Linux 提供的可自由使用源代码的企业级CentOS是一个Linux发行版本
更新方便:CentOS独有的yum命令支持在线升级,可以即时更新系统,不像RedHat 那样需要花钱购买支持服务!
服务指令:
Centos6 : service 服务名称 动作
Centos7: systemctl 动作 服务名
切换至目录 cd /etc/sysconfig/network-scripts/ 下,
使用vi编辑工具进行修改编辑网络配置文件
(Tab键可以补全文件夹名字,Tab一下没有的话是因为目录下该文件夹前缀的文件夹很多,可以Tab两下,会显示出所有该文件夹前缀的文件夹)
在修改文件前 先需要确定网卡文件,命令为: ip addr
ens33使我们需要修改的文件(ens33是网卡的文件名称)
进入vi编辑工具,vi编辑工具有命令模式和插入模式,点击i键进入插入模式才能修改
所以ifcfg-ens33使我们需要修改的文件,键入 vi ifcfg-ens33进入文件进入命令模式.
宿主机网络与虚拟网络的网关设置
自己设置的虚拟机静态IP地址不能和网关地址冲突、不能和其他虚拟机以及Windows系统的ip地址冲突
插入完后按Esc退出insert模式,按:wq保存修改并退出.
vim /etc/resolv.conf
网络配置修改完成后需要重新启动网络服务:
systemctl restart network.service
或者service network restart
CentOS 7 关闭防火墙:
#查看防火墙状态
systemctl status firewalld.service
#active(running)说明防火墙已经被打开了。
#Active: inactive (dead) :说明防火墙关闭。
#关闭防火墙
systemctl stop firewalld.service
#永久关闭防火墙:
systemctl disable firewalld.service
Windows关闭防火墙:控制面板
Win 系统与 linux系统的防火墙都要关闭
虚拟机ping百度,虚拟机ping Windows,Windows ping虚拟机
ctrl+c可以停止Linux的ping操作
# 安装wget
yum install -y wget
# 备份配置文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# 下载国内yum源文件(华为yum源)
wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo
#(阿里yum源):
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清理缓存
yum clean all
# 重新生成缓存
yum makecache
# 查看yum源信息
yum repolist
# 修改内容后更新yum源
yum -y update
yum -y install vim
vim /etc/vimrc
打开文件后、按i进入编辑模式,将以下代码添加到合适位置:
set nu " 设置显示行号
set showmode " 设置在命令行界面最下面显示当前模式等
set ruler " 在右下角显示光标所在的行数等信息
set autoindent " 设置每次单击Enter键后,光标移动到下一行时与上一行的起始字符对齐
syntax on " 设置语法检测,当编辑C或者Shell脚本时,关键字会用特>殊颜色显示
1. 查找单个字符:在命令模式下,按下“/”键,然后输入要查找的字符,按下回车键即可。
2. 查找单词:在命令模式下,按下“/”键,然后输入要查找的单词,按下回车键即可。
3. 查找下一个匹配项:在命令模式下,按下“n”键即可查找下一个匹配项。
4. 查找上一个匹配项:在命令模式下,按下“N”键即可查找上一个匹配项。
5. 查找并替换:在命令模式下,输入“:%s/要替换的字符/替换后的字符/g”即可进行查找并替换操作。
6. 查找并替换确认:在命令模式下,输入“:%s/要替换的字符/替换后的字符/gc”即可进行查找并替换确认操作。
7. 查找当前行:在命令模式下,按下“shift + 8”键即可查找当前行。
8. 查找指定行:在命令模式下,输入“:行号”即可查找指定行。
9. 查找指定范围:在命令模式下,输入“:起始行号,结束行号”即可查找指定范围。
10. 查找当前文件:在命令模式下,输入“:%s/要查找的字符/g”即可查找当前文件中的所有匹配项。
# 插入命令
i 在光标前插入
I 在光标当前行开始插入
a 在光标后插入
A 在光标当前行末尾插入
o 在光标当前行的下一行插入新行
O 在光标当前行的上一行插入新行
# 定位命令
:set nu 显示行号
:set nonu 取消行号
gg 到文本的第一行
G 到文本的最后一行
:n 到文本的第n行
# 删除命令
x 删除光标所在处字符
nx 删除光标所在处后的n个字符
dd 删除光标所在行。ndd删除n行
dG 删除光标所在行到末尾行的所有内容
D 删除光标所在处到行尾的内容
:n1,n2d 删除指定范围的行
# 替换和取消命令
u undo,取消上一步操作
Ctrl +r redo,返回到undo之前
r 替换光标所在处的字符
R 从光标所在处开始替换,按Esc键结束
# 查找指定字符
/name name处输入要查找的字符
n 向下查找
# 常用快捷键
Shift + zz 保存退出,与“:wq”作用相同
v 进入字符可视模式
V 或 Shift+v 进入行可视模式
Ctrl+ v 进入块可视模式
yum -y install gcc
yum -y install gcc-c++
yum -y install unzip
阿里云NTP服务器:ntp1.aliyun.com、ntp2.aliyun.com、ntp3.aliyun.com、ntp4.aliyun.com、ntp5.aliyun.com、ntp6.aliyun.com、ntp7.aliyun.com
腾讯云NTP服务器:ntpupdate.tencentyun.com
国家授时中心服务器:210.72.145.44
清华大学NTP服务器:s1b.time.edu.cn、s1e.time.edu.cn、s2a.time.edu.cn、s2b.time.edu.cn
# 安装ntp服务
yum install -y ntp
yum install -y ntpdate
# 设置时区
timedatectl set-timezone Asia/Shanghai
# 同步腾讯云NTP服务器时间
ntpdate ntp1.aliyun.com
# 时间验证
date
# 查看时区列表
timedatectl list-timezones
/
根目录。
包含了几乎所的文件目录。相当于中央系统。进入的最简单方法是:cd /。
/boot
引导程序,内核等存放的目录。
这个目录,包括了在引导过程中所必需的文件,引导程序的相关文件(例如grub,lilo以及相应的配置文件以及Linux操作系统内核相关文件(例如vmlinuz等一般都存放在这里。在最开始的启动阶段,通过引导程序将内核加载到内存,完成内核的启动(这个时候,虚拟文件系统还不存在,加载的内核虽然是从硬盘读取的,但是没经过Linux的虚拟文件系统,这是比较底层的东西来实现的。然后内核自己创建好虚拟文件系统,并且从虚拟文件系统的其他子目录中(例如/sbin 和 /etc加载需要在开机启动的其他程序或者服务或者特定的动作(部分可以由用户自己在相应的目录中修改相应的文件来配制。如果我们的机器中包含多个操作系统,那么可以通过修改这个目录中的某个配置文件(例如grub.conf来调整启动的默认操作系统,系统启动的择菜单,以及启动延迟等参数。
/sbin
超级用户可以使用的命令的存放目录。
存放大多涉及系统管理的命令(例如引导系统的init程序,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令(但是时普通用户也可能会用到。这个目录和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin等目录是相似的,我们要记住,凡是目录sbin中包含的都是root权限才能执行的,这样就行了。后面会具体区分。
/bin
普通用户可以使用的命令的存放目录。
系统所需要的那些命令位于此目录,比如ls、cp、mkdir等命令;类似的目录还/usr/bin,/usr/local/bin等等。这个目录中的文件都是可执行的、普通用户都可以使用的命令。作为基础系统所需要的最基础的命令就是放在这里。
/lib
根目录下的所程序的共享库目录。
此目录下包含系统引导和在根用户执行命令时候所必需用到的共享库。做个不太好但是比较形象的比喻,点类似于Windows上面的system32目录。理说,这里存放的文件应该是/bin目录下程序所需要的库文件的存放地,也不排除一些例外的情况。类似的目录还/usr/lib,/usr/local/lib等等
/dev
设备文件目录。
在Linux中设备都是以文件形式出现,这里的设备可以是硬盘,键盘,鼠标,网卡,终端,等设备,通过访问这些文件可以访问到相应的设备。设备文件可以使用mknod命令来创建,具体参见相应的命令;而为了将对这些设备文件的访问转化为对设备的访问,需要向相应的设备提供设备驱动模块(一般将设备驱动编译之后,生成的结果是一个*.ko类型的二进制文件,在内核启动之后,再通过insmod等命令加载相应的设备驱动之后,我们就可以通过设备文件来访问设备了。一般来说,想要Linux系统支持某个设备,只要个东西:相应的硬件设备,支持硬件的驱动模块,以及相应的设备文件。
/home
普通用户的家目录($HOME目录。
在Linux机器上,用户主目录通常直接或间接地置在此目录下。其结构通常由本地机的管理员来决定。通常而言,系统的每个用户都自己的家目录,目录以用户名作为名字存放在/home下面(例如quietheart用户,其家目录的名字为/home/quietheart。该目录中保存了绝大多数的用户文件(用户自己的配置文件,定制文件,文档,数据等),root用户除外(参见后面的/root目录。由于这个目录包含了用户实际的数据,通常系统管理员为这个目录单独挂载一个独立的磁盘分区,这样这个目录的文件系统格式就可能和其他目录不一样了(尽管表面上看,这个目录还是属于根目录的一棵子树上),有利于数据的维护。
/root
用户root的$HOME目录
系统管理员(就是root用户或超级用户)的主目录比较特殊,不存放在/home中,而是直接放在/root目录下了。
/etc
全局的配置文件存放目录。
系统和程序一般都可以通过修改相应的配置文件,来进行配置。例如,要配置系统开机的时候启动那些程序,配置某个程序启动的时候显示什么样的风格等等。通常这些配置文件都集中存放在/etc目录中,所以想要配置什么东西的话,可以在/etc下面寻找我们可能需要修改的文件。一些大型套件,如X11,在 /etc 下它们自己的子目录。系统配置文件可以放在这里或在 /usr/etc。 不过所程序总是在 /etc 目录下查找所需的配置文件,你也可以将这些文件链接到目录 /usr/etc。另外,还一个需要注意的常见现象就是,当某个程序在某个用户下运行的时候,可能会在该用户的家目录中生成一个配置文件(一般这个文件最开始就是/etc下相应配置文件的拷贝,存放相应于“当前用户”的配置,这样当前用户可以通过配置这个家目录的配置文件,来改变程序的行为,并且这个行为只是该用户特的。原因就是:一般来说一个程序启动,如果需要读取一些配置文件的话,它会首先读取当前用户家目录的配置文件,如果存在就使用;如果不存在它就到/etc下读取全局的配置文件进而启动程序。就是这个配置文件不自动生成,我们手动在自己的家目录中创建一个文件的话,也有许多程序会首先读取到这个家目录的文件并且以它的配置作为启动的选项(例如我们可以在家目录中创建vim程序的配置文件.vimrc,来配置自己的vim程序。
/usr
这个目录中包含了命令库文件和在通常操作中不会修改的文件。
这个目录对于系统来说也是一个非常重要的目录,其地位类似Windows上面的”Program Files”目录(请原谅我可能这样做比较不太恰当_。安装程序的时候,默认就是安装在此文件内部某个子文件夹内。输入命令后系统默认执行/usr/bin下的程序(当然,前提是这个目录的路径已经被添加到了系统的环境变量中。此目录通常也会挂载一个独立的磁盘分区,它应保存共享只读类文件,这样它可以被运行Linux的不同主机挂载。
/usr/lib
目标库文件,包括动态连接库加上一些通常不是直接调用的可执行文件的存放位置。
这个目录功能类似/lib目录,理说,这里存放的文件应该是/bin目录下程序所需要的库文件的存放地,也不排除一些例外的情况。
/usr/bin
一般使用者使用并且不是系统自检等所必需可执行文件的目录。
此目录相当于根文件系统下的对应目录(/bin,非启动系统,非修复系统以及非本地安装的程序一般都放在此目录下。
/usr/sbin
管理员使用的非系统必须的可执行文件存放目录。
此目录相当于根文件系统下的对应目录(/sbin,保存系统管理程序的二进制文件,并且这些文件不是系统启动或文件系统挂载 /usr 目录或修复系统所必需的。
/usr/share
存放共享文件的目录。
在此目录下不同的子目录中保存了同一个操作系统在不同构架下工作时特定应用程序的共享数据(例如程序文档信息)。使用者可以找到通常放在 /usr/doc 或 /usr/lib 或 /usr/man 目录下的这些类似数据。
/usr/include
C程序语言编译使用的头文件。
linux下开发和编译应用程序所需要的头文件一般都存放在这里,通过头文件来使用某些库函数。默认来说这个路径被添加到了环境变量中,这样编译开发程序的时候编译器会自动搜索这个路径,从中找到你的程序中可能包含的头文件。
/usr/local
安装本地程序的一般默认路径。
当我们下载一个程序源代码,编译并且安装的时候,如果不特别指定安装的程序路径,那么默认会将程序相关的文件安装到这个目录的对应目录下。例如,安装的程序可执行文件被安装(安装实质就是复制到了/usr/local/bin下面,此程序(可执行文件所需要依赖的库文件被安装到了/usr/local/lib目录下,被安装的软件如果是某个开发库(例如Qt,Gtk等那么相应的头文件可能就被安装到了/usr/local/include中等等。也就是说,这个目录存放的内容,一般都是我们后来自己安装的软件的默认路径,如果择了这个默认路径作为软件的安装路径,被安装的软件的所文件都限制在这个目录中,其中的子目录就相应于根目录的子目录。
/proc
特殊文件目录。
这个目录采用一种特殊的文件系统格式(proc格式,内核支持这种格式。其中包含了全部虚拟文件。它们并不保存在磁盘中,也不占据磁盘空间(尽管命令ls -c会显示它们的大小)。当您查看它们时,您实际上看到的是内存里的信息,这些文件助于我们了解系统内部信息。
/opt
可择的文件目录。
这个目录表示的是可择的意思,些自定义软件包或者第方工具,就可以安装在这里。比如在Fedora Core 5.0中,OpenOffice就是安装在这里。些我们自己编译的软件包,就可以安装在这个目录中;通过源码包安装的软件,可以把它们的安装路径设置成/opt这样来安装。这个目录的作用一点类似/usr/local。
/mnt
临时挂载目录。
这个目录一般是用于存放挂载储存设备的挂载目录的,比如磁盘,光驱,网络文件系统等,当我们需要挂载某个磁盘设备的时候,可以把磁盘设备挂载到这个目录上去,这样我们可以直接通过访问这个目录来访问那个磁盘了。一般来说,我们最好在/mnt目录下面多建立几个子目录,挂载的时候挂载到这些子目录上面,因为通常我们可能不仅仅是挂载一个设备吧?
/media
挂载的媒体设备目录。
挂载的媒体设备目录,一般外部设备挂载到这里,例如cdrom等。比如我们插入一个U盘,我们一般会发现,Linux自动在这个目录下建立一个disk目录,然后把U盘挂载到这个disk目录上,通过访问这个disk来访问U盘。
# 查看该目录下所有文件或目录
ls
# 详细查看该目录下所有文件或目录
ll
# 定位目前所在目录结构
pwd
# 清屏
clear 或 Ctrl + l
# 从一个程序跳出来
Ctrl+C 或 Ctrl+Z
# 查看系统的进程
ps
文件操作:
vi 文件名 打开并浏览文件(没有的话先创建文件再进入)
点i键进入insert模式,可以编辑文件;点击Esc键退出insert模式,输入:wq保存并退出文件,输入:q只退出。
touch 文件名 只创建文件不打开文件(如果有文件的话无效)
echo "写入的文本" > 文件名 不打开文件直接插入
rm 文件名 删除文件 -rf递归参数
-r 同时删除该目录下的所有文件
-f 强制删除文件或自录
rm -rf *.log 删除后缀为.log的所有文件
rm -rf 文件夹名/ 文件夹名/ ... 递归删除文件夹以及文件夹下的所有文件
rmdir删除空目录
cat 文件名 --> 显示文本文件内容
cat 文件名1 文件名2 --> 查看文件里的内容
more 分页显示文本文件内容(每次显示内容的一部分,点击空格显示下一部分)
less 分页显示文本文件内容(每次显示内容的一部分,点击空格显示下一部分)
head 查看文本中开头部分的内容
head -n 5 a.log查看a.log文件的前5行
tail 查看文本中结尾部分的内容
tail -f b.log 循环读取(生产环境中最常用,可以实时查看文件的日志信息等)
wc统计文本的行数、字数、字符数
-m 统计文本字符数
-w 统计文本字数
-l 统计文本行数
find 在文件系统中查找指定的文件
find /etc/ -name "aaa"
grep 在指定的文本文件中查找指定的字符串
grep -n“love”books (-n:输出的同时打印行号)
In 建立链接文件
-s 对源文件建立符号连接,而非硬连接
chmod 777 abc.log
chmod +x abc.log 为abc.log增添可执行权限(单权限增加)
tar -z
top显示当前系统中耗费资源最多的进程
ps -ef显示瞬间的进程状态
-e /-A 显示所有进程,环境变量
-f全格式
-a 显示所有用户的所有进程(包括其它用户)
-u 按用户名和启动时间的顺序来显示进程
-x 显示无控制终端的进程
kill杀死一个进程
kill -9 pid
df显示文件系统磁盘空间的使用情况
du 显示指定的文件(目录)已使用的磁盘空间的总
-h文件大小以K,M,G为单位显示
-s只显示各档案大小的总合
free 显示当前内存和交换空间的使用情况
netstat 显示网络状态信息
-a 显示所有连接和监听端口
-t(tcp)仅显示tcp相关选项
-u(udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-p显示建立相关链接的程序名
ifconfig 网卡网络配置详解
ping测试网络的连通性
切换目录:
cd --> 切换目录
cd ../ --> 返回上一级目录
cd ../../ --> 返回上两级目录
创建文件目录:
mkdir 文件夹名/ --> 创建文件夹
复制文件 :
#将 /etc/fuse.conf 这个文件复制到 /tmp/下
cp /etc/fuse.conf /tmp/
#将 /etc/fuse.conf 这个文件复制到 /tmp/下,并更名为fuse2.conf
cp /etc/fuse.conf /tmp/fuse2.conf
移动文件:
mv 文件名 移动到的路径+文件名
剪切文件:
#如果有 xyz/ 这个目录,则会将 abcd/ 这个目录本身包括里面的内容一同剪切到 xyz/ 下
#如果没有 xyz/ 这个目录,则相当于重命名,即将 abcd/ 改名为 xyz/
mv abcd/ xyz/
#将 abc.log 剪切,然后重命名为 123.log , 如果是在同一个目录下 , 就相当于重命名
mv abc.log 123.log
文件重命名:
mv 文件名 修改后的文件名
cp 文件名 修改后的文件名
删除文件/目录:
rm -rf /var
将会删除 /var 目录以及其下所有文件、文件夹
rmdir 只能删除空文件夹
删除文件命令:
rm -f /var/log/httpd/access.log
将会强制删除/var/log/httpd/access.log这个文件
查看目录下的文件:
备份压缩命令
gzip 压缩(解压)文件或目录,压缩文件后缀为 gz
命令格式: gzip [选项] 压缩(解压缩)的文件名
-d 将压缩文件解压
-l 显示压缩文件的大小,未压缩文件的大小,压缩比
-v 显示文件名和压缩比
-num 用指定的数字num调整压缩的速度,-1 或 --fast 表示最快压缩方法(低压缩比)
-9 或 --best表示最慢压缩方法(高压缩比)。系统缺省值为6
bzip2 压缩(解压)文件或目录,压缩文件后缀为 bz2
命令格式: bzip2 [-cdz] 文档名
-c 将压缩的过程产生的数据输出到屏幕上
-d 解压缩的参数
-z 压缩的参数
-num 用指定的数字 num 调整压缩的速度,-1 或 --fast 表示最快压缩方法(低压缩比),
-9 或 --best 表示最慢压缩方法(高压缩比)。系统缺省值为6
tar 文件、目录打(解) 包
tar -zxvf xxx.tar
-c 建立一个压缩文件的参数指令
-x 解开一个压缩文件的参数指令
-z 是否需要用 gzip 压缩解压
-i 是否需要用 bzip2 压缩解压
-v 压缩解压的过程中显示文件
-f 使用文档名,在 f 之后要立即接文档名
压缩文件: tar -czvf f.tar.gz family/
解压文件: tar -zxvf f.tar.gz
解压到制定目录: tar -zvxf f.tar.gz -C dom/
关机重启命令:
shutdown系统关机
-r 关机后立即重启
-h 关机后不重新启动
halt 关机后关闭电源(千万不要用)
reboot 重新启动
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定.
7代表一个文件拥有读写执行权限
给一个文件赋读写执行权限:
chmod 777 文件名
创建文件:
touch filename
echo “内容” > file
查看文件:
cat filename
多个文件连接输出
cat file1 file2
将文件内容追加到文件末尾
cat file >> file2
从标准输入中读取内容并写入文件
cat > file
带行号的显示内容
cat -n file
实时查看文件:
Linux 实时显示追加文件内容的指令是 tail -f,它可以实时显示一个文件的最新内容,适用于查看正在不断追加内容的日志文件。tail -f 命令可以根据需要显示指定文件的末尾内容,并继续监视该文件以获取任何新的行,当文件内容不断增加时,会自动刷新输出。例如,使用 tail -f access.log 命令可以实时查看 Apache 服务器的访问日志文件。在终端上运行此命令时,终端会一直处于阻塞状态,直到您中断此命令或关闭终端为止
tail -f file
可以使用Linux命令行工具tail来实现显示文件最后n行的功能。tail命令的基本语法如下
tail -n
其中,表示要显示的行数,表示要显示的文件名。如果省略-n参数,默认显示最后10行。
# 启动防火墙
systemctl start firewalld
# 关闭防火墙
systemctl stop firewalld.service
# 检查防火墙状态
systemctl status firewalld.service
# 设置开机启用防火墙
systemctl enable firewalld.service
# 设置开机禁用防火墙
systemctl disable firewalld.service
# 重启防火墙
systemctl restart firewalld
firewall-cmd --zone=public --add-port=8080/tcp --permanent # 开放8080端口
firewall-cmd --zone=public --remove-port=5672/tcp --permanent #关闭5672端口
firewall-cmd --reload # 配置立即生效
# 查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
firewall-cmd –list-ports
# 查看防火墙状态
firewall-cmd --state
# 查看监听的端口
netstat -lnpt