今天来学习非常经典的Linux,从最基础的部分学习,一下是这次的学习内容.让我们一起来学习经典,致敬经典.
Linux运维工程师:主要是负责服务器的规划,调优测试,日常监控,故障处理,护具备份只分析,服务器瘫痪了,要迅速的恢复.
Linux嵌入式工程师:能够熟练的掌握Linux下各种驱动程序的开发,还有就是在嵌入式系统中进行开发,
注意:我们在安装CentOS的时候,在配置网络连接时,会有三种方式:
和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服务器,现在用的最火的一款远程登录工具就是XShell,如果我们需要远程上传和下载文件,我们还需要XFtp.如图:
在安装之前,我们需要让linux服务器开启一个名为SSHD的服务,它会对22号端口进行监听,默认情况下,该端口是开启的状态,我们还是查看一下,使用setup指令,然后进入系统服务****,查看sshd服务,如果标注为*,就说明该服务已经开启.注意:端口开的越多,安全性能就会越弱.
所有的Linux都会内置vi文本编辑器,而vim是具备程序编程的能力,可以看做是vid的升级版,它能够主动的根据字体的颜色,来辨别语法的正确性,方便程序设计,代码补充,被广泛使用.
在Linux中,用户都是属于用户组的,一个用户至少要属于一个组,用户家目录:在/home/下会有创建的各个用户的家目录,当用户登录时,会自动进入到自己的家目录.
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的密码即可.
步骤:开机然后在引导页面时输入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 [搜索范围] [选项]:根据选项进行文件或者是目录的查询
-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 [选项] 查找内容 原文件:在某一个文件中查找某个关键字,例如:
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.
r:read,表示的是可读,查看
w:write代表可写,可以修改,但是不代表可以删除该文件,删除一个文件的前提就是对该文件所在的目录具有写权限,才能删除该文件.
x:execute代表可以被执行的
r:read,代表的是可读,ls查看目录的内容.
w:write代表的是写,表示的是可以在目录内进行创建+删除+重命名目录
x:代表的是可以被执行的,可以进入该目录.
rwx还可以使用数字来表示,r=4,w=2,x=1;因此rwx = 4+2+1 =7;
通过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采用一种叫做"载入"的处理方法,它的整个文件系统包含了整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的分区将使它的存储空间,在一个目录下获得.
lsblk -f查看当前的系统分区.(老是不离开)
lsblk:可以查看分区的大小
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 指令名称,可以来实现一个指令的安装.
学习背景:我们在图形界面中连接网络之后,虽然网络是通的,但是这个系统的ip是动态的,并不是一个固定的,有可能你重启一次系统都会造成ip的改变,并不能够满足我们开发的需求.
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启动之后,会自动获取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)的本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如(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/:显示的就是当前系统正在运行的服务
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 -anp
常用选项
-an::按照一定的顺序排列输出
-p:显示那个进程正在调用
介绍:是一种用于互联网包的打包和下载,它包含在某些Linux系统的分发版本中,它生成具有.RPM拓展名的文件,RPM其实就是RetHat Package Manager(RetHat软件管理包的缩写),类似于Windows的setup.exe,由于使用的效果比较良好,所以在很多Linux的系统版本中都有使用,已经成为了行业的标杆了.
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 -e RPM包的名称:通过包名删除指定的RPM包,但是如果其他的软件依赖我们即将卸载的软件包,卸载便会报错.
rpm -e nodeps rpm包名:这样会强制删除,但是不推荐这样做,因为依赖该包的软件可能会无法运行.
rpm -ivh rpm包的全路径名称:安装rpm包,i是install安装,v=verbose提示,h=hash进度条
yum是一个shell前端软件包管理器,基于RPM包管理器,能够从指定的服务器上自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次性安装所有依赖的软件包.用法如下
yum list | grep xx软件列表:查询yum服务器上是否有需要安装的软件.
yum install xx: 下载并且安装指定的yum包
分析:原理,就是Linux系统中的yum管理器(在联网的状态下),可以自动的去公网上的yum服务器上下载我们需要的各种各样的rpm包然后进行安装.
基础篇到此结束,定制篇后续推出.