Linux学习总结
今天来学习非常经典的Linux,从最基础的部分学习,一下是这次的学习内容.让我们一起来学习经典,致敬经典.
Linux的工作方向
Linux运维工程师:主要是负责服务器的规划,调优测试,日常监控,故障处理,护具备份只分析,服务器瘫痪了,要迅速的恢复.
Linux嵌入式工程师:能够熟练的掌握Linux下各种驱动程序的开发,还有就是在嵌入式系统中进行开发,
注意:我们在安装CentOS的时候,在配置网络连接时,会有三种方式:
- 桥连接:Linux可以和其他的系统通信,但是可能造成IP冲突
-
.NET:网络地址转换方式,可以和外界通信,并且不会造成IP冲突.
-
主机模式:该模式下,Linux是一台独立的主机,不能访问外界
我们要选择.NET方式.
Linux的目录结构
和Windows不同的是,Linux的目录结构是只有一个根目录,很像一颗倒立的大梧桐树,Linux的文件系统采用的都是层级的树状目录结构,只有一个根目录”/”,所有的目录都是基于此目录进行创建的,
在Linux的世界中,一切皆文件
例如:
/dev 专门用来管理设备的
/media 当设备插入的时候,硬件(cpu,disk(硬盘),DVD(光驱),U盘等),会直接在media目录下进行管理,其中cpu 和disk,会直接在/dev目录下映射成文件挂载到该目录下,DVD和U盘会在media下被识别
/bin 常用的指令都在改目录下,cp拷贝,cat浏览,date设置时间
/etc 存放我们的配置文件的,所有的系统管理所需要的配置文件和子目录
/home java目录,当我们创建一个普通用户的时候,就会在改目录下产生对应的文件,例如,当使用 useradd tom,创建一个tom 的用户时,便会在home目录下,创建一个tom的文件夹,userdel -r tom,便会删除用户tom,和对应的文件夹.
/lib 动态库,系统开机几乎所需要的最基本的动态连接库
/mnt 挂载的文件夹.,是系统提供的可以供用户临时挂载别的文件系统的,我们可以将外部的存储挂载到/mnt/上,然后进入该目录查看里面的内容
/opt 我们要给主机额外安装的软件都在这,例如VMtools
/proc 内核的东西都在这,一般不要轻易的去动
/root 存放ront用户的文件
/sbin 一般是super即茶几用户和一些权限比较高的用户都在这
/selinux 关于安全加强的,类似于Windows下的360,如果被攻击,会出发该目录,全称是security-enhanced linux
(1)
/sys 系统
(2)
/proc该目录是一个虚拟的目录,它是系统内存的映射,该问该目录用来获取系统信息2
(3)
/srv 即service的缩写,用来存放服务启动之后需要提取的数据,
1,2,3都是和系统相关的,一般都是高手才会动
/tmp 文件夹,用来存放临时文件的
/user 用户要安装的文件和应用程序,这是一个给常重要的目录
/var 变量,日志等都在这
/lost+found这个目录一般是空的,当非法关机之后,这个目录下就会有文件
/boot 很重要,包含了Linux启动时使用的一些核心文件,包括一些连接文件和镜像文件.
Linux实操篇 远程登录到Linux的服务器
在实际开发过程中,开发人员根本就接触不到Linux服务器,公司和服务器根本不在一个地方,所以我们需要远程登录到Linux服务器,现在用的最火的一款远程登录工具就是XShell,如果我们需要远程上传和下载文件,我们还需要XFtp.如图:
在安装之前,我们需要让linux服务器开启一个名为SSHD的服务,它会对22号端口进行监听,默认情况下,该端口是开启的状态,我们还是查看一下,使用
setup
指令,然后进入
系统服务****,查看sshd服务
,如果标注为*,就说明该服务已经开启.注意:端口开的越多,安全性能就会越弱.
vi和vim编辑器
所有的Linux都会内置vi文本编辑器,而vim是具备程序编程的能力,可以看做是vid的升级版,它能够主动的根据字体的颜色,来辨别语法的正确性,方便程序设计,代码补充,被广泛使用.
vi和vim的三种模式:
-
正常模式
( 默认的),当我们以vi或者vim打开一个文档就会直接进入到该模式下,可以
使用上下左右来控制光标
,可以
使用删除字符,或者是删除整行来编辑文本
,
也可以使用赋值粘贴来处理文件数据
-
插入模式/编辑模式
在正常模式下,输入
i ,I ,o ,O,a ,A, r ,R
等任意一个字母就会进入编辑模式,一般来说按 i 即可 -
命令行模式
在该模式下,我们可以提供相关的指令来完成读取,存盘,替换,离开,显示行号,查找等动作.
当我们在插入模式下完成编辑时,我们应该如何进项保存呢?
首先,需要进入到命令行模式下**,即ESC**,回到一般模式**,然后”:“或者是”/”
进入命令行模式
,执行wq(保存并且退出),q(退出),q!(退出不保存,强制退出)**如果对文件进行了修改,但是却没有保存,那么只能使用的是q!.如图:
vi快捷键联系:
用户管理
在Linux中,用户都是属于用户组的,一个用户至少要属于一个组,用户家目录:在/home/下会有创建的各个用户的家目录,当用户登录时,会自动进入到自己的家目录.
-
添加用户:
useradd [可选项] 用户名
-
useradd -d 指定目录 新用户名
给创建的用户指定家目录
例如:useradd xm 当执行完成这条指令时,如果我们没有为要创建的用户指定组,那么系统会默认创建一个和用户名同名的组,然后把用户放到其目录中.
cd:change directory.切换目录.
mkdir 新目名称
创建一个目录
passwd
用户名:修改密码
pwd
:查看当前所在的目录
logout
:退出当前用户
clear
:清屏
注意:只有root用户才能修改普通用户的密码的权限.在实际的工作环境中,密码的保密程度一定要高要够复杂,并且使用passwd修改密码时,页面是没有显示的. -
删除用户:
userdel 用户名
,会删除用户,但会保留用户的家目录 -
userdel 用户名
,删除用户和用户的家目录,但是一般来说,我们只删除用户,但是会保留其对应的家目录,因为家目录下包含了该用户产生的文档和源代码.
查询用户信息的指令
id 用户名
:查询用户信息,用户如果不存在,返回无此用户.
切换用户
如果当前用户的权限不够的话, 可以通过
su – 对应的用户名
例如:su – xh 即可切换到用户xh
注意:权限高的用户切换到权限低的用户,是不需要输入密码的,但是反之则需要,当需要切换到原来的用户时,使用exit指令
who am i或者whoami
:查看当前用户是谁
用户组的管理
用户组:类似于角色,系统可以对有共性的多个用户进行统一的管理.
groupadd 组名称
:用来创建 一个组.
groupdel:组名称
,删除指定的组.
useradd -g 组名称 用户名
:创建用户,并且添加到指定的组.(该指令的前提是你的组必须先创建出来,然后会在/home/自动创建同名的家目录)
usermod -g 组名称 用户名
:为用户修改组.eg:usermod -g shaolin zwj,表示的是把用户zwj归属到少林这个组内.
用户和组的相关文件
/etc/passwd
:用户的配置文件(用户信息),每一行的含义:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell.
/etc/group/
:组配置文件(组信息),每一行的含义:
组名:口令:组标识号:组内用户列表:
/etc/hadow/
:口令的配置文件(密码个登录的相关信心,但是是加密的),每一行的含义:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间,不活动时间:失效时间:标志.
总结:当我们增加,删除,修改用户或者组的时候,都会导致以上三个文件的变化.
实用指令
关于Linux系统的运行级别,有一下其中级别:
0:关机
1:单用户(找回丢失密码)
2:多用户状态,没有网络服务
3:多用户,有网络服务
4:未使用,保留状态
5:图形界面
6:重启
其中,常用的运行级别是3和5,我们可以修改默认的运行级别,通过文件
/etc/inittab/进行修改,系统的默认的级别是5
init 级别数字
,修改默认的运行级别,例如:init 3,就会切换到多用户游网络服务的级别.例如:init 0,就是关机了.
面试题:如何找回丢失的root密码
加入我们不小心忘记了root用户的密码,那么我们应该如何找回呢?
思路:首先我们应该先进入单用户模式,因为单用户模式是不需要密码的,然后修改root的密码即可.
步骤:开机然后在引导页面时输入enter键–>看到一个页面输入 e –>在新页面中选中第二行(编辑内核keer),然后输入e,并且在该行的末尾输入1,再次输入回车键–>输入b,就会进入到单用户模式.在该模式下,我们可以通过passwd root指令来对root的密码进行修改,保存之后重启.
总结:如果想通过上面这种方法来找回到root的密码,很多人会认为这样做是不安全,任何人都可以进入到我们的单用户模式,其实不然,
这种方法的前提就是,不能通过远程登录的方式进入到单用户模式,必须在Linux系统所在的电脑上进行操作.
,这样,保密性就会大大增强.
如果,我们的默认的运行级别被别人恶作剧的修改成了0或者其他,纳闷我们应该怎么办呢?和之前一样,首先进入到单用户模式,然后对/etc/inittab文件通过vim打开之后,修改其中的默认级别
帮助指令
当我们对指令的用法不熟悉时,我们可以使用Linux提供的帮助指令来查看.
man 命令或者配置文件
:获取帮助信息
help 命令
:获取shell内置命令的帮助信息
文件目录类指令
pwd
显示当前工作目录的绝对路径
ls [选项] [目录或者是文件]
:用来显示当前目录下的文件的和目录的,例如:
ls -a
:显示当前目录下的所有的文件和目录,包含隐藏的.
ls -l
:以列表的形式进行显示,
mkdir
:主要功能是用来创建目录.
mkdir [选项] 要创建的目录名称
:(全称:make directory)创建目录.mkdir dog,在当前目录下创建dog文件夹
mkdir -p 多级目录
:创建多级目录.例如:mkdir -p /home/animal/tiger,
默认情况下:mkdir只能单级创建目录,所以我们如果想多级创建,需要加参数-p
rmdir [参数] 要删除的目录名称
:删除指定目录,但是,rmdir不能删除非空的目录,如果我们想删除非空目录,可以通过,
rm -r 要删除的文件或目录
:递归删除整个文件夹
rm -f 要删除的文件或目录
:强制删除不提示
cd [参数]
:change directory,切换到指定目录,常用的参数就是绝对路径和相对路径
绝对路径
:就是相对于根目录进行定位.
相对路径
:就是相对于当前工作的目录进行定位.例如:我们现在在/root目录,我们想进入到/home,可以这样完成:
/home:绝对路径的方式
…/home:相对路径的方式
cd ~ :或者 cd
: 回到当前用户的家目录
cd …
回到当前目录的上一级目录.
touch 文件名称
:创建一个空文件夹
cp [选项] source dest
:source指的是你要拷贝的文件夹,dest是目标文件夹,
\cp [选项] source dest
:强制覆盖且不要提示.
cp -r source dest :递归拷贝整个文件夹到dest下.例如:
cp aa.txt bb/,把aa.txt拷贝到bb 文件夹下.
cp -r test/ bb/把test整个文件夹拷贝到bbw文件夹下.
总结:一定要把Linux的目录结构印在脑海中,指令不难记,关键是你要知道你目前所在的目录,和你要去的目标目录应该如何正确的写出来.
mv oldNameFile newNameFile
:重命名文件(如果我们想重命名文件,西安进入到该文件当前所在的目录,然后在使用该指令)
例如: mv dog.txt pig.txt.表示的是给dog.txt文件进行重命名
mv /temp/moveFile /targetFolder
:移动文件
例如:mv /home/pig.txt /root,相当于把pig.txt 剪切到/root目录下.
cat [选项] 要查看的文件
:常用的选项是-n,用来显示行号,注意:cat只能用来浏览文件,而不具有修改的权限,为了浏览的方便,我们一般会带上管道命令
| more
,表示分页来进行显示.使用
空格键
进行翻页
例如:cat -n /etc/profile:查看/etc/profile,并且显示行号.
more
:more指令时基于vi编辑器的一个文本过滤器,它会以全屏的方式按页来显示文本文件的内容,空格键是按页看,enter是按行看,Ctrl+b回到上一页
ctrl+f下一页
less指令
:less指令的功能比more的要强大的多,支持各种显示器,终端,less在显示文件内容的时候,并不是一次性将整个文件加载完成之后,猜进行显示而是根据现实的需要进行加载内容.对大型文件的显示效率比较高,一般的日志等文件我们推荐使用less.
pageup
,向上翻一页,
pagedown
向下翻一页,
空格键
,向下翻一页
/子串
,向下搜索子串,再次输入n,表示向下查找,N向上查找
?子串
:向上搜索子串,再次输入n,表示向上查找,N向下查找
q
:退出less程序
输出重定向>,追加指令>>
,基本语法如下:
如果写的文件名对应的文件不存在,那么会先创建对应的文件,在进行内容的处理.
ls -l > 文件名称
:列表的内容覆盖写入到文件中.
ls -al >>文件名称
:列表的内容追加到文件的末尾.
cat 文件1 > 文件2
:将文件1的内容覆盖到文件2
echo “内容” > 文件
:用内容覆盖文件.
echo “内容” >> 文件
:把内容追加到文件的末尾.
cal
:显示当前的系统日历.例如:你需要什么内容就可以直接进行写入,
ls -l >>文件名称
,表示的是将文件列表写入到文件,
cal >> 文件名称
:表示的是将当前的系统的日历写入到文件.
echo,head 和tail指令
echo [选项] 输出内容
:输出指定内容到控制台,多用于输出环境变量.例如:
echo $PATH
.输出当前系统的环境变量到控制台.
也可以输出一些简单的文本例如:echo “helloworld”
head :用来显示文件的开头的部分内容,默认是显示文件的前10行.
head -n 5 文件
:显示文件的头5行.
例如:head -n 5 /etc/profile .显示profile的前5行
tail:是用来显示文件尾部的内容,默认显示的是后10行用法如下
:
tail 文件
:查看文件后10行的内容
tail -n 5
文件:查看文件的后5行内容.
tail -f
文件:实时追踪该文档的所有更新
(很有用)
ln指令,也称为是软连接,符号链接.类似于Windows中的快捷方式,主要是存放了链接其他文件的路径.语法如下
:
ln -s 原文件名,或者目录名 软链接名
:给原文件创建一个软链接.例如:我可以在home目录下给root目录创建一个软链接ln -s /root/ myroot,
我们打开软链接其实看到的还是原目录中的内容但是如果我们使用pwd进行查看那么我们发现显示的却依然在软链接的目录下.
rm -rf 软链接
:删除软链接,注意:软链接不要以/结束,否则会报设备或资源忙.
history:查看已经执行过的命令,也可以执行理事命令.语法如下:
history 5
:显示最近执行过的5项命令
!5
:执行历史编号为5的指令.
时间日期类的指令
date:显示当前日期
date + %Y:显示当前是哪一年
date +%m:显示当前是哪一月
date+%d:显示当前是哪一天
date “+%Y+%m+%d+%H+%M+%S”:显示年月日时分秒
date -s 时间字符串:设置系统时间.
find指令
find指令将从指定目录向下递归遍历各个子目录,将满足条件的文件或者目录显示在终端,语法如下:
find [搜索范围] [选项]
:根据选项进行文件或者是目录的查询
-name
:按照指定的文件名称进行查找,例如:find /home/ -name info.txt表示的是查询home目录下的info.txt文件.
-user
:查找属于指定用户的所有文件.例如:find /home/ -user root表示的就是查询root用户在home下的所有的文件.
-size
: 按照指定文件的大小查找(+n是大于n,-n是小于n n表示等于n),例如:find / -size +20M,表示的查询根目录下所有大于20M的文件.
注意:B,M一定写成大写,小写的是无效的.k一定要写成小写的,大写的是无效的.
我们在输入文件名称的时候如果文件的名称过长,我们可以输入一部分,然后按tab键进行匹配
在开发过程中,如果我们根据文件的大小进行查找,例如:find / -size -20M,这个命令的搜索得到的结果会很多,那么系统会一直进行查找,那么我们如何终止查找的过程呢,
输入ctrl+c,即可退出
*
find查找还支持通配符,比如:我们要获取根目录下所有的.txt文件,我们可以这样:find / -name
.txt
**
locate指令可以快速的定位文件路径,locate利用事先建立的系统中的所有的文件名和路径的locate数据库实现快读定位给定的文件,locate指令无需遍历整个数据库系统,查询速度较快,但是要求就是为了保证查询的准确度,管理员必须定期更新locate时刻.语法如下:
locate 文件名:搜索指定文件,例如:updatedb之后,locate pig.txt就可以对我们的目标文件路径进行查询
注意:由于locate指令是基于数据库进行的查询,所以第一次使用之前我们必须使用updatedb指令,来完成对locate数据库的创建.
grep指令和管道符号|
grep指令:过滤查找,多用于在文件的内部对某个关键字进行查找.管 道符号”|”:把前一个命令的处理结果输出传递给后面的命令去处理.语法如下:
grep [选项] 查找内容 原文件:在某一个文件中查找某个关键字
,例如:
cat info.txt | grep yes
查找info.txt文件中的yes.
cat info.txt | grep -n yes
,查找info.txt文件中的yes.并且会把yes所在的行号给显示.
cat info.txt | grep -ni yes
,查找info.txt文件中的yes.并且会把yes所在的行号给显示.并且yes不区分大小写全部显示.
-n匹配行及行号,-i忽略字母大小写.
压缩和解压缩指令
gzip 文件名
用于压缩文件的,只能将文件压缩成gz格式的,
gunzip 文件.gz
用于解压的.注意:这两条指令执行完成之后,原来的文件不会被保留,会只留下压缩文件或者是解压缩之后生成的文件.
zip [选项] XXX.zip 将要被压缩的文件或者是目录
:将文件压缩成xxx.zip,该指令非常有用,多用于在项目发布时.例如:将/home/目录压缩成mypackage.zip,zip -r mypackage.zip /home/常用选项如下:
-r:递归压缩整个目录
,
unzip [选项] xxx.zip
:对某个文件进行解压.例如:将mypackage.zip解压到/opt/tmp/目录下:unzip -d /opt/tmp/ mypackage.zip常用选项如下:
-d<目录a>:指定解压过后的文件存放在目录a中.
tar指令,打包指令,最后打包的文件的格式是.tar.gz,基本语法如下:
tar [选项] XXXtar.gz
要打包的文件:打包目录,打包后的文件格式是.tar.gz.该指令既可以解压,也可以压缩,主要是通过携带不同的参数,
tar -zcvf XXX.tar.gz 文件名或者是目录
:对文件或者是目录进行整体打包压缩.
tar -zxvf XXX.tar.gz
:解压文件夹或者是目录,
tar -zxvf XXX.tar.gz -C 目录A
:把压缩文件解压到A目录下去.前提是目录A解压前必须是存在的,不然会报错的.常用的选项,
-c:产生.tar打包文件.
-v:显示详细信息
-f:指定压缩后的文件名
-z:打包同时压缩
-x:解包.tar文件.
例如
:我们把home/m目录下的a.txt,b.txt压缩成一个文件:tar -zcvf a1.tar.gz a.txt b.txt.
组管理和权限管理
改变文件的所在组和所有者
在Linux中每个用户都必须属于一个组,不能独立于组外,在Linux中每个文件都有所有者,所在组,其他组的概念.所有者:一般谁创建了文件,谁就自然的成为了这个文件的所有者.一般来说,文件的所在组,就是文件的所有者所在的组.
ls -ahl:查看文件的所有者,
**chown 用户名 文件名:修改文件的所有者.(change owner)**例如:在root权限下:chown tom pig,txt,然后我们可以通过 ls -ahl 来查看出,pig.txt文件的所有者是tom,但是所在组是root.
**chgrp 组名 文件名:(change group)**修改文件所的所在组.
groupadd 组名称
:创建一个组.
useradd -g 组名称 用户名
:创建一个用户到指定的组,前提是这个组已经存在.
修改用户的所在组
在添加用户的过程中 ,可以指定将该用户添加到具体的哪个组中,同样的,root用户是可以修改某个用户的所在组.
id 用户名
:可以查看用户所在的组
usermod -g 组名 用户名
:改变用户的所在组
usermod -d 目录名 用户名
:改变用户登录的初始目录
权限的基本介绍
c:字符设备,(鼠标,键盘等),
l:链接,相当于windows 的快捷方式
-:普通的文本文件
d:表示的是目录
b:块文件,硬盘等.目录的大小统一显示为4096.
rwx权限详解
rwx作用到文件
r:read,表示的是可读,查看
w:write代表可写,可以修改,但是不代表可以删除该文件,删除一个文件的前提就是对该文件所在的目录具有写权限,才能删除该文件.
x:execute代表可以被执行的
rwx作用到目录
r:read,代表的是可读,ls查看目录的内容.
w:write代表的是写,表示的是可以在目录内进行创建+删除+重命名目录
x:代表的是可以被执行的,可以进入该目录.
rwx还可以使用数字来表示,r=4,w=2,x=1;因此rwx = 4+2+1 =7;
修改权限-chmod
通过chmod指令,我们可以修改文件或者目录的权限.
第一种方式:使用+ – =来变更权限.
u:所有者,g:所在组,o:其他人,a:所有用户(u,g,o的总和)
chmod u=rwx,g=rx,o=x 文件/目录名
,更改权限:文件的所有者为rwx,所在组的其他用户的权限为rx,其他人的权限为x
chmod o+w 文件/目录名
其他人的权限都增加w权限
chmod a-x 文件/目录名
所有人的权限都减少x权限.
注意:当有多个权限一起进行修改时,必须要用逗号分隔开,最后一个和文件名称连接的不用分隔.
第二种方式:使用数字来代替rwx:4,2,1.例如:
chmod u=rwx,g=rw,o=r 文件/目录名相当于是:chmod 761 文件/目录名
,这个默认的顺序一定要记住,u(所有者),g(所在组的其他用户),o(其他组的其他的用户)
修改文件的所有者
chown newowner file
:改变文件的所有者
chown newowner:newgroup file
:改变文件的所有者,并且改变所有者的所在组.
-R被用来递归的改变整个文件夹下的所有的子文件的所有者
例如:
chown -R newowner 目录名称a
:把a目录和其所有的子目录(包含子目录的所有文件)的所有者都修改成了newowner.
chgrp -R newgroup 目录名称B
:把B目录和其子目录以及包含的文件的所在组都修改成了newgroup.
usermod -g 组名称 用户名
:修改指定用户的所在组
练习题:
定时任务调度
crond任务调度,
crontab进行定时任务的设置,
任务调度:是指系统在某个时间段内执行的特定指令或程序.
任务调度分类:1:系统工作:有些重要的工作,必须周而复始的执行,如病毒扫描等.2 个别用户工作:个别用户可能希望执行某些程序.比如对mysql数据库的备份.语法如下:
croutab [选项]
常用选项:
-e:编辑crontab任务
-l:查询crontab任务
-r:删除当前用户的所有的crontab任务.终止任务
service cront restart重启任务调度.
注
意:如果是简单的任务,纳闷不需要编写脚本,直接在crontab中加入任务即可,对于比较复杂的脚本,需要编写shell脚本.
快速入门案例:
把/etc/目录下的内容追加到/tmp/to.txt中,
/1 * * * * ls -l /etc/ >> /tmp/to.txt
第一个
:一个小时当中的第几分钟 取值0-59
第二个*:一天当中的第几个小时 取值0-23
第三个*:一个月当中的第几天 取值1-31
第四个*:一年当中的第几个月1 -12
第五个*:一周当中的星期几取值0-7(0和7都表示的是周日)
如果我们的任务是比较复杂的任务,那么我们需要通过shell脚本来创建定时任务,但是我们一定要给编写的脚本可执行权限,否则是无法执行的.
磁盘分区和挂载
分区的基本知识
1 mbr分区:
(1)最多只能支持4个主分区
(2)系统只能安装在主分区
(3)拓展分区要占一个主分区
(4)MBR最大支持2TB,但是拥有最好的兼容性
2 gtp分区:
(1)支持无限多个主分区,但是操作系统可能有所限制(Windows下最多128个分区)
(2)最大支持18EB的大容量(1EB=1024PB,1PB = 1024TB)
(3)Win7 64位之后支持gtp分区
Linux分区原理介绍
Linux无论有几个分区,分给哪一个目录使用,它归根结底就只有一个目录,一个独立且唯一的文件结构,Linux的每一个分区都是用来组成整个文件系统的一部分,Linux采用一种叫做”载入”的处理方法,它的整个文件系统包含了整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的分区将使它的存储空间,在一个目录下获得.
lsblk -f
查看当前的系统分区.(老是不离开)
lsblk
:可以查看分区的大小
挂载的经典案例
如何增加一块硬盘:
1:虚拟机添加硬盘
2:分区:fdisk /dev/db
3:格式化 mkfs -t ext4 /dev/sdb1,其中ext4是分区类型.
4:挂载:把一个分区和一个目录联系起来
mount 设备名称 挂载目录
,例如:mount /dev/sdb1 /home/newdisk
umount 设备名称或挂载目录
例如:mount /dev/sdb1
具体步骤,看笔记,这种方式挂载有一个缺点,就是因为它是临时挂载,所以当你重启系统的时候,硬盘和文件之间依然没有挂载的关系,所以需要第五步.
5:设置可以自动挂载
(永久挂载,当机器重启之后,依然可以挂载到相应的目录,/etc/fstab,这个文件就是分区和挂载点的记录.我们通过对这个文件的修改,来完成永久挂载的设置,添加完成后,在命令行下,执行,mount -a即可生效,那么系统在启动的时候,就会自动挂载了)
磁盘情况查询
df -h
:查询磁盘的使用情况.
du -h /目录:查询指定目录的磁盘占用情况,默认是当前目录,
-s:指定目录大小汇总
-h:带计量单位
-a:包含文件
-c:列出明细的同时,增加汇总值.
–max-depth=1:子目录的查询深度为1
例如:查/opt目录下,并且子目录深度为1 du -ach –max-depth=1 /opt.
实用指令
统计/home文件夹下文件的个数
ls -l /home | grep “^-” | wc -l
(“^-“以-打头的代表的是文件,wc表示的是总和)
统计/home文件夹下目录的个数
ls -l /home | grep “^d” | wc -l
统计/home文件夹下文件的个数,包含子目录下的
ls -lR /home | grep “^-” | wc -l(R表示的是递归的统计子文件夹的)
统计文件夹下目录的个数,包含子文件夹的
ls -lR /home | grep “^d”| wc -l
以树状显示目录结构
(如果没有tree指令,我们可以使用yum install tree 进行安装)
直接使用tree,就会把当前目录的结构以树状的形式展现出来.yum install 指令名称,可以来实现一个指令的安装.
Linux的网络配置
学习背景:我们在图形界面中连接网络之后,虽然网络是通的,但是这个系统的ip是动态的,并不是一个固定的,有可能你重启一次系统都会造成ip的改变,并不能够满足我们开发的需求.
Linux网络配置的原理图(含虚拟机)
ping 网址:可以用来测试网络是否是通的.例如:ping
www.baidu.com
,可以使用ctrl + c进行退出.目前我们的网络采用的是NAT(网络地址转换)模式
我们的Linux系统是如何和外界进行通讯的呢?
首先,我们的Linux是安装到Windows系统上的,但是,现在我们的Linux系统的ip是动态的,每次重启系统可能就会生成一个随机的ip,这在实际的开发过程中是不能满足我们的需求的,window系统是有两个网卡的,一个是虚拟网卡,如上图,
虚拟网卡vmnet8
的ip和Linux的ip是在同一个网关下的,他们二者是可以直接进行通讯的,构成了一个内部的网络,然后通过Windows系统的无线网卡或者是真实网卡,和局域网进行通讯,然后通过网关连接到外网.这个就是为什么我们能够在Linux系统中使用ping
www.baidu.com
能够成功的原因.
查看虚拟网络编辑器
首先 ,我们VMware中的
编辑
,然后点击
虚拟网络编辑器
,会弹出下面的图:图中的红框我们修改ip和网关,我们在此处修改的就是
虚拟网卡
的ip
查看网关
为了保证我们的Linux能够和外界通信,我们需要和虚拟网卡的网关保持一致,如何查看虚拟网卡的网关呢?
然后就可以查看并修改网关.
Linux的网络环境的配置
**第一种:**Linux启动之后,会自动获取ip,缺点就是,可能每次获取的ip都是不同的.
把自动连接给勾上,然后应用即可,这样之后,我们每次启动系统的时候,都会自动回去ip然后连接网络.
第二种
:指定固定的ip(推荐使用),方法:
直接通过修改配置文件来制定ip,并且可以连接到外网,编辑 vi /etc/sysconfig/network-scripts/ifcfg-eth0
,准确的来说是对ech0网卡的配置.如果有多个网卡,对应多个文件
每个人的电脑打开之后显示的可能不太一样,但是图中的红色框中的关键部分一定要进行相应的修改.
网关要和我们Windows系统的vmnet8虚拟网卡保持一致,这样我们才可以进行和外界通信.
注意:修改保存之后,一定要进行重启,如果不会重启的可以直接重启机器,但是那样会比较的笨重,
service network restart
,可以重启网络服务.这样我们的ip就是我们在文件中设置的固定的ip了.
进程管理
进程的基本介绍
在Linux中,每个执行的程序(代码)都称为一个进程,每个进程都分配一个id号,每一个进程都会对应一个父进程,一个父进程可以复制多个子进程.例如,www服务器,每个进程都可能以两种方式存在的,前台和后台,所谓的前台进程,就是目前用户可以在屏幕上进行操作的,后台进程则是实际在操作,但由于屏幕无法看到的进程,通常使用后台方式执行.一般系统的服务都是以后台的方式存在,而且都会驻在系统中,知道关机才会结束.
ps命令用来查看目前系统中有哪些正在执行,以及它们的执行状况,可以不加任何参数,
ps -a:显示当前终端所有的进程信息.
ps -u:以用户的形式显示进程信息
ps -x:显示后台进程的运行参数
一般为了方便用户的查看,我们都会使用
ps -aux | more来查看用户的进程
指令还有很多,s代表休眠,run 代表正在运行.如果我们想具体的了解某一个进程,我们可以使用管道符和grep例如:我想查看sshd,ps -aux | grep sshd
ps -ef | more
可以用来查看父进程,以全格式显示所有进程,e,表示所有进程,f表示全格式.
ps – ef | grep XXX
:可以用来查看某个进程的父进程
终止进程
当一个进程执行一半需要停止时,或者是消耗了很大的系统资源时, 此时可以考虑停止该进程,可以使用kill命令完成.语法如下
kill [选项] 进程号
:通过进程号杀死进程.常用选项如下:
-9
:表示的是强迫进程立即停止
killall 进程名称:通过进程名称杀死进程,也支持通配符,这个一般是在
系统因负载过大而变的很慢
的时候使用.
踢出非法登录的用户
: 例如:当我们有一个非法用户登录之后的进程号是4010,(我们可以通过,
ps -ef |grep sshd
来查看用户登录的进程号),我们可以对他进行剔除,kill 4010即可.
终止远程登录服务sshd
(禁止任何用户远程登录,有可能是为了安全的考虑),在适当的时候再次重启sshd服务.
kill root用户的进程号
(此操作是没有任何的提示信息,该操作执行之后,任何用户都不能在进行远程登录了)
终止多个gedit编辑器
:killall gedit(该操作执行之后,所有的gedit编辑器的窗口都会被关闭.
它是通过进程的名称,然后把所有的归属于该进程名称的进程全部进行杀死
)
强制杀死一个终端
:kill -9 终端的进程号(为什么一定要带上-9?,因为啊,当系统认为一个进程非常重要的时候,会忽略掉kill指令,-9表示的是强制执行的意思,如果没有-9是没有反应的.)
ps -aux | grep bash
:查看当前所有的终端. 终端中只要显示是/bin/bash表示的都是一个终端.
pstree可以以树状的形式来进行进程的显示,可以更加直观的查看进程信息.
pstree
[选项] .常用选项:
-u:显示进程的所属用户
-p:显示进程的父进程id
服务(service)管理
服务(service)的本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如(mysql,sshd,防火墙等) ,因此又被称为守护进程,是Linux中非常重要的知识点.
service管理指令
service 服务名称 start | restart(重启) | stop(停止)| reload(重新加载) | status(状态码)
.
注意:在centos7.0之后,服务管理不再使用service 而是使用systemctl,指令不同,但是原理是相同的.但是请注意,通过这种方式对服务的更改只是暂时的,如果我们重启系统之后,系统支持的还是之前对服务的设置.这种方式会立即生效但是确实临时的.若果我们想对某个服务永久的修改,我们需要使用chkconfig
案例一:查看当前系统防火墙的状态,关闭防火墙和重启防火墙.
service iptables status
:查看防火墙的状态,如下图所示,在实际开发过程中,我们一般只开放22好端口.
service iptables stop
:关闭防火墙 ,立即生效
service iptables start /restart
:开启或者是重启防火墙
我们可以在windows系统中通过指令来监听Linux系统中的具体的某一个端口是否开启,或者是被占用,
telnet ip地址 端口号
:来进行测试端口到底能不能使用,例如: telnet 192.168.61.128 22,可以用来监听本机中sshd22号端口的使用情况
Linux到底有多少服务呢?有两种方式进行查看
setup –> 系统服务
:
带星号的都是自动启动的,如果不想某个服务自动启动,我们可以把光标移动到星号上,按空格键即可
ls -l /etc/init.d/
:显示的就是当前系统正在运行的服务
服务的运行级别(runlevel)
vi /etc/inittab/
可以用来修改系统的运行级别,运行级别共有7种,但是常用的是3和5.上面的笔记中有详细的介绍.
注意:每一个服务在不同级别的自启动情况下是不一样的.如果我们不小心把默认的用户级别设置成了0或者6,那么怎么办呢?进入单用户模式,修改成正常的隐形级别就行了.
chkconfig 可以给每个服务的各个运行级别设置自 启动/关闭,但是在设置完成之后,需要重启机器才能生效
chkconfig –list
:查看所有服务在各个运行级别的的收服自启动
chkconfig –list | grep XXX(服务名称)
:查看具体的某个服务在各个运行级别下的自启动情况.和它用法一直的还有:
chkconfig XXX(服务名称) –list
:
chkconfig –level 数字 服务名 on/off
:修改具体的某一个服务在哪一个运行级别中的自启动的情况.
chkconfig 服务名 om/off:在所有运行级别下关闭或启动服务
动态监控进程
top指令和ps指令非常的相似,都是用来显示正在执行的进程,最大的不同之处就在于top在执行一段时间之后可以更新正在执行的进程.
top [选项]
-d
:指定top命令每隔几秒更新,默认的是3秒.top -d 10,10秒刷新一次
-l
:使top不显示任何闲置或者是僵死进程0
-p
:通过指定进程的id号来监控某个进程的状态
如果我们继续输入
u
,那么我们可以输入
用户名
来监视指定用户.
如果输入top之后,然后输入
k
,然后继续输入pid号,就可以杀死进程.
**注意:**使用该指令主要是为了查看系统的负载,如果负载过高,需要提醒老版提升一下硬件的性能.
查看系统的网络情况netstat
netstat [],常用指令是
netstat -anp
常用选项
-an:
:按照一定的顺序排列输出
-p
:显示那个进程正在调用
rpm和yum
rpm包的管理
介绍:是一种用于互联网包的打包和下载,它包含在某些Linux系统的分发版本中,它生成具有.RPM拓展名的文件,RPM其实就是RetHat Package Manager(RetHat软件管理包的缩写),类似于Windows的setup.exe,由于使用的效果比较良好,所以在很多Linux的系统版本中都有使用,已经成为了行业的标杆了.
rpm -qa | grep XX :查询已经安装的RPM列表
RPM包的基本格式:例如:firefox-45.0.1-1.el6.centos.x86_64.rpm
名称:firefox
版本:45.0.1-1
适用的操作系统:
el6.centos.x86-64,表示的centos6.x的64位操作系统
如果是i686,或者是i386表示的32位的系统,noarch表示的是通用.
rpm -qa:查询所安装的所有的rpm软件包,不方便查看
rpm -qa | more:分页显示所有的已安装的软件包,方便查看
rpm -qa | grep xx:指定名称查询rpm安装包
rpm -qi 软件包名:查询软件包的信息
rpm -ql 软件包名:查询软件包中的文件
rmp -qf 文件的全路径名称:查询文件所属的软件包
rpm包的卸载和安装
rpm -e RPM包的名称
:通过包名删除指定的RPM包,但是如果其他的软件依赖我们即将卸载的软件包,卸载便会报错.
rpm -e nodeps rpm包名
:这样会强制删除,但是不推荐这样做,因为依赖该包的软件可能会无法运行.
rpm -ivh rpm包的全路径名称
:安装rpm包,i是install安装,v=verbose提示,h=hash进度条
YUM
yum是一个shell前端软件包管理器,基于RPM包管理器,能够从指定的服务器上自动下载RPM包并且安装,
可以自动处理依赖性关系
,并且一次性安装所有依赖的软件包.用法如下
yum list | grep xx软件列表
:查询yum服务器上是否有需要安装的软件.
yum install xx
: 下载并且安装指定的yum包
分析:原理,就是Linux系统中的yum管理器(在联网的状态下),可以自动的去公网上的yum服务器上下载我们需要的各种各样的rpm包然后进行安装.
基础篇到此结束,定制篇后续推出.