欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

04、Linux高级部分

程序员文章站 2022-04-26 10:00:12
...

文章目录

参考资料

学习视频:尚硅谷Linux基础教程(大数据、JavaEE、Python开发通用版)

一、组管理与权限管理

1、组管理基本介绍

组的管理分为:所有者(即用户)、所在组以及其他组

1.1、查看目录文档

**查看文件的详细信息:**ls -alh

其中包含了所有者(即用户),以及所在组

04、Linux高级部分


1.2、文件所有者

回顾一下创建用户并指定组,设置用户密码:

​ ① 首先创建一个组 groupadd person

​ ② 添加用户并指定组 useradd -g person tom

​ ③ 给用户设置密码 passwd tom

那我们怎么刚开始时怎么来设置一个文件的所有者?

我们使用登录的用户创建文件时,其文件的所有者就是该用户,之后也可以使用命令来修改。

案例演示:

我们通过xh账户中创建一个文件来查看其所有者及组

04、Linux高级部分


1.3、修改文档所有者及所在组

这里我们新学习两个指令

​ 修改文档所有者: chown 用户名 文档

​ 修改文档所在组: chgrp 组名 文档

回顾命令修改用户所在组:usermod -g 用户组 用户

案例演示:

​ 案例1:我们来修改/home/xh目录1.txt的所有者为root chown root 1.txt

04、Linux高级部分

​ 案例2:我们依旧修改/home/xh目录1.txt的所在组为root chgrp root 1.txt

04、Linux高级部分

总结:我们在初始建立用户时就会默认家目录及用户组,之后我们可以在root权限下使用命令来更改对应用户组以及更改文件的所有者及所在组这些都是可以的。


1.4、其他组

除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组.


2、权限管理

2.1、权限基本介绍

输入指令:ls -alh

04、Linux高级部分

我们根据红框来进行详解:

04、Linux高级部分

注意:对应6这个位置,如果是文本文件的话,其中内容还应加上一个字符,也就是说如果内容为"hello",那么统计字符为6;如果是统计文件目录的话,应当把其目录下的两个隐藏文件也要算到里面,分别为.(当前目录)以及…(上级目录)


2.2、rwx权限详解

rwx 作用到文件

  1. [ r ]代表可读(read): 可以读取,查看

  2. [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.

  3. [ x ]代表可执行(execute):可以被执行

rwx 作用到目录

  1. [ r ]代表可读(read): 可以读取,ls 查看目录内容

  2. [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录

  3. [ x ]代表可执行(execute):可以进入该目录

总结:针对于一个文件,不是说所在组或其他组有了w权限就能够删除了(有w是可以修改),其上层目录必须也要有写的权限,这个文件才能够删除!!!

不同权限的使用介绍

​ 1)在可执行的权限下可以进入该目录,但是无法读取该目录中的内容;

​ 2)在可读可执行的权限下可以进入该目录,也可以读取该目录中的内容,但是不能在该目录中创建文件;

​ 3)在可写可执行的权限下,可以在目录中创建文件但是不能读取,在可读可写可执行的情况下可以在该目录中创建文件并且可以读取。


2.3、chmod指令(修改权限)

语法chmod 修改权限 文件目录 可以修改文件或者目录的权限

方式一:+、-、=变更权限

不同含义u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和),

就是下面9个字符分别指代u、g、o

04、Linux高级部分

修改方式如下:

​ 1) chmod u=rwx,g=rx,o=x 文件目录名

​ 2) chmod o+w 文件目录名

​ 3) chmod a-x 文件目录名

案例演示

​ 案例1:给 abc 文件的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。

chmod u=rwx,g=rx,o=rx abc

04、Linux高级部分

​ 案例2:给 abc文件的所有者除去执行的权限,增加组写的权限。

chmod u-x,g+w abc

04、Linux高级部分

​ 案例3:给 abc 文件的所有用户添加读的权限 chmod a+r abc # 使用a表示所有用户


方式二:使用数字变更权限

规则:r=4 w=2 x=1 那么:rwx=4+2+1=7,rw=6,rx=5,wx=3

我们只需要设置对应的数字即可代表对应权限,例如chmod u=rwx,g=rx,o=x 文件名 =》 chmod 751 文件名

案例演示

​ 案例1:将 /home/abc.txt 文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现

chmod 755 /home/abc.txt


2.4、chown指令(修改文件所有者)

语法介绍

chown [选项] newowner file 改变文件的所有者

chown [选项] newowner:newgroup file 改变文件的所有者和所有组

选项

​ -R 如果是目录,则使其下所有子文件或目录递归生效

案例演示

​ 案例1:请将 /home/abc .txt 文件的所有者修改成 xh chown xh /home/abc.txt

​ 案例2:请将 /home/kkk 目录下所有的文件和目录的所有者都修改成 xh chown -R xh /home/kkk

04、Linux高级部分

​ 案例3:将/home/kkk 目录下所有文件及目录的所有者、所有组为 xh、xh chown -R xh:xh /home/kkk

04、Linux高级部分


2.5、chgrp指令(修改文件所在组)

语法chgrp [选项] newgroup file 改变文件的所有组

选项:

​ -R:如果是目录,则使其下所有子文件或目录递归生效

案例演示

​ 案例1:请将 /home/abc .txt 文件的所在组修改成 bandit (土匪) chgrp bandit /home/abc.txt

​ 案例2:请将 /home/kkk 目录下所有的文件和目录的所在组都修改成 bandit(土匪)

chgrp -R bandit /home/kkk


综合案例

题目描述

组别:police,bandit

jack, jerry: 警察

xh, xq: 土匪

(1) 创建组

(2) 创建用户

(3) jack 创建一个文件,自己可以读写,本组人可以读,其它组没人任何权限

(4) jack 修改该文件,让其它组人可以读, 本组人可以读写

(5) xh 投靠 警察,看看是否可以读写jack创建的文件.

过程描述

(1) groupadd police groupadd bandit # 创建两个组

(2) useradd -g police jack useradd -g police jerry # 给jack、jerry指定police警察组

useradd -g bandit xh useradd -g bandit xq # 给xh、xq指定bandit土匪组

passwd jack passwd jerry passwd xh passwd xq # 设置密码

(3) 登陆到jack用户,pwd 查看当前目录,接着vim jack.txt,编辑文本信息

接着设置该文件的权限 chmod 640 jack.txt

04、Linux高级部分

(4) 根据要求来添加权限信息

04、Linux高级部分

(5) 首先我们使用root用户来修改xh的所属组 usermod -g police xh

04、Linux高级部分

接着我们使用xh用户登陆,来尝试进入到jack的目录,显示权限不够

04、Linux高级部分

我们去root用户下查看一下jack目录的权限信息,能够看到所在组没有权限:

04、Linux高级部分

我们回想一下:jack是police组的,我们之前也是将xh指定为police组,那么我们为了使组员能够进入到jack文件,并最终能够修改jack.txt,我们root用户下设置该文件所有组的权限为rx:chmod g=rx jack

04、Linux高级部分

小细节:设置完权限之后我们重新登录xh用户账号vim jack.txt

04、Linux高级部分

总结:① 我们在使用用户来进入到其他用户的家目录或其他目录,若没有设置权限,应到root用户下去进行修改操作对应权限,一定要小心注意,修改对应权限后,其他用户应该重新登录来访问。

② 每个的前面9个字符分别对应所有者权限、所在组权限(一般针对于同组其他人)、其他组(除了本组的其他组)


二、crond 任务调度

原理示意图

04、Linux高级部分

contrab命令来进行定时任务的设置

基本介绍

任务调度:是指系统在某个时间执行的特定的命令或程序。

任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等

2.个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份。

语法crontab [选项]

选项

​ -e:编辑crontab定时任务

​ -l:查询contab任务

​ -r:删除当前用户所有的crontab任务

service crond restart [重启任务调度]

编写调度任务的语法* * * * * 对应执行的任务命令

任务调度文件是在/etc/crontab文件中,我们进行查看一下:more /etc/crontab

04、Linux高级部分

5个占位符说明

项目 含义 范围
第一个’*’ 一小时当中的第几分钟 0-59
第二个’*’ 一天当中的第几小时 0-23
第三个’*’ 一个月当中的第几天 1-31
第四个’*’ 一年当中的第几月 1-12
第五个’*’ 一周当中的星期几 0-7(0和7代表星期日)

五个部分可以使用的特殊符号说明:

04、Linux高级部分

快速入门案例(配合命令)

定时任务案例介绍

04、Linux高级部分

实际案例

案例1:设置任务调度为:将/etc/目录下文件内容输入到/tmp/to.txt中,每分钟执行一次。

实现过程

​ 首先我们来编辑crontab定时任务: crontab -e

​ 接着编辑 */1 * * * * ls -l /etc/ >> /home/ok.txt,保存退出 (含义:每一分钟将/etc目录内容添加 到/home/ok.txt中),保存即开始执行任务

04、Linux高级部分

​ 我们等待1分钟,来查看一下/home/ok.txt文档,发现执行任务成功

04、Linux高级部分

案例2:查看当前任务调度以及删除当前的任务

crontab l # 查看当前crontab的定时任务 crontab -r # 删除当前的crontab任务


应用案例(配合脚本)

案例 1:每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中 (脚本)

​ ① 首先编写脚本/home/mytash1.sh: vim /home/mytash1.sh ,编辑命令 date >> /tmp/mydate

​ 检查该脚本文件是否可执行?若不是可执行,那么设置可执行权限:chmod 744 mytask1.sh

04、Linux高级部分

​ ② 编辑定时任务: crontab -e 编辑调度时间并指向脚本文件: */1 * * * * /home/mytash1.sh

​ ③ 保存即开始执行定时任务 ,我们并来查看一下是否成功执行

04、Linux高级部分

案例 2:每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal 文件中 (脚本)

我们编写脚本文件/home/mytash1.sh,添加两条命令,date >> /tmp/mycal cal >> /tmp/mycal,接着设置该脚本的执行权限,依旧来进行任务调度:crontab -e,编辑添加:*/1 * * * * /home/mytash1.sh

案例 3: 每天凌晨 2:00 将mysql 数据库 testdb,备份到文件中 (非脚本)

针对一条指令的话,直接使用任务调度,crontab -e ,编辑添加

0 2 * * * /user/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak,保存退出即可生效


三、Linux磁盘分区、挂载

分区基础知识

分区的方式

mbr 分区

  1. 最多支持四个主分区

  2. 系统只能安装在主分区

  3. 扩展分区要占一个主分区

  4. MBR 最大只支持 2TB,但拥有最好的兼容性

gtp 分区

  1. 支持无限多个主分区(但操作系统可能限制,比如 windows 下最多 128 个分区)
  2. 最大支持 18EB 的大容量(1EB=1024 PB,1PB=1024 TB )
  3. windows7 64 位以后支持 gtp

windows下磁盘分区

04、Linux高级部分

1、Linux分区

1.1、原理介绍

Linux分区原理介绍:

  1. Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一部分。

  2. Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录, 且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

原理分析图

04、Linux高级部分

1.2、硬盘说明

硬盘详细介绍:

  1. Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘

  2. 对于 IDE 硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指 IDE 硬盘了。“x”为盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),“~”代表分区, 前四个分区用数字 1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。例,hda3 表示为第一个IDE 硬盘上的第三个主分区或扩展分区,hdb2 表示为第二个IDE 硬盘上的第二个主分区或扩展分区。

3)对于 SCSI 硬盘则标识为“sdx~”,SCSI 硬盘是用“sd”来表示分区所在设备的类型的,其余则和 IDE 硬盘的表示方法一样。

在本地虚拟机上使用命令查看系统分区及挂载情况:lsblk -f

04、Linux高级部分

直接使用命令:lsblk,还可以查询到对应硬盘分区大小

04、Linux高级部分


2、如何添加一个硬盘(分区挂载)

详细步骤内容请点击右边链接: 增加硬盘(如何挂载)

简略总结命令

​ 1) 虚拟机添加硬盘

​ 2) 分区 fdisk /dev/sdb

​ 3) 格式化 mkfs -t ext4/dev/sdb1

​ 4) 挂载 先创建一个 /home/newdisk , 挂载 mount/dev/sdb1 /home/newdisk

​ 5) 设置可以自动挂载(永久挂载,当你重启系统,仍然可以挂载到 /home/newdisk) 。

vim /etc/fstab

/dev/sdb1 /home/newdisk ext4 defaults 0 0


3、磁盘情况查询

df(查询系统整体磁盘使用情况)

df指令介绍:查询系统整体磁盘使用情况

语法df [选项]

选项

​ -l:以列表形式展开

​ -h:进行换算单位展示

案例:查询系统磁盘使用情况

输入命令:df -lh

04、Linux高级部分


du(查询指定目录的磁盘占用情况)

du介绍:查询指定目录的磁盘占用情况,默认为当前目录

语法du [选项] /目录 一般选项联合使用:-ach --max-depth=1

​ -s:指定目录占用大小汇总

​ -h:带计量单位

​ -a:含文件

​ --max-depth=n:子目录深度

​ -c:列出明细的同时,增加汇总值

案例:查询 /opt 目录的磁盘占用情况,深度为 1 du -ach --max-depth=1 /opt

04、Linux高级部分


磁盘情况-工作实用指令

案例1:统计/home 文件夹下文件的个数

ls -l /home | grep "^-" | wc -l (/home后使用了管道符号,| grep "^-"使用正则来筛选开头为-表示为文件,| wc -l 测试统计文件的个数)

案例2:统计/home 文件夹下目录的个数

ls -l /home | grep "^d" | wc -l (要是统计目录的是,那么就筛选开头为d的即可,d表示目录)

案例3:统计/home 文件夹下文件的个数,包括子文件夹里的

ls -lR /home | grep "^-" | wc -l (注意这里是包含所有子文件夹的个数,那么在ls选项上添加R ,-R表示递归所有目录)

案例4:统计文件夹下目录的个数,包括子文件夹里的

ls -lR /home | grep "^d" | wc -l (和上面几乎一样,只是这里查询的是目录,所有更改为"^d")

案例5:以树状显示目录结构

​ 需要使用到 tree指令

​ 若出现以下情况,那就是没有安装tree,我们使用 yum -y install tree (这里-y是默认yes)

04、Linux高级部分

​ 安装完之后使用 tree

04、Linux高级部分


四、网络配置

Linux 网络配置原理图(含虚拟机)

前提描述:我们之前所有点击的system eth0,获取到的ip地址是动态的

04、Linux高级部分

虚拟机时如何实现上网的呢?

Linux使用:ifconfig ,windows输入命令:ipconfig

分别获取到其ip地址,windows的虚拟网卡ip地址为192.168.72.1,linux的ip地址为192.168.181.128

04、Linux高级部分

经过试验是能够相互ping通的,Linux系统接着通过主机的真实网卡代理出去经过网关来访问网络。

1、查看网络IP与网关

查看与修改网络IP

我们选择编辑—虚拟网络编辑器

04、Linux高级部分

我们点击更改设置,授予权限才能够进行修改等操作

04、Linux高级部分

我们选择NAT模式,接着就能够查看或修改ip地址了

04、Linux高级部分

查看网关

我们和上面一样打开编辑—虚拟网络编辑器,然后选定NAT模式,接着点击NAT设置即可看到对应网关信息

04、Linux高级部分


查看windows 环境的中VMnet8 网络配置

方式一:直接在cmd中输入命令ipconfig

方式二:打开网络共享中心查看

按照下面步骤即可打开查看vmnet8的对应信息

04、Linux高级部分


2、网络环境配置

第一种方法:自动获取

我们选择:系统—首选项—网络连接

04、Linux高级部分

接着我们选择对应网卡,编辑,勾选自动连接,点击应用即可

04、Linux高级部分

缺点说明:linux 启动后会自动获取 IP,缺点是每次自动获取的 ip 地址可能不一样。这个不适用于做服务器,因为我们的服务器的 ip 需要时固定的。


第二种方式:(指定固定ip,建议)

我们通过直接修改配置文件来指定ip即可

要求:将 ip 地址配置为静态的,ip 地址为 192.168.181.128

①终端输入命令:vim /etc/sysconfig/network-scripts/ifcfg-eth0

②编辑添加对应内容,保存退出

04、Linux高级部分

注意:需要提前看一下你自己的网关号,再设置对应的ip地址,否则会连接不上网络

③ 我们重启服务:service network restart

04、Linux高级部分

最后重启reboot,查看是否能够访问网络


ifcfg-eth0配置信息

04、Linux高级部分


五、进程管理

基本介绍:

  1. 在 LINUX 中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个 ID 号。

  2. 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如 www 服务器。

  3. 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。

  4. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。

说明:后台也称作为守护进程,我们使用的终端就是前台进程,系统服务都是以后台来进行运行的


1、ps指令(显示系统执行进程)

基本介绍

介绍:查看进行使用的指令是ps ,一般来说使用的参数是 ps -aux

语法ps [选项]

选项

​ -a:显示当前终端的所有进程信息

​ -u:以用户的格式显示进程信息

​ -x:显示后台进程运行的参数

​ -e:显示所有进程

​ -f:全格式

实际指令演示ps -aux | more

04、Linux高级部分

对应显示名称分别含义

标识名 含义
System V 展示风格
USER 用户名称
PID 进程号
%CPU 进程占用cpu的百分比
%MEN 进程占用物理内存的百分比
VSZ 进程占用的虚拟内存大小(单位:KB)
RSS 进程占用的物理内存大小(单位:KB)
TT 终端名称,缩写
STAT 进程状态,S:睡眠,s:表示该进程是会话的先导进程,N:表示进程拥有比普通优先级更低的优先级,R:正在运行,D:短期等待,Z:僵死进程,T:被跟踪或者被停止等等
STARTED 进程的启动时间
TIME CPU时间,即进程使用CPU的总时间
COMMAND 启动进程所用的命令与参数,如果过长会被截断显示

如何查看指定进程?

使用命令查看sshd的进程:ps -aux | grep sshd

04、Linux高级部分

如何查看进程的父进程?

全格式显示当前的所有进程,并查看进程的父进程

使用命令:ps -ef | more

04、Linux高级部分

如果想查看sshd的父进程呢?那么我们就要进行筛选,使用管道符:ps -ef | grep sshd

04、Linux高级部分

此时我们想问他们的父进程为0的到底是什么

去百度上查一下有这样的解释(仅供参考):Linux系统中不存在pid为0的进程;我们在写多进程程序时所看到的pid==0,是指父进程自己。 linux下的pid起始数为1 永远是init进程 编程的时候 pid=0 同一个进程组的进程

查询的参数描述

参数名称 含义
UID 用户ID
PID 进程ID
PPID 父进程ID
C CPU用来计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
STIME 进程启动的时间
TTY 完整的终端名称
TIME CPU时间
CMD 启动进程所用的命令和参数

2、kill、killall指令(终止进程)

介绍:若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用 kill 命令来完成此项任务。

语法kill [选项] 进程号 (通过进程号杀死进程)

killall 进程名称 (通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)

选项

​ -9:表示强迫进程立即停止

案例演示

案例1:踢掉某个非法登录用户

​ 使用一个用户来进行远程登录,我们通过sshd来查找到对应的进程,输入命令: ps -aux | grep sshd

04、Linux高级部分

​ 我们找到对应登录的进程id为3617,我们使用命令杀死它即可: kill 3617 ,此时我们的连接已断开

04、Linux高级部分

案例2:终止远程登录服务 sshd, 在适当时候再次重启 sshd 服务

场景描述:我们的服务器需要进行维护,那么我们不希望有人来进行连接,此时可以终止远程登录服务sshd

​ 首先我们输入命令 ps -aux | grep sshd,找到对应的进程id号为2360

04、Linux高级部分

​ 使用命令 kill 2360,杀死该进程,接下来我们再尝试使用XShell时无法连接

04、Linux高级部分

注意:当我们在杀死该进程前就已经登陆了root用户时,依旧会连接在那里,其他用户会自动断开

案例3:终止多个 gedit 编辑器

​ 场景描述:打开了多个gedit编辑器,想直接关闭所有 killall gedit

案例4:强制杀掉一个终端

​ 场景描述:我们打开两个终端,为了区分,我们相隔一分钟打开,杀死第一个打开的终端

​ 终端名称为bash,那么我们直接使用命令 ps -aux | grep bash

04、Linux高级部分

​ 对于终端我们使用普通的kill是无法删除的,我们需要使用 kill -9 3360来进行杀死终端进程

说明:我们也可以杀死当前自己使用的进程,只需要知道进程id号即可,这里的话为 kill -9 3706


3、pstree指令(查看进程树)

语法:pstree [选项] (可以更加直观的来看进程信息)

选项

​ -p:显示进程的 PID

​ -u:显示进程的所属用户

案例1:使用树状的形式来显示进程的PID pstree -p

04、Linux高级部分

案例2:使用树状的形式来显示进程的所有用户 pstree -u

04、Linux高级部分


4、服务

服务介绍及原理图

服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是 Linux 中非常重要的知识点。

原理图

04、Linux高级部分

service管理指令

在 CentOS7.0 后 不再使用 service ,而是 systemctl

语法service 服务名 [start | stop | restart | reload | status]

案例:查看当前防火墙的状况,关闭防火墙和重启防火墙

防火墙的服务名为:iptables,接着我们来查看一下:service iptables status

04、Linux高级部分

我们使用service iptables stop指令来关闭防火墙,接着使用service iptables start指令开启防火墙

04、Linux高级部分


windows测试telnet

上面我们查看防火墙的状态是打开的,其端口号是22,那么我们在windows上进行测试连接防火墙端口

输入命令:telnet 192.168.181.128 22,我们出现错误了。

04、Linux高级部分

解决方法:控制面板—程序—启动或关闭windows服务—勾选telnet

04、Linux高级部分

接着我们继续在cmd中输入命令:telnet 192.168.181.128 22

04、Linux高级部分


查看服务名(两种方式)

方式一:终端输入setup,选择系统服务,来进行查看

输入setup,选择系统服务,下面就是对应服务内容,我们使用空格键来进行选中取消

04、Linux高级部分

方式二:查看/etc/init.d/服务名称的内容

我们可以使用这个命令查看所有服务:ls -l /etc/init.d/

04、Linux高级部分

单独查看防火墙的服务:ls -l /etc/init.d/iptables

04、Linux高级部分


服务的运行级别

我们使用命令vim /etc/inittab,在末尾查看默认的运行级别

04、Linux高级部分

Linux 系统有 7 种运行级别(runlevel):常用的是级别 3 和 5

运行级别 级别描述
运行级别 0 系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
运行级别 1 单用户工作状态,root 权限,用于系统维护,禁止远程登陆
运行级别 2 多用户状态(没有 NFS),不支持网络
运行级别 3 完全的多用户状态(有 NFS),登陆后进入控制台命令行模式
运行级别 4 系统未使用,保留
运行级别 5 X11 控制台,登陆后进入图形 GUI 模式
运行级别 6 系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动

chkconfig指令(设置运行级别服务状态)

介绍:通过chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭

语法:1) 查看服务 chkconfig --list | grep 服务名

​ 2) 查看服务 chkconfig 服务名 --list

​ 3) 设置不同级别指定服务的状态 chkconfig --level n 服务名 on/off

开机流程介绍

04、Linux高级部分

案例1:查看所有服务 chkconfig --list

对应每个运行级别都有对应服务是否开启还是关闭的描述说明

04、Linux高级部分

案例2:查看防火墙服务 chkconfig iptables --list

04、Linux高级部分

案例3:设置sshd服务在运行级别为5的情况下不要自启动 chkconfig --level 5 sshd off

04、Linux高级部分

案例4:在所有级别下,关闭防火墙 chkconfig iptables off

04、Linux高级部分

案例5:在所有级别下,开启防火墙 chkconfig iptables on

04、Linux高级部分

注意:chkconfig 重新设置服务 service 服务名 restart后自启动或关闭,需要重启机器 reboot 才能生效.


5、动态监控进程

top指令(动态监控)

介绍:动态监控使用的是top,top 与 ps 命令很相似。它们都用来显示正在执行的进程。Top 与 ps 最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程。

语法top [选项]

选项

​ -d 秒数:指定top命令每隔几秒更新,默认是3秒在top命令的交互模式当中可以执行的命令

​ -i:使top不显示任何闲置或僵死进程

​ -p:通过指定监控进程ID来仅仅监控某个进程的状态

我们在进入到动态监控时,可以按下对应键来与其进行交互操作,如下

​ P:以CPU使用率排序,默认就是此项

​ M:以内存的使用率排序

​ N:以PID排序

​ k:杀死输入指定的id进程

​ q:退出top

输入top查看下其中的信息:

04、Linux高级部分

应用案例

案例 1.监视特定用户

​ 按下 top 命令,我们想要监控某个用户,那么输入交互命令u,再输入root即可查看

04、Linux高级部分

案例2:终止指定的进程

​ 同样在动态监控状态,按下 k,输入对应想要杀死进程的id号即可

案例3:指定系统状态更新的时间(每隔 10 秒自动更新, 默认是 3 秒)

​ 若是要设置系统状态更新的时间,那么我们需要在输入top命令时设置,为 top -d 10


netstat指令(查看系统网络情况)

用户查看网络服务,当我们向想要查看一下系统监控的时候用

语法netstat [选项]

选项

​ -an:按一定顺序排列输出

​ -p:显示哪个进程在调用

应用案例

案例1:查看系统所有的网络服务 netstat -anp

04、Linux高级部分

案例2:请查看服务名为 sshd 的服务的信息 netstat -anp | grep sshd

04、Linux高级部分

​ 支持ipv4与ipv6的远程机来连接


六、RPM与YUM

1、RPM

rom指令(基本介绍)

介绍:RPM是一种用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中。

它生成具有.RPM 扩展名的文件。RPM 是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 windows 的 setup.exe,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。

Linux 的分发版本都有采用(suse,redhat, centos 等等),可以算是公认的行业标准了。

语法:rpm [选项]

选项

​ -q 软件包名:查看软件包是否安装

​ -qa:已安装的rpm列表

​ -qi:查看软件包信息

​ -ql:查询软件包文件目录信息

​ -qf:查询文件所属的软件包名

应用案例

案例1:首先我们查看一下Linux是否安装了firefox rpm -qa | grep firefox

04、Linux高级部分

firefox:软件名 -45.0.1-1:版本号 el6.centos.x86_64:在适用于centos6.x的系统(如果是 i686、i386 表示 32 位系统,noarch 表示通用)

案例2:查看火狐软件是否安装 rpm -q firefox-45.0.1-1.el6.centos.x86_64

04、Linux高级部分

案例3:查看火狐包的详细信息 rpm -qi firefox

04、Linux高级部分

案例4:查询获取软件包的文件路径信息 rpm -ql firefox

04、Linux高级部分

案例5:查看文件所属的软件包 rpm -qf 文件路径

04、Linux高级部分


卸载与安装rpm包

卸载的语法rpm -e RPM包的名称 添加 -nodes参数:强制删除

安装的语法rpm -ivh RPM 包全路径名称

参数说明:i:install 安装

​ v:verbose 提示

​ h:hash(进度条)

卸载firefox的软件包

执行命令rpm -e firefox

04、Linux高级部分

需要注意的是:有些删除情况会出现错误信息,因为其他包依赖于你想要卸载的软件包,那么我们进行强制删除呢?可以添加参数 --nodeps (强制删除),不过不推荐这么做,因为这样的话依赖于已删除包的软件包会无法运行!!!

安装rpm包

首先我们得先有火狐的rpm包,那么到哪里去找呢? 那么我们需要挂载上对应的iso文件,如果没有挂载的按下面步骤进行挂载即可!

① 通过挂载光驱后,我们可以从对应目录中去找到rpm包

04、Linux高级部分

② 进入到挂载目录中的rpm包的管理目录,复制firefox的rpm到/opt目录下

挂载完之后我们可以看到桌面上有个光盘,说明挂载成功了

接着我们可以从/media/Centos_6.8_Final/Packages目录中来找到对应的火狐rpm安装包

04、Linux高级部分

我们将该rpm复制到/opt目录下:cp firefox-45.0.1-1.el6.centos.x86_64.rpm /opt/

04、Linux高级部分

③ 安装firefox的rpm包

在当前/opt目录下进行安装rpm包 rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm

安装完成就是下面的样子:我们的桌面上也出现了火狐的图标

04、Linux高级部分

那么我们怎么找到对应firefox安装的目录呢?使用命令 locate firefox | more ,找到安装目录在/etc下

04、Linux高级部分

我们去对应目录看一眼 ls -l | grep firefox ,确实是今天安装的firefox

04、Linux高级部分

安装成功!


2、YUM

基本介绍

Yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用 yum 的前提是可以联网。

yum的原理图

04、Linux高级部分

基本语法

① 查询 yum 服务器是否有需要安装的软件:yum list|grep 软件名称

② 安装指定的 yum 包:yum -y install 软件名称


应用案例

我们来尝试下载安装firefox

为了测试,我们先将火狐删除 rpm -e firefox

查看一下yum源上是否有火狐的安装包 yum list | grep firefox

04、Linux高级部分

接下来我们来进行安装firefox (说明一下,如果安装不了可以更换国内的yum源) yum -y install firefox

04、Linux高级部分

等待即可安装成功!


CentOS6.8配置阿里yum源

参考文章CentOS6.8配置阿里yum源

① 进入yum源存放目录,其中默认会带有官方的yum源 cd /etc/yum.repos.d/

② 我们删除官方的yum源,再更换上阿里的源,执行命令 rm -rf *

③ 使用wget工具来下载阿里的源到该目录 wget http://mirrors.aliyun.com/repo/Centos-6.repo

说明一下wget是Linux中的一个下载文件的工具,在Linux下开发的开放源代码的软件,后来被移植到包括Windows在内的各个平台上

④ 清空一下yum的缓存 yum clean all

⑤ 查看yum源的列表并自动下载一些相应的元数据存到本地 yum repolist

安装软件的话使用命令yum -y install 软件名称 查看yum源是否有软件yum list | grep 软件名称

删除软件rpm -e 软件名称


本章Linux命令汇总

组管理

​ 查看当前目录下完整信息:ls -alh

​ 修改文档或文件权限: chmod 修改权限 文件目录 # 两种方式变更权限

​ 修改文档或文件所有者: : chown 用户名 文档 chown -R 用户名 文件 chown 所有者:所有组 文档

​ 修改文档或文件所在组: chgrp 组名 文档 chgrp -R 组名 文档

crond任务调度:

crontab -e # 编辑crontab定时任务 crontab -l # 查看任务 crontab -r # 删除任务

五个占位符:* * * * * (分、时、天、月、周) 特殊符号:*,- */n (任何时刻,不连续,连续,每隔多久)

​ shell脚本以.sh为结尾,设置shell脚本需要开启执行权限 chmod 744 脚本文件 任务调度为: * * * * * /home/shell脚本

service crond restart # 重启任务调度

磁盘分区

lsblk -f # 更容易看清系统分区和挂载 lsblk # 能够查看到对应分区容量 (方便记忆:老师不离开)

增加一个硬盘

​ 1) 虚拟机添加硬盘

​ 2) 分区 fdisk /dev/sdb

​ 3) 格式化 mkfs -t ext4/dev/sdb1

​ 4) 挂载 先创建一个 /home/newdisk , 挂载 mount/dev/sdb1 /home/newdisk

​ 5) 设置可以自动挂载(永久挂载,当你重启系统,仍然可以挂载到 /home/newdisk) 。

​ vim /etc/fstab

​ /dev/sdb1 /home/newdisk ext4 defaults 0 0

查询系统磁盘使用情况df -lh

查询系统整体磁盘使用情况du -ach --max-depth=1 /opt

工作实用指令

​ 统计/home 文件夹下 文件的个数: ls -l /home | grep "^-" | wc -l

​ 统计/home 文件夹下 目录的个数: ls -l /home | grep "^d" | wc -l

​ 统计/home 文件夹下 文件的个数,包括子文件夹里的ls -lR /home | grep "^-" | wc -l

​ 统计文件夹下 目录的个数,包括子文件夹里的ls -lR /home | grep "^d" | wc -l

​ 以树状显示目录结构: 首先安装tree: yum -y install tree tree

网络配置

​ 查看ip地址:windows使用 ipconfig ,Linux使用 ifconfig

​ 修改网络配置文件: vim /etc/sysconfig/network-scripts/ifcfg-eth0

​ 重启服务: service network restart

进程管理

​ 查看进程信息: ps -aux | more

​ 查看指定进程: ps -aux | grep sshd

​ 查看父进程: ps -ef | more ps -ef | grep sshd

​ 指定service状态: service 服务名 [start | stop | restart | reload | status]

​ 重启服务 如sshd : service sshd restart

​ 查看所有服务: ls -l /etc/init.d/ 查看指定服务:ls -l /etc/init.d/服务名

​ 查看服务: chkconfig --list | grep 服务名

​ 查看服务: chkconfig 服务名 --list

​ 设置不同级别指定服务的状态 chkconfig --level n 服务名 on/off

​ 设置所有级别服务的状态 chkconfig 服务名 on/off

动态监控进程

top # 默认3秒 top -d 10 # 10秒动态刷新 P、M、N、K、Q # 动态交互

netstat -anp # 查看所有网络服务 netstat -anp | grep sshd # 指定查看sshd服务

RPM:打包及安装工具,可用于卸载与安装rpm包

rpm -q 参数列表:-qa(列表) -ql (目录信息) -qi (软件包信息) -qf (文件所属软件包)

rpm -e 应用名称 # 卸载 rpm -ivh 完整.rpm包 # 安装

YUM

yum list | grep 软件名 # 用于查看yum源对应的软件信息,是否提供

yum -y install 软件名 # -y可以默认yes来进行安装

yum clean all # 清空缓存

yum repolist # 查看yum源的列表并自动下载一些相应的元数据存到本地


我是长路,感谢您的收看。
欢迎关注我的公众号:长路Java,其中会包含软件安装等其他一些资料,包含一些****以及学习路径分享。
也可以加群:891507813 我们可以一起探讨学习