1 Linux基础课
施工位(后期会更新Linux工程课的内容)
2 Linux知识点
2.1 Linux学习方向
- 运维工程师
- Linux嵌入式工程师
- 服务器应用
- 嵌入式应用
2.2 Linux 的目录结构
2.2.1 基本介绍
linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/ ”,然后在此目录下再创建其他的目录。
深刻理解 linux 树状文件目录是非常重要的,这里我给大家说明一下。
记住一句经典的话:在 Linux 世界里,一切皆文件。
2.2.2 目录结构的具体介绍
2.2 Linux目录结构
2.3 实操篇 vi 和 vim 编辑器
2.3.1 vi 和 vim 的基本介绍
所有的 Linux 系统都会内建 vi 文本编辑器。
Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
2.3.2 vi 和 vim 的三种常见模式
2.3.2.1 正常模式
在正常模式下,我们可以使用快捷键。
以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。
2.3.2.2 插入模式/编辑模式
在模式下,程序员可以输入内容。
按下 i, I, o, O, a, A, r, R 等任何一个字母之后才会进入编辑模式, 一般来说按 i 即可
2.3.2.3 命令行模式
在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!
2.3.4 vi 和 vim 三种模式的相互转化图
2.3.5 快捷键的使用案例
-
拷贝当前行 yy , 拷贝当前行向下的 5 行 5yy,并粘贴(p)。 -
删除当前行 dd , 删除当前行向下的 5 行 5dd -
在文件中查找某个单词 [命令行下 /关键字 , 回车 查找 , 输入 n 就是查找下一个 ],查询
hello.
-
设置文件的行号,取消文件的行号.[命令行下 : set nu 和 :set nonu] -
编辑 /etc/profile 文件,使用快捷键到底文档的最末行[G]和最首行[gg],注意这些都是在正常模式下执行的。 -
在一个文件中输入 “hello” ,然后又撤销这个动作,再正常模式下输入 u -
编辑 /etc/profile 文件,并将光标移动到 第 20 行 shift+g 第一步:显示行号 :set nu 第二步:输入 20 这个数第三步: 输入 shift+g
2.3.6 vim 和 vi 的快捷键键盘一览图
2.4 实操篇 开机、重启和用户登录注销
2.4.1 关机&重启命令
2.4.1 基本介绍
shutdown
shutdown -h now : 表示立即关机
shutdown -h 1 : 表示 1 分钟后关机
shutdown -r now: 立即重启
halt : 就是直接使用
reboot: 就是重新启动系统
syn: 就是将内存中的数据同步到磁盘中,我们建议是最是每次关机时都启动该指令。
2.4.2 用户登录和注销
2.4.2.1 基本介绍
使用细节
logout 注销指令在图形运行级别无效,在 运行级别 3 下有效.
2.5 实操篇 用户管理
用户管理的规则图示:
说明:
- Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
- Linux 的用户需要至少要属于一个组。
2.5.1 添加用户
2.5.1.2 基本语法
useradd [选项] 用户名
2.5.2 给用户指定或者是修改密码
基本语法:
passwd 用户名
2.5.3 删除用户
2.5.3.1 基本语法
userdel 用户名
userdel zhangsan
userdel -r zhangsan
2.5.4 查询用户信息
2.5.4.1 基本语法
id 用户名
操作实例:
2.5.5 切换用户
2.5.5.1 介绍
在操作Linux系统时, 如果当前用户的权限不足时,可以通过“ su -”,切换到高权限用户,比如:root
2.5.5.2 基本语法
su - 用户名
操作实例:
2.5.6 用户组
2.5.6.1 介绍
类似于角色,系统可以对共性的多个用户进行统一的管理。
2.5.6.2 基本语法
groupadd 组名
groupdel 组名
2.5.7 增加用户直接加上组
2.5.7.1 基本语法
useradd -g 用户组 用户名
操作示例:
2.5.8 修改用户的组
2.5.8.1 基本语法
usermod -g 用户组 用户名
操作示例:
2.5.9 /etc/passwd 文件
2.5.9.1 简介
**用途:**用户(user)的配置文件,记录用户的各种信息 **每行的含义:**用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
2.5.10 /etc/shadow 文件
**用途:**口令的配置文件,就是存放每一位用户密码的地方。但是,都是通过加密处理的。 每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
2.5.11 /etc/group 文件
**用途:**组(group)的配置文件,记录 Linux 包含的组的信息
**每行含义:**组名:口令:组标识号:组内用户列表
2.6 实操篇 实用指令
2.6.1 指定运行级别
运行级别说明:
0:关机
1:单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
2.6.2 切换到指定运行级别的指令
2.6.2.1 基本语法
init [012356]
操作示例:
面试题
如何找回 root 密码,如果我们不小心,忘记 root 密码,怎么找回。 思路: 进入到 单用户模式,然后修改 root 密码。因为进入单用户模式,root 不需要密码就可以登录。
解决方式:
开机->在引导时输入 回车键-> 看到一个界面输入 e -> 看到一个新的界面,选中第二行(编辑内核)在输入 e-> 在这行最后输入 1 ,再输入 回车键->再次输入 b ,这时就会进入到单用户模式。 这时,我们就进入到单用户模式,使用 passwd 指令来修改 root 密码。
注意,我们在实际生产工作中,只有到机器边上才可以这种操作。
2.6.3 帮助指令
2.6.3.1 介绍
当我们对某个指令不熟悉时,我们可以使用 Linux 提供的帮助指令来了解这个指令的使用方法。
2.6.3.2 man 获得帮助信息
操作示例:
2.6.3.3 help指令
help 命令 (功能描述:获得 shell 内置命令的帮助信息)
操作示例:
2.6.4 文件目录类
2.6.4.1 pwd 指令
-
基本语法 pwd (功能描述:显示当前工作目录的绝对路径)
2.6.4.2 ls指令
2.6.5 mkdir指令
用于创建目录
操作示例:
2.6.6 rmdir指令
删除空目录。
操作示例:
2.6.7 touch 指令
用途:指令创建空文件
操作示例:
2.6.8 cp 指令
**用途:**cp 指令拷贝文件到指定目录
-
基本语法 cp [选项] source dest
操作示例:
2.6.9 rm 指令
**用途:**rm 指令移除【删除】文件或目录
操作示例:
2.6.10 mv 指令
**用途:**mv 移动文件与目录或重命名
操作示例:
2.6.11 cat 指令
用途:cat 查看文件内容,是以只读的方式打开。
操作示例:
2.6.12 more 指令
more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键,详见操作
操作示例:
查看时常见操作:
2.6.13 less 指令
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
操作示例:
查看时常见操作:
2.6.14 指令 > 和 >> 指令
“>” 指令重定向:会将原来的文件的内容覆盖掉;
">>"指令追加:不会覆盖原来文件的内容,只是会会追加到问价的尾部。
操作示例:
2.6.15 echo 指令
echo 输出内容到控制台。
操作示例:
2.6.16 head指令
head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容
操作示例:
2.6.17 tail 指令
tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容。
操作示例:
2.6.18 ln 指令
软连接也叫符号连接,类似于windows里的快捷方式, 主要是存放了链接其他文件的路径。
操作示例:
2.6.19 history 指令
查看已经执行过历史命令,也可以执行历史指令
操作示例:
2.6.20 时间日期类
2.6.20.1 date 指令-显示当前日期
操作示例:
- 显示当前时间信息
- 显示当前时间年月日
- 显示当前时间年月日时分秒
2.6.21 date 指令-设置日期
操作示例:
- 设置当前时间,比如设置2018-10-10 11:22:22
2.6.21 cal 指令
查看日历指令
应用实例
- 显示当前日历
- 显示2020日历
2.6.22 搜索查找类
2.6.22.1 find 指令
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
选项说明:
操作示例:
- 按文件名:根据名称查找/home 目录下的 hello.txt 文件
- 按拥有者:查找/opt 目录下,用户名称为 nobody 的文件
-
查找整个 linux 系统下大于 20m 的文件(+n 大于,-n 小于, n 等于)
- 查询 / 目录下,所有 .txt 的文件
2.6.22.2 locate 指令
locaate 指令可以快速定位文件路径。locate 指令利用事先建立的系统中所有文件名称及路径的locate 数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新 locate 时刻。
操作示例:
- 请使用 locate 指令快速定位 hello.txt 文件所在目录
2.6.22.3 grep 指令和 管道符号 |
grep 过滤查找 , 管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
相关选项:
操作示例:
- 请在 hello.txt 文件中,查找 “yes” 所在行,并且显示行号
2.6.23 压缩和解压类
2.6.23.1 gzip/gunzip 指令
gzip 用于压缩文件, gunzip 用于解压的
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz 文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
操作示例:
- gzip 压缩, 将 /home 下的 hello.txt 文件进行压缩
- gunzip 压缩, 将 /home 下的 hello.txt.gz 文件进行解压缩
2.6.24 zip/unzip 指令
zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的
操作示例:
- 将 /home 下的 所有文件进行压缩成 mypackage.zip
- 将mypackge.zip解压到/opt/tmp 目录下
2.6.23.2 tar 指令
tar 指令 是打包指令,最后打包后的文件是 .tar.gz 的文件。
操作实例:
- 压缩多个文件,将 /home/a1.txt 和 /home/a2.txt 压缩成 a.tar.gz
- 将/home 的文件夹 压缩成 myhome.tar.gz
-
将 a.tar.gz 解压到当前目录 -
将 myhome.tar.gz 解压到 /opt/ 目录下
? 指定解压到的那个目录,事先要存在才能成功,否则会报错。
2.7 实操篇 组管理和权限管理
2.7.1 Linux 组基本介绍
在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件有所有者、所在组、其它组的概念。
1) 所有者
2) 所在组
3) 其它组
4) 改变用户所在的组
2.7.2 文件/目录 所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
2.7.2.1 查看文件的所有者
- 指令:ls -ahl
- 应用实例:创建一个组 police,再创建一个用户 tom,将 tom 放在 police 组 ,然后使用 tom 来创建一个文件 ok.txt,看看情况如何
2.7.2.2 修改文件所有者
基本语法:
chown 用户名 文件名
操作实例:
要求:使用 root 创建一个文件 apple.txt ,然后将其所有者修改成 tom
2.7.3 组的创建
groupadd 组名
操作示例:
创建一个组,monster
创建一个用户fox, 并放在monster组中
2.7.4 文件/目录 所在组
当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组。
2.7.4.1 查看文件/目录所在组
基本指令
ls –ahl
2.7.4.2 修改文件所在的组
基本指令
chgrp 组名 文件名
操作示例:
使用 root 用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 police 组 。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xsRAvCRa-1648822111326)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20220328163705631.png)]
2.7.5 其它组
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组.
2.7.6 改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用 root 的管理权限可以改变某个用户所在的组。
2.7.6.1 改变用户所在组
- usermod –g 组名 用户名
操作示例:
一个土匪组(bandit)将 tom 这个用户从原来所在的 police 组,修改到 bandit(土匪) 组
2.7.7 权限的基本介绍
ls -l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
2.7.8 rwx 权限详解
2.7.8.1 rwx 作用到文件
- [ r ]代表可读(read): 可以读取,查看
- [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
- [ x ]代表可执行(execute):可以被执行
10.8.2 rwx 作用到目录 - [ r ]代表可读(read): 可以读取,ls 查看目录内容
- [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
- [ x ]代表可执行(execute):可以进入该目录
2.7.9 文件及目录权限实际案例
ls -l 中显示的内容如下:(记住)
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
10 个字符确定不同用户能对文件干什么 第一个字符代表文件类型: 文件 (-),目录(d),链接(l) 其余字符每 3 个一组(rwx) 读? 写(w) 执行(x) 第一组 rwx : 文件拥有者的权限是读、写和执行 第二组 rw- : 与文件拥有者同一组的用户的权限是读、写但不能执行第三组 r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行可用数字表示为: r=4,w=2,x=1 因此 rwx=4+2+1=7 1 文件:硬连接数或 目录:子目录数 root 用户 root 组 1213 文件大小(字节),如果是文件夹,显示 4096 字节 Feb 2 09:39 最后修改日期 abc 文件名
2.7.10 修改权限-chmod
基本说明: 通过 chmod 指令,可以修改文件或者目录的权限
2.7.10.1 第一种方式:+ 、-、= 变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)
1) chmod u=rwx,g=rx,o=x 文件目录名
2) chmod o+w 文件目录名
3) chmod a-x 文件目录名
操作示例:
- 给 abc 文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。
- 给 abc 文件的所有者除去执行的权限,增加组写的权限
- 给 abc 文件的所有用户添加读的权限
2.7.10.2 第二种方式:通过数字变更权限
基本语法
r=4 w=2 x=1 ,rwx=4+2+1=7 chmod u=rwx,g=rx,o=x 文件目录名相当于 chmod 751 文件目录名
操作示例:
要求:将 /home/abc.txt 文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现: rwx = 4+2+1 = 7 r-x = 4+1=5 r-x = 4+1 =5 指令:
chmod 755 /home/abc.txt
2.7.11 修改文件所有者-chown
2.7.11.1 基本介绍
chown newowner file 改变文件的所有者
chown newowner:newgroup file 改变用户的所有者和所有组
操作示例:
- 请将 /home/abc .txt 文件的所有者修改成 tom
-
请将 /home/kkk 目录下所有的文件和目录的所有者都修改成 tom 首选我们应该使用 root 操作。
2.7.12 修改文件所在组-chgrp
基本介绍
chgrp newgroup file 改变文件的所有组
操作示例:
- 请将 /home/abc .txt 文件的所在组修改成 bandit (土匪) chgrp bandit /home/abc.txt
- 请将 /home/kkk 目录下所有的文件和目录的所在组都修改成 bandit(土匪) chgrp -R bandit /home/kkk
2.7.13 最佳实践-警察和土匪游戏
police , bandit jack, jerry: 警 察xh, xq: 土 匪
- 创建组
bash> groupadd police bash> groupadd bandit - 创建用户
- jack 创建一个文件,自己可以读写,本组人可以读,其它组没人任何权限
- jack 修改该文件,让其它组人可以读, 本组人可以读写
- xh 投靠 警察,看看是否可以读写. 先用 root 修改 xh 的组 :
使用 jack 给他的家目录 /home/jack 的所在组一个 rx 的权限
xh 需要重新注销在到 jack 目录就可以操作 jack 的文件
2.8 实操篇 crond 任务调度
原理示意图:
crontab 进行 定时任务的设置。
2.8.1 概述
任务调度:
是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
2.个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份。
2.8.2 基本语法
crontab [选项]
常用选项:
2.8.3 快速入门
2.8.3.1 任务的要求
设置任务调度文件:/etc/crontab 设置个人任务调度。执行 crontab –e 命令。接着输入任务到调度文件 如:*/1 * * * * ls –l /etc/ > /tmp/to.txt 意思说每小时的每分钟执行 ls –l /etc/ > /tmp/to.txt 命令
2.8.3.1.1 步骤如下
1) cron -e
2) */ 1 * * * * ls -l /etc >> /tmp/to.txt
3) 当保存退出后就程序。
4) 在每一分钟都会自动的调用 ls -l /etc >> /tmp/to.txt
11.4.3 参数细节说明
五个占位符说明:
特殊符号的说明:
特定时间执行时间案例
2.8.4 任务调度的几个应用实例
- 每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件
中
1) 先编写一个文件 /home/mytask1.sh date >> /tmp/mydate2) 给 mytask1.sh 一个可以执行权限 chmod 744 /home/mytask1.sh3) crontab -e4) */1 * * * * /home/mytask1.sh5) 成功
- 每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal 文件中
1) 先编写一个文件 /home/mytask2.sh
date >> /tmp/mycal cal >> /tmp/mycal
2) 给 mytask1.sh 一个可以执行权限
chmod 744 /home/mytask2.sh
3) crontab -e
4) */1 * * * * /home/mytask2.sh
5) 成功
- 每天凌晨 2:00 将 mysql 数据库 testdb ,备份到文件中
mydb.bak。
1) 先编写一个文件 /home/mytask3.sh
/usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak
2) 给 mytask3.sh 一个可以执行权限
chmod 744 /home/mytask3.sh
3) crontab -e
4) 0 2 * * * /home/mytask3.sh
5) 成功
2.8.5 crond 相关指令:
1) conrtab –r:终止任务调度。
2) crontab –l:列出当前有那些任务调度
3) service crond restart [重启任务调度]
2.9 实操篇 Linux 磁盘分区、挂载
2.9.1 分区基础知识
分区的方式:
mbr 分区:
1.最多支持四个主分区
2.系统只能安装在主分区
3.扩展分区要占一个主分区
4.MBR 最大只支持 2TB,但拥有最好的兼容性
2) gtp 分区:1.支持无限多个主分区(但操作系统可能限制,比如 windows 下最多 128 个分区)2.最大支持 18EB 的大容量(1EB=1024 PB,1PB=1024 TB )3.windows7 64 位以后支持 gtp
2.9.2 windows下的分区
2.9.3 Linux 分区
原理介绍
- Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一部分。
- Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录, 且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
- 原理图
硬盘说明
- Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘
- 对于 IDE 硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指 IDE 硬盘了。“x”为盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),“~”代表分区,前四个分区用数字 1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。例,hda3 表示为第一个 IDE 硬盘上的第三个主分区或扩展分区,hdb2 表示为第二个 IDE 硬盘上的第二个主分区或扩展分区。
- 对于 SCSI 硬盘则标识为“sdx~”,SCSI 硬盘是用“sd”来表示分区所在设备的类型的,其余则和 IDE 硬盘的表示方法一样。
2.9.4 使用 lsblk 指令查看当前系统的分区情况
2.9.5 挂载的经典案例
需求是给我们的 Linux 系统增加一个新的硬盘,并且挂载到/home/newdisk
2.9.5.1 如何增加一块硬盘
- 虚拟机添加硬盘
- 分区 fdisk /dev/sdb
分区命令 fdisk /dev/sdb
开始对/sdb 分区
? m 显示命令列表
? p 显示磁盘分区 同 fdisk –l
? n 新增分区
? d 删除分区
? w 写入并退出
说明: 开始分区后输入 n,新增分区,然后选择 p ,分区类型为主分区。两次回车默认剩余全部空间。最后输入 w 写入分区并退出,若不保存退出输入 q。
- 格式化 mkfs -t ext4 /dev/sdb1
格式化磁盘
分区命令:mkfs -t ext4 /dev/sdb1
其中 ext4 是分区类型
- 挂载 先创建一个 /home/newdisk , 挂 载 mount /dev/sdb1 /home/newdisk
挂载: 将一个分区与一个目录联系起来,
? mount 设备名称 挂载目录
? 例如: mount /dev/sdb1 /newdisk
? umount 设备名称 或者 挂载目录
? 例如: umount /dev/sdb1 或 者 umount /newdisk
- 设置可以自动挂载(永久挂载,当你重启系统,仍然可以挂载到 /home/newdisk) 。
永久挂载: 通过修改/etc/fstab 实现挂载添加完成后 执行 mount –a 即刻生效
2.9.6 磁盘情况查询
2.9.6.1 查询系统整体磁盘使用情况
基本语法
df -h
操作示例: 查询系统整体磁盘使用情况
2.9.6.2 查询指定目录的磁盘占用情况
基本语法
du -h /目录
操作实例:
- 查询 /opt 目录的磁盘占用情况,深度为 1
2.9.7 磁盘情况-工作实用指令
- 统计/home 文件夹下文件的个数
-
统计/home 文件夹下目录的个数 -
统计/home 文件夹下文件的个数,包括子文件夹里的
- 统计文件夹下目录的个数,包括子文件夹里的
- 以树状显示目录结构
2.10 实操篇 网络配置
2.10.1 Linux 网络配置原理图(含虚拟机)
目前我们的网络配置采用的是 NAT。
这个我也不是很了解,可以理解为Linux通过NAT产生一个虚拟网卡,可以通过这个与外网连接。
2.10.2 查看网络 IP 和网关
2.10.2.1 查看虚拟网络编辑器
2.10.2.2 修改 ip 地址(修改虚拟网络的 ip)
2.10.2.3 查看网关
还可以通过:
2.10.3 ping 测试主机之间网络连通
2.10.3.1 基本语法
ping 目的主机 (功能描述:测试当前服务器是否可以连接目的主机)
应用实例
测试当前服务器是否可以连接百度[root@hadoop100 桌面]
2.10.4 linux 网络环境配置
2.10.4.1 第一种方法(自动获取)
缺点:
linux 启动后会自动获取 IP,缺点是每次自动获取的 ip 地址可能不一样。这个不适用于做服务器,因为我们的服务器的 ip 需要时固定的。
2.10.4.2 第二种方法(指定固定的 ip)
说明 直 接 修 改 配 置 文 件 来 指 定 IP, 并 可 以 连 接 到 外 网 ( 程 序 员 推 荐 ) , 编 辑
vi /etc/sysconfig/network-scripts/ifcfg-eth0要求:将 ip 地址配置的静态的,ip 地址为 192.168.184.130
修改后,一定要 重启服务
- service network restart
- reboot 重启系统
2.11 实操篇 进程管理
2.11.1 进程的基本介绍
1)在 LINUX 中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个 ID 号。 2)每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如 www 服务器。 3)每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。 4)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
2.11.2 显示系统执行的进程
基本语法:
ps -aux
图示:
ps 指令详解
指令:ps –aux|grep xxx ,比如我看看有没有 sshd 服务
应用实例
示例1:
要求:以全格式显示当前所有的进程,查看进程的父进程。
示例2:
要求:如果我们希望查看 sshd 进程的父进程号是多少,应该怎样查询 ?
2.11.3 终止进程 kill 和 killall
基本介绍:
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用 kill 命令来完成此项任务。
基本语法:
kill [选项] 进程号(功能描述:通过进程号杀死进程)killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
操作示例: 案例 1:踢掉某个非法登录用户
案例 2: 终止远程登录服务 sshd, 在适当时候再次重启 sshd 服务
案例 3: 终止多个 gedit 编辑器 【killall , 通过进程名称来终止进程】
案例 4:强制杀掉一个终端
2.11.4 查看进程树 pstree
基本语法:
pstree [选项] ,可以更加直观的来看进程信息
操作示例:
案例 1:请你树状的形式显示进程的 pid
案例 2:请你树状的形式进程的用户
id pstree -u
2.11.5 服务(Service)管理
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等)。
因此我们又称为守护进程,是 Linux 中非常重要的知识点。
在 CentOS7.0 后 不再使用 service ,而是 systemctl。下图中的22和3306都是端口号。
service 管理指令:
service 服务名 [start | stop | restart | reload | status]
操作示例:
案例1:操作闭防火墙和重启防火墙。(防火墙的服务名为:iptables)
细节讨论:
- 关闭或者启用防火墙后,立即生效。[telnet 测试 某个端口即可]
-
这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。 如果希望设置某个服务自启动或关闭永久生效,要使用 chkconfig 指令。 -
Systemctl和service、chkconfig命令的关系
-
systemctl命令:是一个systemd工具,主要负责控制systemd系统和服务管理器。 -
service命令:可以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。 -
chkconfig命令:是管理系统服务(service)的命令行工具。所谓系统服务(service),就是随系统启动而启动,随系统关闭而关闭的程序。 systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。 systemctl是RHEL 7 的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。可以使用它永久性或只在当前会话中启用/禁用服务。 所以systemctl命令是service命令和chkconfig命令的集合和代替。
2.11.6 查看服务名
方式 1:使用 setup -> 系统服务 就可以看到。
方式 2: /etc/init.d/服务名称
服务的运行级别(runlevel):
2.11.7 开机的流程说明
2.11.8 chkconfig 指令介绍
通过 chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭
1) chkconfig 服务名 --list2) chkconfig --level 5 服务名 on/off
操作示例:
案例 1: 请显示当前系统所有服务的各个运行级别的运行状态
bash> chkconfig --list
案例 2 :请查看 sshd 服务的运行状态
bash> service sshd status
案例 3: 在所有运行级别下,开启防火墙
bash> chkconfig iptables on
案例 4: 将 sshd 服务在运行级别 5 下设置为不自动启动,看看有什么效果?
bash> chkconfig --level 5 sshd off
案例 5: 当运行级别为 5 时,关闭防火墙。
bash> chkconfig --level 5 iptables off
案例 6: 在所有运行级别下,关闭防火墙
bash> chkconfig iptables off
使用细节
chkconfig 重新设置服务后自启动或关闭,需要重启机器 reboot 才能生效.
2.11.9 动态监控进程
基本介绍:
top 与 ps 命令很相似。它们都用来显示正在执行的进程。
Top 与 ps 最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程。
基本语法:
top [选项]
选项说明
交互选项:
应用实例
案例 1.监视特定用户
top:输入此命令,按回车键,查看执行的进程。 u:然后输入“u”回车,再输入用户名,即可
案例2:终止指定的进程
top:输入此命令,按回车键,查看执行的进程。 k:然后输入“k”回车,再输入要结束的进程 ID 号
案例 3:指定系统状态更新的时间(每隔 10 秒自动更新, 默认是 3 秒) bash> top -d 10
2.11.10 查看系统网络情况 netstat(重要)
基本语法
netstat [选项]netstat -anp
操作示例:
案例1:查看系统中所有网络服务
案例2:请查看服务名为 sshd 的服务的信息。
2.12 实操篇 RPM 和 YUM
2.12.1 rpm 包的管理
基本介绍:
包的打包及安装工具,它包含在某些 Linux 分发版中。
它生成具有.RPM 扩展名的文件。RPM 是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 windows 的 setup.exe,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。
Linux 的分发版本都有采用(suse,redhat, centos 等等),可以算是公认的行业标准了。
2.12.2 rpm 包的简单查询指令
操作示例:
查看当前Linux上是否安装了Firefox
2.12.3 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 表示通用
2.12.4 rpm 包的其它查询指令
2.12.5 卸载 rpm 包:
基本语法
rpm -e RPM 包的名称
操作示例:
案例1:删除 firefox 软件包
细节问题
-
如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。如: $ rpm -e foo removing these packages would break dependencies:foo is needed by bar-1.0-1
-
如果我们就是要删除 foo 这个 rpm 包,可以增加参数 --nodeps ,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行 $ rpm -e --nodeps foo
2.12.6 安装 rpm 包:
基本语法
rpm -ivh RPM 包全路径名称
操作示例:
- 演示安装 firefox 浏览器
步骤先找到 firefox 的安装 rpm 包,你需要挂载上我们安装 centos 的 iso 文件,然后到/media/下去找 rpm 找 。 cp firefox-45.0.1-1.el6.centos.x86_64.rpm /opt/
2.12.7 yum
基本介绍 Yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用 yum 的前提是可以联网。
yum 的基本指令
yum list | grep xx 软件列表
操作示例: 案例1:请使用 yum 的方式来安装 firefox
- 先查看一下 firefox rpm 在 yum 服务器有没有
- 安装yum install firefox
2.13 Ubuntu下apt 软件管理和远程登录
2.13.1 apt 介绍
apt 是 Advanced Packaging Tool 的简称,是一款安装包管理工具。在 Ubuntu 下,我们可以使用 apt 命令可用于软件包的安装、删除、清理等,类似于 Windows 中的软件管理工具。 unbuntu软件管理的原理示意图:
2.13.2 Ubuntu 软件操作的相关命令
sudo apt-get update 更新源
sudo apt-get install package 安装包
sudo apt-get remove package 删除包
sudo apt-cache search package 搜索软件包
sudo apt-cache show package 获取包的相关信息,如说明、大小、版本等
sudo apt-get install package --reinstall 重新安装包
sudo apt-get -f install 修复安装
sudo apt-get remove package --purge 删除包,包括配置文件等
sudo apt-get build-dep package 安装相关的编译环境
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-cache depends package 了解使用该包依赖那些包
sudo apt-cache rdepends package 查看该包被哪些包依赖
sudo apt-get source package 下载该包的源代码
2.13.3 更新 Ubuntu 软件下载地址
原理示意图
2.13.4 备份 Ubuntu 默认的源地址
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
2.13.5 更新源服务器列表
2.13.6 Ubuntu 软件安装,卸载的最佳实践
操作示例:
案例说明:使用 apt 完成安装和卸载 vim 软件,并查询 vim 软件的信息:
sudo apt-get remove vim
2.13.7 远程登录Linux
基本语法:
登录:
ssh 用户名@IP例如:ssh atguigu@192.168.188.131
登出:
登出命令:exit 或者 logout
|