Linux学习笔记
注:笔记记录于B站韩顺平老师的Linux课程
个人感受:该课程比较适合小白(保姆式),Shell的篇章讲得不是很好,想进一步提高Linux水平还需要另寻它路
第 1 章Linux 开山篇
1.1 本套 Linux 课程的内容介绍


1.2 Linux 的学习方向
1.2.1 Linux 运维工程师
1.2.2Linux 嵌入式开发工程师
1.2.3在 linux 下做各种程序开发
1.2.4示意图

1.3 Linux 的应用领域
1.3.1 个人桌面应用领域
此领域是传统 linux 应用最薄弱的环节,传统 linux 由于界面简单、操作复杂、应用软件少的缺点,一直被 windows 所压制,但近些年来随着 ubuntu、fedora [fɪˈdɔ:rə] 等优秀桌面环境的兴起,同时各大硬件厂商对其支持的加大,linux 在个人桌面领域的占有率在逐渐的提高。

1.3.2服务器应用领域
linux 在服务器领域的应用是最强的。linux 免费、稳定、高效等特点在这里得到了很好的体现,近些年来 linux 服务器市场得到了飞速
的提升,尤其在一些高端领域尤为广泛
1.3.3嵌入式应用领域
近些年来 linux 在嵌入式领域的应用得到了飞速的提高
linux 运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百 KB 等特点,使其近些年来在嵌入式领域的应用得到非常大的提高
主要应用:机顶盒、数字电视、网络电话、程控交换机、手机、PDA、智能家居、智能硬件等都是其应用领域。以后再物联网中应用会更加广泛
1.4 学习 Linux 的阶段(高手进阶过程)
linux 是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多中型,大型甚至是集群项目都在使用 linux,很多软件公司考虑到开发成本都首选 linux,在中国软件公司得到广泛的使用。
学习 linux 流程为:
第 1 阶段:linux 环境下的基本操作命令,包括 文件操作命令(rm mkdir chmod, chown) 、编辑工具使用(vi vim)、linux 用户管理(useradd userdel usermod)等
第 2 阶段:linux 的各种配置(环境变量配置,网络配置,服务配置)
第 3 阶段:linux 下如何搭建对应语言的开发环境(大数据,JavaEE, Python 等)
第 4 阶段:能编写 shell 脚本,对 Linux 服务器进行维护。
第 5 阶段:能进行安全设置,防止攻击,保障服务器正常运行,能对系统调优。
第 6 阶段:深入理解 Linux 系统(对内核有研究),熟练掌握大型网站应用架构组成、并熟悉各个环节的部署和维护方法
第 2 章 Linux 入门
2.1 Linux 介绍
-
Linux 怎么读 【里纽克斯,利尼克斯,里纳克斯】
-
Linux 是一款操作系统,免费,开源, 安全,高效,稳定, 处理高并发非常强悍,现在很多的企业级的项目都部署到 Linux/unix 服务器运行。
-
Linux 创始人-linux 林纳斯

- Linux 的吉祥物
企鹅 tux

- Linux 的主要的发行版

- 目前主要的操作系统有
windows, android ,Mac,车载系统,linux 等。

2.2 unix 是怎么来的

2.3 Linux 是怎么来的

2.4 linux 和 unix 关系一览图

2.5 linux 和 Windows 比较

1、 免费与收费
Windows需要付费购买;
Linux 免费或少许费用。
2、软件与支持
Windows平台:数量和质量的优势,不过大部分为收费软件;由微软官方提供重要支持和服务;
Linux平台:大都为开源自由软件,用户可以修改定制和再发布,由于基本免费没有资金支持,部分软件质量和体验欠缺;由全球所有的 Linux 开发者和自由软件社区提供支持。
3、安全性
Windows 平台:三天两头打补丁安装系统安全更新,还是会中病毒木马;
Linux 平台:要说 Linux 没有安全问题,那当然是不可能的,这一点仁者见仁智者见智,相对来说肯定比 Windows 平台要更加安全,使用 Linux 您也不用装某杀毒、某毒霸。
4、使用习惯
Windows:普通用户基本都是纯图形界面下操作使用,依靠鼠标和键盘完成一切操作,用户上手容易,入门简单;
Linux:兼具图形界面操作(需要使用带有桌面环境的发行版)和完全的命令行操作,可以只用键盘完成一切操作,新手入门较困难,需要一些学习和指导(这正是我们要做的事情),一旦熟练之后效率极高。
5、可定制性
Windows:这些年之前算是全封闭的,系统可定制性很差;
Linux:您想怎么做就怎么做,Windows 能做到得它都能,Windows 做不到的,它也能。
6、应用范畴
或许您之前不知道 Linux ,要知道,您之前在 Windows 使用百度、谷歌,上淘宝,聊 QQ 时,支撑这些软件和服务的,是后台成千上万的 Linux 服务器主机,它们时时刻刻都在忙碌地进行着数据处理和运算,可以说世界上大部分软件和服务都是运行在 Linux 之上的。
7、Linux的优点
1)极其稳定
2)性能卓越
3)安全性和漏洞的快速修补
4)多用户
5)用户和用户组的规划
6)相对较少的系统资源占用
7)可定制裁剪,移植到嵌入式平台(如安卓设备)
8)可选择的多种图形用户界面(如 GNOME,KDE)
8、Windows的优点
1)微软公司强大的支持
2)足够的游戏娱乐支持度
3)足够的专业软件支持度
2.6什么是发行版
发行版是指某些公司、组织或个人把Linux内核、源代码以及相关的应用程序组织在一起进行二次开发,然后发行。
发行版说简单点就是将 Linux 内核与应用软件做一个打包


第 3 章 VM 和 Linux 系统(CentOS)安装
vm 和 Centos的关系

CentOS 下载
下载方案一:官网下载
https://www.centos.org/download/
各个版本的ISO镜像文件说明:

下载方案二:迅雷下载(CentOS 6.5 映像)
点击链接或复制链接到迅雷即可开始下载
32 位 CentOS 6.5 映像下载:http://archive.kernel.org/centos-vault/6.5/isos/i386/CentOS-6.5-i386-bin-DVD1.iso
64 位 CentOS 6.5 映像下载:http://archive.kernel.org/centos-vault/6.5/isos/x86_64/CentOS-6.5-x86_64-bin-DVD1.iso
下载方案三:资源栏目下载
http://mirrors.sohu.com/centos/7.7.1908/isos/x86_64/

安装VMWare12
| VMware 有两个版本,分别是 VMware Workstation Pro 和 VMware Workstation Player | |
|---|---|
| Player | 是免费版本,只能用于非商业用途,适合个人学习 |
| Pro | 是商业版本,功能最强大,付费以后才能使用 |













安装CentOS 6.8
1 检查BIOS虚拟化支持

2 新建虚拟机

3 新建虚拟机向导

4 创建虚拟空白光盘

5 安装Linux系统对应的CentOS版

6 虚拟机命名和定位磁盘位置

7 处理器配置,看自己是否是双核、多核;虚拟机处理器数量可以根据自己的机器配置来定,查看电脑的属性即可


8 设置内存为2GB(内存的大小要根据自己机器的内存来定,建议2G)

9 网络设置NAT(说明及其示意图的演示)


10 选择IO控制器类型

11 选择磁盘类型
IDE: 老的磁盘类型
SCSI: 服务器上推荐使用的磁盘类型,串口。
SATA: 也是串口,也是新的磁盘类型。

12 新建虚拟磁盘

13 设置磁盘容量

14 你在哪里存储这个磁盘文件

15 新建虚拟机向导配置完成

16 VM设置

17 加载ISO

18 安装配置CentOS

19 启动后初始化欢迎进入页面

回车选择第一个开始安装配置,此外,在Ctrl+Alt可以实现Windows主机和VM之间窗口的切换
20 是否对CD媒体进行测试,直接跳过Skip

21 CentOS欢迎页面,直接点击Next

22 选择简体中文进行安装

23 选择语言键盘

24 选择存储设备


25 给计算机起名

26 设置网络环境(安装成功后再设置)
27 选择时区

28 设置root密码 (一定记住)

29 硬盘分区-1

30 Boot分区设置


31swap分区设置


32 根分区设置


分区完成

(说明:也可以使用将除去 /boot 和 swap 分区的所有空间分配给 / 根分区的方式来玩)


34 程序引导,直接下一步

35 现在定制系统软件

说明:软件包的安装就使用默认的即可,但是可以给同学们演示说明一把。
36 Web环境

37 可扩展文件系统支持

38 基本系统(不要去勾选java平台,因为后面我们自己需要安装)

39 应用程序

40 开发、弹性存储、数据库、服务器(可以都不勾,有需要,以后使用中有需要再手动安装)

41 桌面(除了KDE,其他都选就可以了)。

42 语言支持

43 系统管理、虚拟化、负载平衡器、高可用性可以都不选
44 完成配置,开始安装CentOS

45 等待安装完成,等待等待等待等待……20分钟左右

46 安装完成,重新引导

47 欢迎引导页面

48 许可证

49 创建用户,可以先不创建,用root账户登录就行


50 时间和日期

51 Kdump,去掉


52 重启后用root登录

53 配置可以上网

54 使用火狐浏览器连接网络,看看是否可以连通

安装Centos7
和上面的安装Centos6大同小异
抽出比较重要的讲讲
自定义分区

手动添加/boot挂接点;设置期望容量200

手动添加/swap挂接点;设置期望容量2048

手动添加/挂接点;设置期望容量18231

** 查看3个分区;点击完成**

点击接收更改

软件选择(这里默认点击最小安装)
但是:Centos7 使用的最小化按照,导致无图形界面 所以在安装过程要注意 界面安装一定要注意!!!
如果没有 使用一下方式进行安装
1.首先需要对系统进行更新 (可以不用执行,但是某些系统在直接安装界面会出问题,建议执行)
# yum -y upgrade
2.然后安装桌面组件包 ,在命令行下输入下面的命令来安装 Gnome包,注意字母的大小写一定不能错,否则安装会有问题,出现complete 说明安装完成
# set-default granphical.target_
3. 运行下面命令就可以进入图形界面
# startx
4.虽然这时已经是图形化界面了 但是系统还是默认启动时命令界面 所以我们要更改默认启动项,获取当前系统启动模式
# systemctl get-default
参考:https://blog.csdn.net/kruie/article/details/88399624
Centos7最小化安装后如何安装图形化桌面?
1.首先安装X(X Window System),命令为
yum groupinstall "X Window System"
回车(注意有引号)
2.安装图形界面软件 GNOME
yum groupinstall "GNOME Desktop"
安装成功后,会显示Complete!
3.更新系统的默认运行级别
经过上面的操作,系统启动默认还是命令行页面的,需要我们进行切换。
如果想要使系统启动即为图形化窗口,需要执行下面的命令
ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target
3.1补充:
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target 命令行模式
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target 图形界面模式
4.重启系统,当系统再次启动的时候,就会默认进入图形界面
reboot
5.CentOS7的命令行模式与图形界面相互切换
5.1 获取当前系统启动模式
systemctl get-default
5.2查看配置文件
cat /etc/inittab
参考:https://blog.csdn.net/qq_43485197/article/details/84143014
5.3更改模式命令:
systemctl set-default graphical.target //由命令行模式更改为图形界面模式
systemctl set-default multi-user.target //由图形界面模式更改为命令行模式
5.4更改后验证是否正确
shutdown -r now
点击安装(等待时间有多久-20分钟左右,具体看配置)

安装Vmtools&建立共享文件夹
安装Vmtools
1.介绍&关系示意图

2.安装
注意:Centos6需要手动安装Vmtools,Centos7是自动安装的

1)点开设置下的设备

2)设备下会显示VMware Vmtools文件夹;点开文件夹

3)复制VMwareTools-10.1.15-6627262.tar到某一个文件中【可以自定义安装】
例如,复制到opt目录下

4)进入终端
进入opt目录下

5)解压


6)运行 vmware-install.pl文件


7)重启Linux系统

8)从Window拉拽一个文件到Linux桌面

共享文件夹
关机,再配置共享文件夹,然后再开机


注:Centos7自动安装的Vmtools,还需要手动在mnt的目录下新建hgfs目录,并且需要运行命令手动挂载共享文件夹,比较麻烦而且不一定挂载成功(本人原先就是遭了这样的罪),所以强烈建议:Centos7要想创建共享文件夹,必须重新安装Vmtools
第 4 章 Linux 的目录结构
4.1 基本介绍
linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。
深刻理解 linux 树状文件目录是非常重要的,这里我给大家说明一下。
记住一句经典的话:在 Linux 世界里,一切皆文件。

4.2 目录结构的具体介绍





4.3 Linux 目录总结一下
- linux 的目录中有且只要一个根目录 /
- linux 的各个目录存放的内容是规划好,是约定俗成的,不用乱放文件。
- linux 是以文件的形式管理我们的设备,因此 linux 系统,一切皆为文件。
第 5 章 远程登录 Linux 系统
5.1 为什么需要远程登录 Linux
5.1.1示意图

5.1.2说明
说明: 公司开发时候, 具体的情况是这样的
- linux 服务器是开发小组共享的.
- 正式上线的项目是运行在公网的.
- 因此程序员需要远程登录到 centos 进行项目管理或者开发.
- 画出简单的网络拓扑示意图(帮助理解)
- 远程登录客户端有 Xshell5, Xftp5,SecureCRT
5.2 远程登录 Linux-Xshell5
Xshell 是目前最好的远程登录到 Linux 操作的软件,流畅的速度并且完美解决了中文乱码的问题, 是目前程序员首选的软件。
Xshell 是一个强大的安全终端模拟软件,它支持 SSH1, SSH2, 以及 Microsoft Windows 平台的 TELNET 协议。
Xshell 可以在 Windows 界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。
特别说明:如果希望安装好 XShell 5 就可以远程访问 Linux 系统的话,需要有一个前提,就是Linux 需要启用SSHD服务(默认已打开),该服务会监听 22号端口。
查看Linux是否打开SSHD服务
1.打开终端输入命令:setup
2.选择系统服务【前面标识了星号表示已经启用】
3.查看打开SSHD服务没有
5.3 安装 XShell5 并使用
xshell5汉化破解版 v5.0.1326地址
链接:https://pan.baidu.com/s/1x45UyHXtnXoEHDT5uC1Isg
提取码:w5wd
xshell6
链接:https://pan.baidu.com/s/1A2Vk7V_dDnSb5dfNP46ENQ
提取码:xdi5
傻瓜式安装,一路next就行...
XShell5 的关键配置

点击名称;再点击连接

接受并保存

输入用户名和密码



5.4 远程上传下载文件 Xftp5
XFtp 软件介绍
是一个基于 windows 平台的功能强大的 SFTP、FTP 文件传输软件。使用了 Xftp 以后,windows用户能安全地在 UNIX/Linux 和 Windows PC 之间文件传输。(示意图)。

软件的安装
过于简单,一路next...
Xftp5 的配置和使用


用户身份验证输入密码,点击确定

连接成功

如何解决XFTP中文乱码问题

第 6 章 vi 和 vim 编辑器
6.1 vi 和 vim 的基本介绍
所有的 Linux 系统都会内建 vi 文本编辑器。
Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
6.2 vi 和 vim 的三种常见模式
6.2.1正常模式
在正常模式下,我们可以使用快捷键。以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用『上
下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。
(1)i 切换到输入模式,以输入字符。
(2)x 删除当前光标所在处的字符。
(3): 切换到底线命令模式,以在最底一行输入命令。
| i | 切换到输入模式,以输入字符 |
|---|---|
| x | 删除当前光标所在处的字符 |
| : | 切换到底线命令模式,以在最底一行输入命令 |
6.2.2插入模式/编辑模式
在模式下,程序员可以输入内容。
按下 i, I, o, O, a,A, r, R 等任何一个字母之后才会进入编辑模式, 一般来说按 i 即可
| 字符按键以及Shift组合 | 输入字符 |
|---|---|
| ENTER | 回车键,换行 |
| BACK SPACE | 退格键,删除光标前一个字符 |
| 方向键 | 在文本中移动光标 |
| DEL | 删除键,删除光标后一个字符 |
| HOME/END | 移动光标到行首/行尾 |
| Page Up/Page Down | 上/下翻页 |
| Insert | 切换光标为输入/替换模式,光标将变成竖线/下划线 |
| ESC | 退出输入模式,切换到命令模式 |
6.2.3命令行模式
在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!
:wq 写并退出
:q 直接退出
:q!强制退出不保存
| q | 退出程序 |
|---|---|
| w | 保存文件 |
6.3 vi 和 vim 三种模式的相互转化图

6.4快捷键的使用案例
- 拷贝当前行 yy , 拷贝当前行向下的 5 行 5yy,并粘贴(p)。

- 删除当前行 dd , 删除当前行向下的 5 行 5dd
- 在文件中查找某个单词 [ 按/进入命令行模式,然后输入关键字,并且回车查找 , 输入 n键 就是查找下一个 ],查询hello.

- 设置文件的行号,取消文件的行号.[命令行下 : set nu 和 :set nonu]

- 使用快捷键到底文档的最末行[G]和最首行[gg],注意这些都是在正常模式下执行的。

- 在一个文件中输入 "hello" ,然后又撤销这个动作,再正常模式下输入 u
- 将光标移动到 第 20 行 shift+g
第一步进入正常模式
第二步:输入 20 这个数
第三步: 输入 shift+g
6.5 vim 和 vi 的快捷键键盘一览图(了解即可)

第 7 章 开机、重启和用户登录注销
7.1 关机&重启命令
7.1.1基本介绍

注:当我们关机或者重启时,都应该先执行以下 sync 指令,把内存的数据写入磁盘,防止数据丢失
7.2 用户登录和注销
7.2.1基本介绍
- 登录时尽量少用 root 帐号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用”
su - 用户名命令来切换成系统管理员身份. - 在提示符下输入
logout即可注销用户

7.2.2使用细节
1)logout 注销指令在图形运行级别无效,在 运行级别 3 下有效.
2)运行级别这个概念,后面给大家介绍
第 8 章 用户管理
8.1 基本介绍

说明
-
Linux 系统是一个
多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。 -
Linux 的每个用户需要至少要属于一个组或多个组。
8.2 添加用户
基本语法:useradd [选项] 用户名

cd 表示 change directory 切换目录

细节说明
-
当创建用户成功后,会
自动的创建和用户同名的家目录 -
也可以通过
useradd -d 指定目录 新的用户名,给新创建的用户指定家目录

8.3 给用户指定或者修改密码
基本语法:passwd 用户名
- 给 xiaoming 指定密码

1.当你输入密码时看不到:这是正常的,系统设置密文
2.在工作中,密码必须写复杂

常见问题解决办法,修改它的密码检查策略
进入 /etc/pam.d/目录,修改password-auth文件

8.4 删除用户
-
删除用户,但是要保留家目录:
userdel 用户名 -
删除用户 以及用户主目录:
userdel -r 用户名
在删除用户时,我们一般不会将家目录删除。
8.5 查询用户信息
基本语法:id 用户名

当用户不存在时,返回”无此用户”

8.6 切换用户
在操作 Linux 中,可以通过 su - 用户名,切换到其他用户
权限高的用户切换到权限低的用户,不需要输入密码,反之需要
当需要返回到原来的用户时,使用exit命令


8.7查看当前用户/登录用户
whoami或者who am i

8.8用户组
8.8.1 介绍
类似于角色,系统可以对有共性的多个用户进行统一的管理。
8.8.2 增加组
命令:groupadd 组名

8.8.3 删除组
命令:groupdel 组名

8.8.4 增加用户时直接加上组
命令:useradd -g 用户组 用户名


8.9 修改用户的组
基本语法:usermod -g 用户组 用户名

8.10 用户和组的相关文件
/etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell

/etc/shadow 文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

/etc/group 文件
组(group)的配置文件,记录 Linux 包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表

第 9 章 实用指令
9.1 指定运行级别
运行级别说明:
0 :关机
1 :单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是 3 和 5 ,要修改默认的运行级别可以修改文件/etc/inittab 的 id:5:initdefault:这一行中的数字

运行级别的示意图:

9.2 切换到指定运行级别的指令
基本语法:init [012356]
面试题:如何找回 root 密码,如果我们不小心,忘记 root 密码,怎么找回。
思路: 进入到 单用户模式,然后修改 root 密码。因为进入单用户模式,root 不需要密码就可以登录。
步骤:开机->在引导时输入 回车键-> 看到一个界面输入 e -> 看到一个新的界面,选中第二行(编辑内核)在输入 e-> 在这行最后输入 1 ,再输入 回车键->再次输入 b ,这时就会进入到单用户模式。这时,我们就进入到单用户模式,使用 passwd 指令来修改 root 密码。






9.3 帮助指令
当我们对某个指令不熟悉时,我们可以使用 Linux 提供的帮助指令来了解这个指令的使用方法。
基本语法:
man [命令或配置文件] (功能描述:获得帮助信息)
help 命令(功能描述:获得 shell 内置命令的帮助信息)
linux帮助命令help、man、info 三者区别
一、help命令
help查看帮助工具在内部命令与外部命令上是有区别的。
help <command> 只能用于内部命令,不能用于外部命令。例如:help cd;
<command> --help 用于外部命令。例如:ls --help。
内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。
外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等。
我们可以使用type 命令来区分命令是内建的还是外部的。
$ type cd
cd is a shell builtin # 得到这样的结果说明是内建命令,正如上文所说内建命令都是在 bash 源码中的 builtins 的.def中
$ type vim
vim is /usr/bin/vim # 得到这样的结果说明是外部命令,正如上文所说,外部命令在/usr/bin or /usr/sbin等等中
$ type ls
ls is an alias for ls --color=tty # 若是得到alias的结果,说明该指令为命令别名所设定的名称
二、man命令
得到的内容比用help更多更详细,而且man没有内建与外部命令的区分,因为man工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述。通过查看系统文档中的man也可以得到程序的更多相关信息和 Linux 的更多特性。

使用上面这个命令时我们会发现最左上角显示“ LS (1)”,在这里,“ LS ”表示手册名称,而“(1)”表示该手册位于第一章节。
在man手册中一共有下面几个章节:
1 Standard commands (标准命令)
2 System calls (系统调用)
3 Library functions (库函数)
4 Special devices (设备说明)
5 File formats (文件格式)
6 Games and toys (游戏和娱乐)
7 Miscellaneous (杂项)
8 Administrative Commands (管理员命令)
9 其他(Linux特定的), 用来存放内核例行程序的文档。
打开手册之后我们可以通过pgup与pgdn或者上下键来上下翻看,可以按q退出当前页面。这里最好记住上面的章节数和说明。
三、info命令
得到的信息比 man 还要多,info 来自自由软件基金会的 GNU 项目,是 GNU 的超文本帮助系统,能够更完整的显示出 GNU 信息。所以得到的信息当然更多
man 和 info 就像两个集合,它们有一个交集部分,但与 man 相比,info 工具可显示更完整的 GNU 工具信息。若 man 页包含的某个工具的概要信息在 info 中也有介绍,那么 man 页中会有“请参考 info 页更详细内容”的字样。
9.4 文件目录类
pwd
pwd :print working directory(功能描述:显示当前工作目录的绝对路径)
ls
ls [选项] [目录或是文件]
ls --->list directory contents
常用选项:
-a (all):显示当前目录所有的文件和目录,包括隐藏的。ls -a
-l (list):以列表的方式显示信息 ls -l

ll
ll并不是linux下一个基本的命令,它实际上是ls -l的一个别名。
cd
基本语法:
cd [参数] :change directory(功能描述:切换到指定目录)
常用参数:绝对路径和相对路径
cd ~ 或者cd:回到自己的家目录
cd .. :回到当前目录的上一级目录
mkdir
mkdir 指令用于创建目录(make directory)
基本语法:mkdir [选项] 要创建的目录
常用选项:
-p :创建多级目录


rmdir 指令
介绍:rmdir (remove directory)指令删除空目录
基本语法:rmdir [选项] 要删除的空目录
使用细节:rmdir 删除的是空目录,如果目录下有内容时无法删除的。如果需要删除非空目录,需要使用 rm -rf (remove recursion force)要删除的目录

touch 指令
介绍:touch 指令创建一个或多个空文件
基本语法:touch 文件名称


cp 指令
介绍:cp 指令拷贝文件到指定目录
基本语法:cp [选项] source dest
常用选项
-r :递归复制整个文件夹
案例1:将 /home/hello.txt 拷贝到 /home/bbb 目录下[拷贝单个文件]

案例 2: 递归复制整个文件夹

注意,强制覆盖不提示的方法:\cp

rm 指令
介绍:移除【删除】文件或目录
基本语法:rm [选项] 要删除的文件或目录
常用选项
-r :(recursive)递归删除整个文件夹
-f : (force)强制删除不提示


mv 指令
介绍:移动文件或重命名
基本语法:
mv oldNameFile newNameFile :(功能描述:重命名)
mv /temp/movefile /targetFolder :(功能描述:移动文件)

cat 指令
介绍:cat 查看文件内容,是以只读的方式打开
基本语法:cat [选项] 要查看的文件
常用选项
-n :显示行号
cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more,cat -n 文件名 | more

more 指令
介绍:more 指令是一个基于 VI 编辑器的文本过滤器, 它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键

基本语法:more 要查看的文件

less 指令
介绍:less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率
基本语法:less 要查看的文件

> 指令 和 >> 指令
介绍:> 输出重定向 : 会将原来的文件的内容覆盖; >> 追加: 不会覆盖原来文件的内容,而是追加到文件的尾部。
基本语法:
1) ls -l >文件 (功能描述:列表的内容写入文件 a.txt 中(覆盖写))

说明:ls -l > a.txt , 将 ls -l 的显示的内容覆盖写入到 a.txt 文件,如果该文件不存在,就创建该文件。
ls -al >>文件(功能描述:列表的内容追加到文件 aa.txt 的末尾)

-
cat 文件 1 > 文件 2(功能描述:将文件 1 的内容覆盖到文件 2) -
echo "内容" >> 文件
echo 指令
介绍:echo 输出内容到控制台
基本语法:echo [选项] [输出内容]

head 指令
介绍:head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容
基本语法:
head 文件: (功能描述:查看文件头 10 行内容)
head -n 5 文件 :(功能描述:查看文件前 5 行内容,5 可以是任意行数)

tail 指令
介绍:tail 用于输出文件尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容。
基本语法:
-
tail 文件 (功能描述:查看文件后 10 行内容)
-
tail -n 5 文件 (功能描述:查看文件后 5 行内容,5 可以是任意行数)
-
tail -f 文件 (功能描述:实时追踪该文档的所有更新,工作经常使用)


ln 指令
介绍:软链接也叫符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径
基本语法:ln -s [原文件或目录] [软链接名] :(功能描述:给原文件创建一个软链接)


history 指令
介绍:查看已经执行过历史命令,也可以执行历史指令
基本语法:
history :(功能描述:查看已经执行过历史命令)
history [数字]:显示最近使用过的 10 个指令。
!编号:根据历史指令的编号执行命令

9.5时间日期类
9.5.1 date 指令-显示当前日期
基本语法
- date (功能描述:显示当前时间)
- date +%Y (功能描述:显示当前年份)
- date +%m (功能描述:显示当前月份)
- date +%d (功能描述:显示当前是哪一天)
- date "+%Y-%m-%d %H:%M:%S"(功能描述:显示年月日时分秒)

9.5.2 date 指令-设置当前日期
基本语法:date -s 字符串时间

9.5.3 cal 指令
介绍:查看日历指令
基本语法:cal [选项] :(功能描述:不加选项,显示本月日历)
常用选项:cal 年份


9.6搜索查找类
9.6.1 find 指令
介绍:find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
基本语法:find [搜索范围] [选项]
选项说明:

案例 1: 按文件名:根据名称查找/home 目录下的 hello.txt 文件

案例 2:按拥有者:查找/opt 目录下,用户名称为 nobody 的文件

案例 3:查找整个 linux 系统下大于 100m 的文件(+n 大于 -n 小于 n 等于)

案例4:查询 / 目录下,所有 .txt 的文件

9.6.2 locate 指令
介绍:locate 指令可以快速定位文件路径。locate 指令利用事先建立的系统中所有文件名称及路径的locate 数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新 locate 时刻。
基本语法:locate 搜索文件
特别说明
由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库

9.6.3 grep 指令和 管道符号 |
介绍:grep 过滤查找 , 管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
基本语法:grep [选项] 查找内容 源文件
常用选项:


9.7压缩和解压类
9.7.1 gzip/gunzip 指令
介绍:gzip 用于压缩文件, gunzip 用于解压的
基本语法:
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz 文件)
gunzip 文件.gz (功能描述:解压缩文件命令)

注:当我们使用 gzip 对文件进行压缩后,不会保留原来的文件。
9.7.2 zip/unzip 指令
介绍:zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的
基本语法:
zip [选项] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip :(功能描述:解压缩文件)
zip 的常用选项:
-r:递归压缩,即压缩目录
unzip 的常用选项:
-d<目录> :指定解压后文件的存放目录


9.7.3 tar 指令
介绍:tar 指令 是打包指令,最后打包后的文件是 .tar.gz 的文件。
基本语法:tar [选项] XXX.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)
选项说明:

注:-c 和 -x 不能同时使用,一个是产生打包文件,一个是解压缩
案例 1: 压缩多个文件,将 /home/a1.txt 和 /home/a2.txt 压缩成 a.tar.gz



指定解压到的那个目录,事先要存在才能成功,否则会报错。
第 10 章 组管理和权限管理
10.1 Linux 组基本介绍
在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件都有 所有者、所在组、其它组的概念。
- 所有者
- 所在组
- 其它组
- 改变用户所在的组

10.2 文件/目录 所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
10.2.1 查看文件的所有者
- 指令:
ls -ahl - 应用实例:创建一个组 police,再创建一个用户 tom,将 tom 放在 police 组 ,然后使用 tom 来创建一个文件 ok.txt,看看情况如何


10.2.2 修改文件所有者
指令:chown 用户名 文件名

10.3 组的创建
命令:groupadd 组名
创建一个组monster,创建一个用户 fox ,并放入到 monster 组中

10.4 文件/目录 所在组
当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组
10.4.1 查看文件/目录所在组
基本指令:ls –ahl或 ll

10.4.2 修改文件所在的组
基本指令:chgrp 组名 文件名
使用 root 用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 police 组。

10.5 其它组
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组.
10.6 改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用 root 的管理权限可以改变某个用户所在的组。
改变用户所在组:usermod –g 组名 用户名
改变该用户登陆的初始目录: usermod –d 目录名 用户名

10.7权限的基本介绍
ls -l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0-9 位说明
1)第 0 位确定文件类型(d, - , l , c , b),其中d:目录,-:普通文件,l:软链接,c:字符设备(键盘,鼠标),b:块文件(硬盘)
2)第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限。---User
3)第 4-6 位确定所属组(同用户组的)拥有该文件的权限,---Group
4)第 7-9 位确定其他用户拥有该文件的权限 ---Other


10.8 rwx 权限详解
10.8.1 rwx 作用于文件
- [ r ]代表可读(read): 可以读取,查看
- [ w ]代表可写(write):
可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件. - [ x ]代表可执行(execute):可以被执行
不同的权限可用数字表示为:r=4,w=2,x=1 因此 rwx=4+2+1=7
10.8.2 rwx 作用于目录
- [ r ]代表可读(read):可以读取,ls 查看目录内容
- [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
- [ x ]代表可执行(execute):可以进入该目录
10.9文件及目录权限实际案例
如果 ls -l 中显示的内容如下:(记住)
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
10 个字符确定不同用户能对文件干什么
第一个字符代表文件类型: 文件 (-),目录(d),链接(l),其余字符每 3 个一组(rwx) 读(r) 写(w) 执行(x)
第一组 rwx : 文件拥有者的权限是读、写和执行
第二组 rw- : 与文件拥有者同一组的用户的权限是读、写但不能执行
第三组 r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行
可用数字表示为: r=4,w=2,x=1 因此 rwx=4+2+1=7

10.10 修改权限-chmod
10.10.1 基本说明:
通过 chmod 指令,可以修改文件或者目录的权限
10.10.2 第一种方式:+ 、-、= 变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)
chmod u=rwx,g=rx,o=x 文件目录名chmod o+w 文件目录名chmod a-x 文件目录名
案例1: 给 abc 文件 的所有者读写执行的权限,给所在组读执行权限, 给其它组读执行权限

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

案例3:给 abc 文件的所有用户添加读的权限

10.10.3 第二种方式:通过数字变更权限
规则:r=4 w=2 x=1 ,rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名--->相当于 chmod 751 文件目录名
例如,abc.txt 文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现:chmod 755 abc.txt
10.11 修改文件所有者-chown
10.11.1 基本介绍
chown newowner file :改变文件的所有者
chown newowner:newgroup file: 改变用户的所有者和所有组
-R 如果是目录 则使其下所有子文件或目录递归生效
- 将 abc .txt 文件的所有者修改成 tom

- 将 kkk 目录下所有的文件和目录的所有者都修改成 tom

10.12 修改文件所在组-chgrp
命令:chgrp newgroup file :改变文件的所有组
-
将 abc .txt 文件的所在组修改成 bandit (土匪)
-
将 kkk 目录下所有的文件和目录的所在组都修改成 bandit(土匪)

第 11 章 crond 任务调度
11.1原理示意图


crontab 进行 定时任务的设置
11.2 概述
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
2.个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份。
11.3 基本语法
命令:crontab [选项]
常用选项:

快速入门:
1)设置个人任务调度。执行 crontab –e 命令。
2)接着输入任务到调度文件,由于任务比较简单,不需要额外编写shell脚本,直接在crontab里面编写指令即可
如:*/1 * * * * ls –l /etc/ > /tmp/to.txt,每小时的每分钟执行 ls –l /etc/ > /tmp/to.txt

3)保存退出后自动执行程序。
参数细节说明

5个占位符刚好对应 分时天月星期
特殊符号的说明

特定时间执行任务案例

案例 1:每隔 1 分钟,就将当前的日期信息,追加到 /home/temp/mydate 文件
- 先编写一个文件 /home/temp/mytask1.sh
date >> /tmp/mydate - 给 mytask1.sh 一个可以执行权限
chmod 744 /home/temp/mytask1.sh - crontab -e
- */1 * * * * /home/temp/mytask1.sh
- 成功


案例 2:每隔 1 分钟, 将当前日期和日历都追加到 /home/temp/mycal 文件中
- 先编写一个文件 /home/mytask2.sh
date >> /tmp/mycal
cal >> /tmp/mycal - 给 mytask2.sh 一个可以执行权限
chmod 744 /home/temp/mytask2.sh - crontab -e
- */1 * * * * /home/temp/mytask2.sh
- 成功



案例 3: 每天凌晨 2:00 将 mysql 数据库 testdb ,备份到文件中mydb.bak。
- 先编写一个文件 /home/mytask3.sh
/usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak - 给 mytask3.sh 一个可以执行权限
chmod 744 /home/mytask3.sh
3) crontab -e
4) 0 2 * * * /home/mytask3.sh
5) 成功
11.4crond 相关指令:
conrtab –r:终止任务调度。
2)crontab –l:列出当前有那些任务调度service crond restart[重启任务调度]
第 12 章 Linux 磁盘分区、挂载
12.1 分区基础知识
12.1.1 分区的方式:
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
12.1.2 windows 下的磁盘分区

12.2 Linux 分区
12.2.1 原理介绍
1)Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一部分。
2)Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
3)示意图

12.2.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 硬盘的表示方法一样。
12.2.3 使用 lsblk 指令查看当前系统的分区情况


其他例子

2.3 挂载的经典案例
需求是给我们的 Linux 系统增加一个新的硬盘,并且挂载到/home/newdisk

12.3.1 如何增加一块硬盘
1)虚拟机添加硬盘
2)分区 fdisk /dev/sdb
3)格式化 mkfs -t ext4 /dev/sdb1
4)挂载 先创建一个 /home/newdisk , 挂载 mount /dev/sdb1 /home/newdisk
5)设置可以自动挂载(永久挂载,当你重启系统,仍然可以挂载到 /home/newdisk) 。
12.4 具体的操作步骤整理
12.4.1 虚拟机增加硬盘步骤 1
在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,至到完成。然后重启系统(才能识别)!


12.4.2 虚拟机增加硬盘步骤 2
1)分区命令 fdisk /dev/sdb
相关选项
•m 显示命令列表
•p 显示磁盘分区 同 fdisk –l
•n 新增分区
•d 删除分区
•w 写入并退出
2)输入m获取帮助,输入 n 新增分区,然后选择 p 分区类型为主分区。两次回车默认剩余全部空间。最后输入 w 写入分区并退出


12.4.3 虚拟机增加硬盘步骤 3
格式化磁盘:mkfs -t ext4 /dev/sdb1
其中 ext4 是分区类型

12.4.4 虚拟机增加硬盘步骤 4
挂载/卸载:将一个分区与一个目录联系起来,
挂载命令:mount 设备名称 挂载目录,例如: mount /dev/sdb1 /newdisk
卸载命令:umount 设备名称 或者 挂载目录,例如: umount /dev/sdb1 或者 umount /newdisk


12.4.5 虚拟机增加硬盘步骤 5
永久挂载: 通过修改/etc/fstab 实现挂载。
命令:vim /etc/fstab

添加完成后 执行 mount –a 即刻生效

12.5 磁盘情况查询
12.5.1 查询系统整体磁盘使用情况
基本语法:df -h(disk free)
查询系统整体磁盘使用情况

12.5.2 查询指定目录的磁盘占用情况
基本语法:du -h /目录:(disk use space)查询指定目录的磁盘占用情况,默认为当前目录
常用选项:
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
例如,查询 /opt 目录的磁盘占用情况,深度为 1

12.6 磁盘情况-工作实用指令
- 统计/home 文件夹下文件的个数

- 统计/home 文件夹下目录的个数

- 统计/home 文件夹下文件的个数,包括子文件夹里的

- 统计文件夹下目录的个数,包括子文件夹里的

- 以树状显示目录结构

第 13 章 网络配置
13.1 Linux 网络配置原理图(含虚拟机)
目前我们的网络配置采用的是 NAT

13.2 查看网络 IP 和网关
13.2.1 查看虚拟网络编辑器

13.2.2 修改 ip 地址(修改虚拟网络的 ip)

13.2.3 查看网关

13.2.4 查看 windows 环境的中 VMnet8 网络配置 (ipconfig 指令)
-
使用 ipconfig 查看

-
界面查看

13.3 ping 测试主机之间网络连通
基本语法:ping 目的主机 (功能描述:测试当前服务器是否可以连接目的主机)

13.4 linux 网络环境配置
13.4.1 第一种方法(自动获取)

缺点: linux 启动后会自动获取 IP,缺点是每次自动获取的 ip 地址可能不一样。这个不适用于做服务器,因为我们的服务器的 ip 需要时固定的。
13.4.2 第二种方法(指定固定的 ip)
直 接 修 改 配 置 文 件 来 指 定 IP, 并 可 以 连 接 到 外 网 ( 程 序 员 推 荐 ) , 编 辑 vi /etc/sysconfig/network-scripts/ifcfg-eth0
注意:centos 6是ifcfg-eth0文件,centos 7是ifcfg-ens33文件
要求:将 ip 地址配置为静态的,ip 地址为 192.168.17.130


修改后,一定要 重启服务
service network restart- reboot 重启系统
ifcfg-eth0文件说明

13.4.3第三种方法(指定固定的 ip)
不建议在这里改,有些机器是没有图形界面的,而且在这里很容易出现下面的不兼容问题

不兼容问题:

方法1:
mv /var/lib/NetworkManager /var/lib/NetworkManager.bak
然后重启即可
如果方法1行不通,用方法2
chkconfig network off
chkconfig network on
service NetworkManager stop
service NetworkManager start
第 14 章 进程管理
14.1 进程的基本介绍
1)在 LINUX 中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个 ID 号。
2)每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如 www 服务器。
3)每个进程都可能以两种方式存在的,前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
4)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
14.2 显示系统执行的进程
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。
14.2.1 查看进程占用资源的情况
查看进程占用资源的情况:ps -aux
比如我看看有没有 sshd 服务,ps –aux|grep ssh


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

指标说明:

查看sshd进程的父进程

14.3 终止进程 kill 和 killall
介绍:若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用 kill 命令来完成此项任务。
基本语法:
kill [选项] 进程号:(功能描述:通过进程号杀死进程)
killall 进程名称:(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
常用选项:
-9:表示强迫进程立即停止
案例 1:踢掉某个非法登录用户

案例 2: 终止远程登录服务 sshd, 在适当时候再次重启 sshd 服务
重启命令:(centos6)service sshd restart
:(centos7)systemctl restart sshd.service

案例 3: 终止多个 gedit 编辑器 【killall , 通过进程名称来终止进程】

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

14.4 查看进程树 pstree
基本语法:pstree [选项] ,可以更加直观的来看进程信息
常用选项:
-p :显示进程的 PID
-u :显示进程的所属用户
案例 1:请以树状的形式显示进程的 pid

案例 2:请以树状的形式显示进程的用户 id

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

14.5.2 service 管理指令
service 服务名 [start | stop | restart | reload | status]
注:在 CentOS7.0 后 不再使用 service ,而是 systemctl
案例1: 查看当前防火墙的状况,关闭防火墙和重启防火墙。

centos6 关闭、开启防火墙、查看防火墙状态
service iptavles stop
service iptavles start
service iptavles status
centos 7 关闭、开启防火墙命令、查看防火墙状态
systemctl stop iptables.service
systemctl start iptables.service
systemctl status iptables.service

这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。如果希望设置某个服务自启动或关闭永久生效,要使用 chkconfig 指令
14.5.3 查看服务名
方式 1:使用 setup -> 系统服务 就可以看到。

方式 2: /etc/init.d/服务名称

14.5.4 服务的运行级别(runlevel):
查看或者修改默认级别: vi /etc/inittab
Linux 系统有 7 种运行级别(runlevel):常用的是级别 3 和 5
•运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
•运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆
•运行级别 2:多用户状态(没有 NFS),不支持网络
•运行级别 3:完全的多用户状态(有 NFS),登陆后进入控制台命令行模式
•运行级别 4:系统未使用,保留
•运行级别 5:X11 控制台,登陆后进入图形 GUI 模式
•运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动
14.5.5 开机的流程说明开机的流程说明

14.5.6 chkconfig 指令
介绍:通过 chkconfig 命令可以给每个服务在各个运行级别设置自启动/关闭
基本语法:
chkconfig --list:查看服务
chkconfig --list|grep xxx:查看服务
chkconfig --level [0 1 2 3 4 5 6] 服务名 on/off :修改服务在各个运行级别的自启动/关闭



请将 sshd 服务在运行级别为 5 的情况下,不要自启动。

注:chkconfig 重新设置服务后自启动或关闭,需要重启机器 reboot 才能生效.
应用实例:
- 案例 1: 请显示当前系统所有服务的各个运行级别的运行状态
bash> chkconfig --list - 案例 2 :请查看 sshd 服务的运行状态
bash> service sshd status - 案例 3: 将 sshd 服务在运行级别 5 下设置为不自动启动,看看有什么效果?
bash> chkconfig --level 5 sshd off - 案例 4: 当运行级别为 5 时,关闭防火墙。
bash> chkconfig --level 5 iptables off - 案例 5: 在所有运行级别下,关闭防火墙
bash> chkconfig iptables off - 案例 6: 在所有运行级别下,开启防火墙
bash> chkconfig iptables on
14.6 动态监控进程 top
介绍:top 与 ps 命令很相似。它们都用来显示正在执行的进程。Top 与 ps 最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程。
基本语法:top [选项]
选项说明:

交互操作说明

案例 1.监视特定用户
top:输入此命令,按回车键,查看执行的进程。
u:然后输入“u”回车,再输入用户名,即可

案例 2:终止指定的进程。
top:输入此命令,按回车键,查看执行的进程。
k:然后输入“k”回车,再输入要结束的进程 ID 号

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

14.7查看系统网络情况 netstat(重要)
基本语法:netstat [选项],常用命令:netstat -anp
选项说明:
-an 按一定顺序排列输出
-p 显示哪个进程在调用

第 15 章 RPM 和 YUM
15.1 rpm 包的管理
15.1.1 介绍
一种用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中。它生成具有.RPM扩展名的文件。RPM 是 RedHat Package Manager (RedHat 软件包管理工具)的缩写,类似 windows的 setup.exe,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。Linux 的分发版本都有采用(suse,redhat, centos 等等),可以算是公认的行业标准了。
15.1.2 rpm 包的简单查询指令
查询已安装的 rpm 列表: rpm –qa|grep xx
例如,请查询看一下当前的 Linux 有没有安装 firefox .

15.1.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 表示通用。。
15.1.4 rpm 包的其它查询指令
rpm -qa :(query all)查询所安装的所有 rpm 软件包
rpm -qa | more :[分页显示]
rpm -qa | grep X: [rpm -qa | grep firefox ]
rpm -q 软件包名 :查询软件包是否安装
rpm -qi 软件包名 :(query information)查询软件包信息
rpm -ql 软件包名 :查询软件包中的文件
rpm -qf 文件全路径名: 查询文件所属的软件包



15.1.5 卸载 rpm 包
基本语法:rpm -e rpm包的名称,(-e erase)
细节问题:
-
如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。如: $ rpm -e foo
-
如果我们就是要删除 foo 这个 rpm 包,可以
增加参数 --nodeps ,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行,如: rpm -e --nodeps foo

15.1.6 安装 rpm 包
基本语法:rpm -ivh RPM 包全路径名称
参数说明
i=install 安装
v=verbose 提示
h=hash 进度条
- 演示安装 firefox 浏览器
步骤先找到 firefox 的安装 rpm 包,你需要挂载上我们安装 centos 的 iso 文件,然后到/media/下去找 rpm 找。
cp firefox-45.0.1-1.el6.centos.x86_64.rpm /opt/

缺点:需要收到安装其他的依赖包,例如,A软件包的运行需要依赖于B的软件包环境,那么需要先手动安装B再安装A
15.2 yum
15.2.1 介绍:
Yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用 yum 的前提是可以联网。

15.2.2 yum 的基本指令
查询 yum 服务器是否有需要安装的软件:yum list|grep xx 软件名
安装指定的 yum 包:yum install xxx
15.2.3 yum 应用实例
案例:请使用 yum 的方式来安装 firefox
-
先查看一下 firefox rpm 在 yum 服务器有没有:
yum list | grep firefox -
安装:
yum install -y firefox(-y :当安装过程提示选择全部为"yes",-q:不显示安装的过程)
默认安装最新版本的软件。
3)卸载:yum remove 软件名
4)显示已经安装的软件包:yum list installed
5)查找可以安装的软件包 (以 tomcat 为例):yum list tomcat
6)列出软件包的依赖 (以 tomcat 为例):yum deplist tomcat

第 16 章 搭建 JavaEE 环境
16.1 概述
16.1.1 示意图

如果需要在 Linux 下进行 JavaEE 的开发,我们需要安装如下软件

下载地址:
ORACLE官网地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
16.2 安装 JDK
- 解压缩到 /opt


- 配置环境变量的配置文件,配置文件都是放在/etc/profile文件中,
vim /etc/profile

- 刷新配置文件,使环境变量才能生效。
source /etc/profile

- 在任何目录下就可以使用 java 和 javac


5)测试是否安装成功
编写一个简单的 Hello.java 输出"hello,world!"


16.3 安装 tomcat
16.3.1 步骤 :
- 解压缩到/opt

- 启动 tomcat ./startup.sh(先进入到 tomcat 的 bin 目录),使用 Linux 本地的浏览是可以访问到 tomcat

- 开放端口 8080 ,这样外网才能访问到 tomcat

4)重启防火墙

5)测试是否安装成功
在 windows、Linux 下 访问 http://linuxip:8080

16.4 Eclipse 的安装
- 解压缩到/opt

- 启动 eclipse,配置 jre 和 server
启动方法 1: 打开图形化界面,找到eclipse,直接运行

启动方式 2: 进入到 eclipse 解压后的文件夹,然后执行 ./eclipse 即可

- 编写代码,并测试成功!

16.5 mysql 的安装和配置
通过源代码安装mysql 5.6.14版本
1)卸载旧版本
使用下面的命令检查是否安装有MySQL Server
rpm -qa | grep mysql
whereis mysql
find / -name mysql
有的话通过下面的命令来卸载掉
2)安装MySQL
安装编译代码需要的环境:yum -y install make gcc-c++ cmake bison-devel ncurses-devel
解压:tar xvf mysql-5.6.14.tar.gz
进入mysql目录cd mysql-5.6.14
编译安装[源码=》编译]
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
编译并安装:make && make install
3)配置MySQL
设置权限:
groupadd mysql
useradd -g mysql mysql
修改/usr/local/mysql权限:chown -R mysql:mysql /usr/local/mysql
4)初始化配置
进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表:
cd /usr/local/mysql
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!但是,在CentOS 6.8版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。
修改名称,防止干扰:mv /etc/my.cnf /etc/my.cnf.bak
5)启动MySQL
添加服务,拷贝服务脚本到init.d目录,并设置开机启动 [注意在 /usr/local/mysql 下执行]
cp support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
service mysql start --启动MySQL
修改密码
cd /usr/local/mysql/bin
./mysql -uroot
mysql> SET PASSWORD = PASSWORD('root');
上面的方法试了好久还是失败,后来我根据网上一张帖子(https://blog.csdn.net/qq_45408390/article/details/119487953)安装了mysql7的版本
第 17 章 Shell 编程
17.1 为什么要学习 Shell 编程
1)Linux 运维工程师在进行服务器集群管理时,需要编写 Shell 程序来进行服务器管理。
2)对于 JavaEE 和 Python 程序员来说,工作的需要,你的老大会要求你编写一些 Shell 脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。
3)对于大数据程序员来说,需要编写 Shell 程序来管理集群。
17.2 Shell 是什么
画一个示意图:

Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序 的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序.
17.3 Shell 脚本的执行方式
Shell脚本格式要求
-
脚本以#!/bin/bash 开头
-
脚本需要有可执行权限

脚本的常用执行方式
方式 1(输入脚本的 绝对路径或 相对路径)
1)首先要赋予 helloworld.sh 脚本的+x 权限
2)执行脚本

方式 2(sh+脚本),不推荐
说明:不用赋予脚本+x 权限,直接执行即可


17.4 shell 的变量
17.4.1 Shell 的变量的介绍
1)Linux Shell 中的变量分为, 系统变量和 用户自定义变量。
2)系统变量: $HOME、$PWD、$SHELL、$USER 等等,比如: echo $HOME 等等..
3)显示当前 shell 中所有变量:set



17.4.2 shell 变量的定义
基本语法
1)定义变量:变量=值
2)撤销变量:unset 变量
3)声明静态变量:readonly 变量,注意:不能 unset
4)可把变量提升为全局环境变量,可供其他 shell 程序使用


17.4.3 定义变量的规则
-
变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
-
等号两侧不能有空格(这和java的语法不一样)
-
变量名称一般习惯为大写
-
将命令的返回值赋给变量(重点)
1)A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量 A
2)A=$(ls -la) 等价于反引号

17.4 设置环境变量
基本语法
- export 变量名=变量值 (功能描述:将
shell 变量输出为环境变量) - source 配置文件 (功能描述:
让修改后的配置信息立即生效) - echo $变量名 (功能描述:查询环境变量的值)

- 在/etc/profile 文件中定义 TOMCAT_HOME 环境变量

- 查看环境变量 TOMCAT_HOME 的值

- 在另外一个 shell 程序中使用 TOMCAT_HOME

注意:在输出 TOMCAT_HOME 环境变量前,需要让其生效: source /etc/profile
17.5 位置参数变量
介绍:
当我们执行一个 shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量,比如 : ./myshell.sh 100 200 , 这个就是一个执行 shell 的命令行,可以在 myshell 脚本中获取到参数信息
基本语法:

案例:

17.6 预定义变量
基本介绍:
就是 shell 设计者事先已经定义好的变量,可以直接在 shell 脚本中使用
基本语法:


17.7 运算符
基本语法
1) $((运算式)) 或 $[运算式]
2) expr m + n
注意 带有expr关键字的运算符间要有空格
3) expr m - n
4) expr \*, /, % 乘,除,取余
1)计算(2+3)*4 的值

- $[运算式]


- expr

17.8 条件判断
基本语法:
[ condition ](注意 condition 前后要有空格),非空返回 true,可使用$?验证(0 为 true,>1 为 false)
案例:
[ atguigu ] 返回 true
[] 返回 false
[ condition ] && echo OK || echo notok 条件满足,执行后面的语句
常用判断条件:
1)两个整数的比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
2)字符串的比较
= 字符串比较
按照文件权限进行判断
-r 有读的权限 [ -r 文件 ]
-w 有写的权限
-x 有执行的权限
4)按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并是一个目录
案例
判断俩个字符串是否相等


17.9流程控制
17.9.1 if 判断
基本语法
if [ 条件判断式 ];then
程序
fi
-----------------或者-------------------------
if [ 条件判断式 ]
then
程序
elif [条件判断式]
then
程序
fi
注意事项:(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格 (2) 推荐使用第二种方式
案例:请编写一个 shell 程序,如果输入的参数,大于等于 60,则输出 "及格了",如果小于 60,则输出 "不及格"

17.9.2 case 语句
基本语法
case $变量名 in
"值 1")
如果变量的值等于值 1,则执行程序 1
;;
"值 2")
如果变量的值等于值 2,则执行程序 2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
案例 1 :当命令行参数是 1 时,输出 "周一", 是 2 时,就输出"周二", 其它情况输出 "other"

17.9.3 for 循环
基本语法1
for 变量 in 值1 值2 值3 …
do
程序
done
基本语法 2
for (( 初始值; 循环控制条件;化 变量变化 ))
do
程序
done
案例 1 :打印命令行输入的参数 【会使用到$* $@】

案例 2 :从 1 加到 100 的值输出显示

17.9.4 while 循环
基本语法
while [ 条件判断式 ]
do
程序
done
案例 1 :从命令行输入一个数 n,统计从 1+..+ n 的值是多少?

17.10 read 读取控制台输入
基本语法:read(选项)(参数)
选项:
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。。
参数:
变量:指定读取值的变量名
案例 1:读取控制台输入一个 num 值
案例 2:读取控制台输入一个 num 值,在 10 秒内输入。

17.11函数
函数介绍
shell 编程和其它编程语言一样,有系统函数,也可以自定义函数。系统函数中,我们这里就介绍两个。
系统函数
basename 基本语法
功能:返回完整路径最后 / 的部分,常用于获取文件名
命令:basename [string] [suffix] (功能描述:basename 命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。
suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 或 string 中的 suffix 去掉。
dirname 基本语法
功能:返回完整路径最后 / 的前面的部分,常用于返回路径部分
命令:dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))


自定义函数
基本语法
[ function ] funname[()]
{
Action;
[return int;]
}
调用直接写函数名:funname [值]
案例 1:计算输入两个参数的和(read), getSum

17.12 数据库备份
需求分析
1)每天凌晨 2:10 备份 数据库 atguiguDB 到 /data/backup/db
2)备份开始和备份结束能够给出相应的提示信息
3)备份后的文件要求以备份时间为文件名,并打包成 .tar.gz 的形式,比如:2018-03-12_230201.tar.gz
4) 在备份的同时,检查是否有 10 天前备份的数据库文件,如果有就将其删除。
编写一个 shell 脚本。
思路分析:

代码实现:


第 18 章 开发平台 Ubuntu
18.1 Ubuntu 的介绍
Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的开源 GNU/Linux 操作系统,Ubuntu是基于 GNU/Linux,支持 x86、amd64(即 x64)和 ppc 架构,由全球化的专业开发团队(Canonical Ltd)打造的。
专业的 Python 开发者一般会选择 Ubuntu 这款 Linux 系统作为生产平台.
温馨提示:
Ubuntu 和 Centos 都是基于 GNU/Linux 内核的,因此基本使用和 Centos 是几乎一样的,它们的各种指令可以通用,同学们在学习和使用Ubuntu的过程中,会发现各种操作指令在前面学习CentOS都使用过。只是界面和预安装的软件有所差别。
Ubuntu 下载地址:http://cn.ubuntu.com/download/

18.2 Ubuntu 的安装
18.2.1 查看电脑是否开启虚拟化

18.2.2 新建虚拟机

18.2.3 新建虚拟机向导


18.2.4 填写ubuntu系统信息

18.2.5 设置安装ubuntu的位置和虚拟机的名称

18.2.6 设置磁盘容量

18.2.7 处理器配置,看自己是否是双核、多核

18.2.8 设置内存为2GB


18.2.9 网络设置NAT

点击完成

18.2.10 联网情况下自动安装一些工具






18.2.11 自动启动,输入账号密码就可登录

18.2.12 查看python环境

18.2.13 设置中文
默认安装的 ubuntu 中只有英文语言,因此是不能显示汉字的。要正确显示汉字,需要安装中文语言包。
安装中文支持步骤:
1.单击左侧图标栏打开 System Settings(系统设置)菜单,点击打开 Language Support(语言支持)选项卡。
2.点击 Install / Remove Languages,在弹出的选项卡中下拉找到 Chinese(Simplified),即中文简体,在后面的选项框中打勾。然后点击 Apply Changes 提交,系统会自动联网下载中文语言包。(保证ubuntu 是联网的)。
3.这时“汉语(中国)”在最后一位因为当前第一位是”English”,所以默认显示都是英文。我们如果希望默认显示用中文,则应该将“汉语(中国)”设置为第一位。设置方法是拖动,鼠标单击“汉语(中国)”,当底色变化(表示选中了)后,按住鼠标左键不松手,向上拖动放置到第一位。
4.设置后不会即刻生效,需要下一次登录时才会生效。

18.14 中国化的ubuntu系统优麒麟







近些年来linux在嵌入式领域的应用得到了飞速的提高
l**inux运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百KB等特点\,使其近些年来在嵌入式领域的应用得到非常大的提高
主要应用:机顶盒、数字电视、网络电话、程控交换机、手机、PDA、智能家居、智能硬件等都是其应用领域,得到了摩托罗拉、三星、NEC、Google等公司的大力推广
18.3 Ubuntu 的 roo 用户
18.3.1 介绍
安装 ubuntu 成功后,都是普通用户权限,并没有最高 root 权限,如果需要使用 root 权限的时候,通常都会在命令前面加上 sudo 。有的时候感觉很麻烦。
我们一般使用su命令来直接切换到root用户的,但是如果没有给root设置初始密码,就会抛出 su :
Authentication failure 这样的问题。所以,我们只要给 root 用户设置一个初始密码就好了。
18.3.2 给 root 用户设置密码并使用
- 输入 sudo passwd 命令,输入一般用户密码并设定 root 用户密码。
- 设定 root 密码成功后,输入 su 命令,并输入刚才设定的 root 密码,就可以切换成 root 了。提示符$代表一般用户,提示符#代表 root 用户。
- 输入 exit 命令,退出 root 并返回一般用户
- 以后就可以使用 root 用户了

18.4 Ubuntu 下开发 Python
18.4.1 说明
安装好 Ubuntu 后,默认就已经安装好 Python 的开发环境[Python2.7 和 Python3.5]。

18.4.2 在 Ubuntu 下开发一个 Python 程序

第 19 章 apt 软件管理和远程登录
19.1 apt 介绍
apt 是 Advanced Packaging Tool 的简称,是一款安装包管理工具。在 Ubuntu 下,我们可以使用 apt 命令可用于软件包的安装、删除、清理等,类似于 Windows 中的软件管理工具。
unbuntu 软件管理的原理示意图:

19.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 下载该包的源代码
19.3 更新 Ubuntu 软件下载地址
19.3.1 原理示意图

19.3.2 寻找国内镜像源
所谓的镜像源:可以理解为提供下载软件的地方,比如 Android 手机上可以下载软件的安卓市场;iOS 手机上可以下载软件的 AppStore
清华镜像源:https://mirrors.tuna.tsinghua.edu.cn/


19.3.3 修改 Ubuntu 默认的源地址
命令:sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup:备份
echo ' ' > /etc/apt/sources.list:清空文件里面的内容
sudo apt-get update:更新源服务器列表


19.4 使用 ssh 远程登录 Ubuntu
19.4.1 ssh 介绍
SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。几乎所有 UNIX 平台—包括 HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行 SSH。
使用 SSH 服务,需要安装相应的服务器和客户端。客户端和服务器的关系:如果,A 机器想被 B机器远程控制,那么,A 机器需要安装 SSH 服务器,B 机器需要安装 SSH 客户端。和 CentOS 不一样,Ubuntu 默认没有安装 SSHD 服务,因此,我们需要手动安装SSHDf服务才能进行远程登录。
19.4.2 原理示意图:

19.4.3 安装 SSH 和启用
sudo apt-get install openssh-server:执行指令后,在当前这台 Linux 上就安装了 SSH 服务端和客户端。
service sshd restart:执行指令后,就启动了 sshd 服务。会监听端口 22


在 Windows 使用 XShell6/XFTP6 登录 Ubuntu

9.4.4 从 linux 系统客户机远程登陆 linux 系统服务机
首先,我们需要在 linux 的系统客户机也要安装 openssh-server
基本语法:ssh 用户名@IP
例如:ssh atguigu@192.168.188.131
使用 ssh 访问,如访问出现错误。可查看是否有该文件 ~/.ssh/known_ssh 尝试删除该文件解决。
登出命令:exit 或者 logout
浙公网安备 33010602011771号