一、引言
1.1、Linux引言
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix
的多用户
、多任务
、支持多线程和多CPU的操作系统
。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持
。它除了在服务器操作系统
方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。目前Linux存在着许多不同的Linux发行版本,但它们都使用了Linux内核
。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机。
1.2、Linux的诞生
20世纪80年代,计算机硬件的性能不断提高,PC的市场不断扩大,当时可供计算机选用的操作系统主要有Unix、DOS和MacOS这几种。Unix价格昂贵,不能运行于PC。DOS显得简陋,且源代码被软件厂商严格保密;
MacOS是一种专门用于苹果计算机的操作系统。此时,计算机科学领域迫切需要一个更加完善、强大、廉价和完全开放的操作系统。由于供教学使用的典型操作系统很少,因此当时在荷兰当教授的美国人AndrewS.Tanenbaum编写了一个操作系统,名为MINIX,为了向学生讲述操作系统内部工作原理。MINIX虽然很好,但只是一个用于教学目的的简单操作系统,而不是一个强有力的实用操作系统,然而最大的好处就是公开源代码。全世界学计算机的学生都通过钻研MINIX源代码来了解电脑里运行的MINIX操作系统,芬兰赫尔辛基大学大学二年级的学生Linus Torvalds就是其中一个,在吸收了MINIX精华的基础上,Linus于1991年写出了属于自己的Linux操作系统,版本为Linux0.01,是Linux时代开始的标志。他利用Unix的核心,去除繁杂的核心程序,改写成适用于一般计算机的x86系统,并放在网络上供大家下载,1994年推出完整的核心Version1.0,至此,Linux逐渐成为功能完善、稳定的操作系统,并被广泛使用。
Linux出现于1991年,是由芬兰赫尔辛基大学学生,Linus Torvalds和后来加入的众多爱好者共同开发完成。
1.3、Linux的特点
1.3.1、完全免费
Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。
1.3.2、多用户、多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行,丰富的网络功能,可靠的系统安全,良好的可移植性,具有标准兼容性,出色的速度性能。
1.4、Centos
1.4.1、简介
CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器,)以CentOS替代商业版的Red Hat、Enterprise Linux使用。两者的不同,在于CentOS完全开源。
1.4.2、 centos 和 readheat区别
目前的Linux操作系统主要应用于生产环境,主流企业的Linux系统仍旧是RedHat或者CentOS
,他们出自于同样的源代码,但centos完全免费。其独有的yum命令支持在线升级,可以即时更新系统,不像RedHat 那样需要花钱购买支持服务!
1.5、Linux目录结构
- bin (binaries):存放二进制可执行文件。
- sbin (super user binaries):存放二进制可执行文件,只有root才能访问。
- etc (etcetera):存放系统配置文件。
- usr (unix shared resources):用于存放共享的系统资源。
- home:存放用户文件的根目录。
- root :超级用户目录。
- dev (devices):用于存放设备文件。
- lib (library):存放跟文件系统中的程序运行所需要的共享库及内核模块。
- mnt (mount):系统管理员安装临时文件系统的安装点。
- boot 存放用于系统引导时使用的各种文件。
- tmp (temporary)用于存放各种临时文件。
- var (variable)用于存放运行时需要改变数据的文件。
二、Linux常用命令
2.1、Linux命令格式
命令 -选项 参数 如: ls -l /usr 复制代码
2.2、ls
2.2.1、概述
ls(list)命令用于显示文件和目录列表
2.2.2、常用参数
- -l(long):长格式显示文件和目录信息。
ls -l
简写就是ll
。 - -a(all):显示所有文件和目录。
- -R:递归显示指定目录下的文件清单,即会显示指定目录分支内各子目录中的文件清单。
- -h:人性化显示文件大小。
2.2.3、细节
文件类型 文件权限 链接数 属主 属组 大小 日期 时间 文件名 d rwxr -xr -x 8 xiaolin root 4096 Apr 22 09:42 jdk11 复制代码
第一个信息(第一位):
- d:表示当前类型为目录
- -:代表当前类型问文件
第二个信息(后面9位):
- 第一个3位:代表当前文件创建者( user)的操作权限 r(读) 、w(写)、x(执行)。
- 中间的3位 :代表当前文件创建者的同组(group)用户对文件的操作权限 。
- 最后的3位 :代表当前文件创建者的不同组(other)用户对该文件的操作权限。
第三个信息(再后面1位):表示文件链接数。
第四个信息:链接数后面的表示当前文件的创建者。
第五个信息:当前文件创建者后面表示当前文件创建者所在的组是哪个组。
第六个信息:所在组后面表示当前文件占用的空间大小。
第七个信息:文件最后一次修改的时间。
第八个信息:文件名或者目录名。
2.3、操作文件命令
2.3.1、cd
cd命令用来切换目录。可以随意切换到想要的目录。
2.3.2、pwd(print working directory)
显示当前工作目录
2.3.3、touch
创建空文件
2.3.4、mkdir(make directoriy)
创建目录,他有一个参数:-p(parents),表示如果父目录不存在的话先生成父目录。
2.3.5、cp(copy)
cp 文件名 目录:复制文件到指定目录中 cp -r(recursive) 目录名 目录:复制指定目录到指定目录中,-r表示递归处理,将指定目录下的文件与子目录一并拷贝。 复制代码
2.3.6、mv(move)
移动文件或目录、文件或目录改名
mv 文件名 新文件名:表示文件改名 mv 文件名 目录名: 表示文件移动 mv 目录名 不存在目录名:表示目录改名 复制代码
2.3.7、rm
他有几个常用的参数
-r:同时删除该目录下的所有文件(recursive) -f:强制删除文件或目录(force) 复制代码
经常使用组合命令是:rm -rf
2.3.8、rmdir(remove directoriy)
删除空目录,如果不是空目录会提示报错。
2.3.9、cat(catenate)
显示文本文件内容,用来展示少量内容,仅限一个屏幕
2.3.10、head
查看文本中开头或结尾部分的内容
# 查看a.log文件的前5行 head -n 5 a.log 复制代码
2.3.11、tail
# 循环读取(fellow,实时展示文件的内容变化) tail -f b.log 复制代码
2.3.12、echo
输出命令
# 用来向屏幕输出一句话 echo I love baby # 将这段内容输入到 aa.txt文件中,运行两次就是追加 echo I Love baby >> aa.txt 复制代码
2.4、网络相关命令
2.4.1、ip addr
查看IP地址,简化写法为:ip a
2.4.2、ping
测试网络连通性
2.5、tar命令
tar命令相当于windows的好压,用于解压或者压缩文件。
# 打包命令 tar -cvf 打包文件名 源文件 复制代码
他有几个参数:
- -c(create):建立一个压缩文件的参数指令。
- -x(extract):解开一个压缩文件的参数指令。
- -z :是否需要用 gzip 压缩, .tar.gz(打包并且用了gzip的压缩)。
- -v :压缩的过程中显示文件(verbose)。
- -f:使用档名。
通常使用的组合命令:
- tar -cvf aaa.tar file1.txt file2.txt:将file1和file2打包成aaa.tar。
- tar -zcvf aaa.tar.gz file1.txt file2.txt :将file1和file2打包成aaa.tar
- tar -zxvf aaa.tar.gz:将aaa.tar.gz解压
2.6、systemctl 服务命令(Centos独有)
他用于查看服务的状态。
# 查看某个服务的运行状态 systemctl status 服务名 # 启动某个服务 systemctl start 服务名 # 重启某个服务 systemctl restart 服务名 # 停止某个服务 systemctl stop 服务名 复制代码
2.7、进程相关命令
2.7.1、ps
查询在当前控制台上运行的进程。
# 查询系统中所有运行的进程,包括后台进程,其中参数a是所有进程,参数x包括不占用控制台的进程,参数u显示用户。 ps -aux # 查询系统中所有运行的进程,包括后台进程,而且可以显示出每个进程的父进程号。 ps -ef ps -aux|grep 进程 服务名 复制代码
2.7.2、top
动态显示系统进程
2.7.3、kill
杀死进程,
# 上述命令中1314是进程号;一般在执行kill命令之前,先用ps或pstree来查询一下将要被杀掉的进程的进程号。 kill 1314 # 强制终止1314号进程的运行,其中参数-9代表强制的意思,实际上kill命令是向该进程发送信号,该进程接到信号后决定是否停止运行,有些守护进程必须要收到参数9才终止运行。 kill -9 1314 复制代码
2.8、vi/vim编辑器
2.8.1、概述
vi / vim是Unix / Linux上最常用的文本编辑器而且功能非常强大。
2.8.2、三种模式
vi编辑器有三种模式:
- 编辑模式(命令模式) :所有的机键动作都会理解为编辑整个文档的操作,默认为编辑模式。
- 输入模式:大部分机键动作都会理解为输入的字符。
- 末行模式:在末行模式,输入很多文件管理命令。
模式之间可以互相转换:
- 编辑模式-->输入模式:
(1). i:在光标所在字符前开始插入。
(2). a:在光标所在字符后开始插入。
(3). o:在光标所在行的下面另起一新行插入。
(4). s:删除光标所在的字符并开始插入。
(5). I:在光标所在行的行首开始插入 如果行首有空格则在空格之后插入。
(6).A:在光标所在你行的行尾开始插入。
(7).O:在光标所在行的上面另起一行开始插入。
(8).S:删除光标所在行并开始插入。 - 输入模式-->编辑模式:ESC(键盘左上方的按键)。
- 编辑模式--->末行模式:输入
:
。 - 末行模式:-->编辑模式:ESC(键盘左上方的按键)(一次或者多次)
2.8.3、常用命令
- i:在光标前插入。
- I:在光标当前行开始插入。
- a:在光标后插入。
- A:在光标当前行末尾插入。
- o:在光标当前行的下一行插入新行。
- O:在光标当前行的上一行插入新行。
- :set nu:显示行号。
- :set nonu:取消行号。
- gg:到文本的第一行。
- G:到文本的最后一行。
- :n:到文本的第n行。
- u:undo,取消上一步操作。
- Ctrl + r:redo,返回到undo之前。
- :wq:保存退出。
- 按住shift:保存退出,与“:wq”作用相同。
- :wq!:强制保存退出
- :q:退出不保存。
- :q!:强制退出不保存。
- yy:复制光标所在行 (编辑模式)。
- 2yy 从光标行开始复制2行(编辑模式)。
- p::粘贴命令。
- u:撤销(编辑模式)。
- 1,$d:全部删除(末行模式)。
2.8.4、移动光标和翻屏操作
2.8.4.1、逐字符移动
- h:左移动。
- l:右移动。
- j:向下移动。
- k:向上移动。
2.8.4.2、行内跳转和行间跳转
- 0:跳转到行首。
- $:跳转到行尾。
- G::跳转行最后一行(需要在编辑模式下输入按键盘的G)。
- gg: 跳转到第一行(需要在编辑模式下按键盘两下gg)。
- ctrl+f:向下翻一页。
- ctrl+b:向上翻一页。
2.8.4、查找和替换
- /需要匹配的条件:从前往后查找。
/s 复制代码
- ?需要匹配的条件:从后往前查找。
?s 复制代码
- n: 下一个匹配的字符串(编辑模式)。
- N: 上一个匹配的字符串(编辑模式)。
- g:全局替换。
- i:忽略大小写
2.9、软件相关命令
2.9.1、rpm命令
2.9.1.1、rpm概述
RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括RedHat、CentOS、SUSE等Linux的分发版本都有采用,可以算是公认的行业标准了。RPM文件在Linux系统中的安装最为简便,
2.9.1.2、rpm命令
rpm命令常用的参数:
- i(install):安装应用程序。
- e(erase):卸载应用程序。
- vh(verbose hash):显示安装进度。
- U(update) :升级软件包。
- qa(query all): 显示所有已安装软件包。
# 显示进度安装 gcc-c++-4.4.7-3.el6.x86_64.rpm rmp -ivh gcc-c++-4.4.7-3.el6.x86_64.rpm 复制代码
2.9.2、yum命令
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。使用YUM命令必须连接外部网络
2.10、用户和组相关命令
用户的定义是一类用户具有访问某个资源或服务的能力。 用户组(存放一些列用户的容器),同时用户组还拥有具有访问某个资源的权限
- whoami:查看当前用户。
- exit:退出用户。
- groupadd:添加组.
- groupdel:删除组。
- useradd:添加用户,可以带一个参数
-g
,指定组名称,如果创建用户的时候,不指定组名,那么系统会自动创建一个和用户名一样的组名。 - passwd 用户名:设置用户密码。
- su 用户名:切换用户。
2.11、权限相关命令
权限的定义是某一个特定的人资源或者服务的访问能力。 Linux文件有三种
典型的权限,即r读权限、w写权限和x执行权限
。在长格式输出中在文件类型的后面有9列权限位,实际上这是针对不同用户而设定的。r=4,w=2,x=1
。
r(read):表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。 w(write):表表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。 x(excute):表表示可写入,表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。
2.12、搜索相关命令
2.12.3、文件相关
- whereis 命令名:搜索该命令所在路径及帮助文档所在位置。
whereis ls 复制代码
- which:搜索命令所在路径及别名
which ls 复制代码
- find 搜索范围 搜索条件:find是在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
# 不区分大小写 find /root -iname install.log 复制代码
2.12.4、字符串搜索
基本格式为:grep [选项] 字符串 文件名。
可选项为:
- -i:忽略大小写。
- -v:排除指定字符串。
2.12.5、find命令和grep命令的区别
find命令:在系统中搜索符合条件的文件名。
grep命令:在文件中搜索符合条件的字符串。
2.13、防火墙
centos7的防火墙程序服务名为:firewalld,他的相关命令如下:
- 防火墙配置命令:firewall-cmd。
- 防火墙帮助:fireweall-cmd --help。
- 查看防火墙状态:firewall-cmd --state。
- 查看所有打开的端口:firewall-cmd --zone=public --list-ports。
- 开启端口:firewall-cmd --zone=public --add-port=端口号/tcp --permanent(--permanent参数为永久生效,不加则重启后失效)
- 更新防火墙规则:firewall-cmd --reload。
- 删除端口:firewall-cmd --zone=public --remove-port=端口号/tcp --permanent。