Linux
注:本文原稿为尚硅谷的LInux大数据课程的PDF版本,经过部分修改后成此文
第 1 章 Linux开门见山
本文章Linux 的内容介绍
Linux 的学习方向(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 章 基础篇 VM 和 Linux 系统(CentOS)安装
VM 和 CentOS 的关系
CentOS 安装技术难点-网络配置三种方式理解(安装时采用NAT模式)
Centos 终端的使用和联网
在 centos 的可以联网,可以和外部的 ip 联通
centos联网后,会简单的动态的分配ip(后面我们要学习固定分配 ip)
- 未联网前,没有ip分配
- 联网后,动态分配一个ip
第 3 章 linux 的目录结构
- linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。
- 记住一句经典的话:。在 Linux 世界里,一切皆文件(即使是一个硬件设备,也是使用文本来标志)
具体目录结构
对 linux 目录结构的小结
- 在 linux 中,目录结构 有一个 根目录 / ,其他的目录都是在 / 目录分支。
- 在 linux 中,有很多目录,是安装后,有自动有目录,每个目录都会存放相应的内容,不要去修改.
- 在 linux 中,所有的设备都可以通过文件来体现(字符设备文件[比如键盘,鼠标],块设备文件[硬 盘])
- 在学习 linux 时,要尽快的在脑海中,形成一个 目录树
第 4 章 远程登录到 Linux 服务器
为什么需要远程登录 linux
说明: 公司开发时候, 具体的情况是这样的
- linux 服务器是开发小组共享的
- 正式上线的项目是运行在公网的
- 因此程序员需要远程登录到 centos 进行项目管理或者开发
- 远程登录客户端有 Xshell5, Xftp5 , 我们学习使用 Xshell5 和 Xftp , 其它的远程工具大同 小异
远程登录 Linux-Xshell5(Xshell 是目前最好的远程登录到 Linux 操作的软件)
特别说明:
如果希望安装好 XShell 5 就可以远程访问 Linux 系统的话,需要有一个前提,就是 Linux 启用了 SSHD 服务,该服务会监听 22 号端口。
XShell5 的关键配置
XShel5 远程登录到 Linux 后,就可以使用指令来操作 Linux 系统
远程上传下载文件 Xftp
Xftp5 的配置和使用
如何解决 XFTP5 中文乱码的问题
SecureCRT 的安装和使用(也是一款远程登录的软件)
安装: 绿色安装版,拷贝到指定目录(程序员决定)即可使用.
- 步骤 1: 安装好后,就启动 securecrt:
- 步骤 2:配置好后,就点击链接,然后输入密码即可.
第 5 章 Vi 和 Vim 编辑器
Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,需要掌握它的基本使用即可
vi 和 vim 三种模式的相互转化图
快捷键的使用
- 拷贝当前行 yy , 拷贝当前行向下的 5 行 5yy,并粘贴(p)
- 删除当前行 dd , 删除当前行向下的 5 行 5dd
- 在文件中查找某个单词 [命令行下 /关键字 , 回车 查找 , 输入 n 就是查找下一个 ],查询 hello.
- 设置文件的行号,取消文件的行号.[命令行下 : set nu 和 :set nonu]
vim 和 vi 的快捷键键盘一览图
第 6 章 开机、重启和用户登录注销
关机&重启命令
常见的指令如下
shutdown -h now [立刻关机]
shutdown -h 1 "1 分钟,关机." [1 分钟后,关机]
shutdown -r now [立刻重启]
shutdown -r 2 "2 分钟后,重启"
halt 【立刻关机】
reboot 【立刻重启】
注意细节:
不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中
用户登录和注销
- 登录时尽量少用 root 帐号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利 用普通用户登录,登录后再用”su - 用户名’命令来切换成系统管理员身份
- 在提示符下输入 logout 即可注销用户
注意:logout 注销指令在图形运行级别无效,在 运行级别 3 下有效,运行级别这个概念,后面给大家介绍
第 7 章 用户管理、用户组
用户管理(添加/删除用户:useradd/userdel 用户名、查询用户信息指令:id 用户名、切换用户:su – 切换用户名)
添加用户:useradd 用户名
案例 1:添加一个用户 xiaoming
使用细节
- 当创建用户成功后,会自动的创建和用户同名的家目录 【/home/xiaoming】
- 也可以通过 useradd -d 指定目录 新的用户名 jack,给新创建的用户指定家目录
删除用户:userdel 用户名
查询用户信息指令:id 用户名
案例 1:请查询 root 信息
切换用户:su – 切换用户名
细节说明
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
- 当需要返回到原来用户时,使用 exit 指令
- 如果 su – 没有带用户名,则默认切换到 root 用户
用户组(groupadd、groupdel、useradd -g、usermod -g )
增加组:groupadd 组名
删除组:groupdel 组名
增加用户时直接加上组:useradd -g 用户组 用户名
修改用户的组:usermod -g 用户组 用户名
用户和组的相关文件(/etc/passwd、/etc/shadow、/etc/group)
/etc/shadow 文件
-
口令的配置文件
-
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活
动时间:失效时间:保留 [图]
/etc/group 文件
- 组(group)的配置文件,记录 Linux 包含的组的信息
- 每行含义:组名:口令:组标识号:组内用户列表
/etc/passwd 文件 - 用户(user)的配置文件,
- 记录用户的各种信息 每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
第 8 章 实用指令
指定运行级别
运行级别说明:
0 :关机
1 :单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是 3 和 5 ,要修改默认的运行级别可改文件 /etc/inittab 的 id:5:initdefault:这一行中的数字
man [命令或配置文件](功能描述:获得帮助信息)
help 命令 (功能描述:获得 shell 内置命令的帮助信息)
pwd (功能描述:显示当前工作目录的绝对路径)
ls [选项] [目录或是文件]
常用选项
- -a :显示当前目录所有的文件和目录,包括隐藏的。
- -l :以列表的方式显示信息
应用实例
- 案例:查看当前目录的所有内容信息
cd [参数] (功能描述:切换到指定目录)
- cd ~ 或者 cd :回到自己的家目录
- cd … 回到当前目录的上一级目录
mkdir [选项] 要创建的目录
- 常用选项 -p :创建多级目录
rmdir [选项] 要删除的空目录
rm -rf 要删除的非空目录
touch 指令创建空文件:touch 文件名称
cp 指令拷贝文件到指定目录:cp [选项] source dest
- 常用选项 -r :递归复制整个文件夹
案例 1: 将 /home/aaa.txt 拷贝到 /home/bbb 目录下[拷贝单个文件]
案例 2: 递归复制整个文件夹,举例 将/home/test 整个目录拷贝到 /home/zwj 目录
- 强制覆盖不提示的方法:\cp
第 9 章 实操篇 组管理和权限管理
在 linux 中的每个用户必须属于一个组,不能独立于组外。
在 linux 中每个文件 有所有者、所在组、其它组的概念
01:查看、修改文件的所有者(ls –ahl、chown 用户名 文件名)
-
应用实例 :创建一个组 police,再创建一个用户 tom,将 tom 放在 police 组 ,然后使用 tom 来创建一个文件 ok.txt,看看情况如何
-
要求:使用 root 创建一个文件 apple.txt ,然后将其所有者修改成 tom
02:改变用户、修改文件所在的组(usermod –g 组名 用户名、chgrp 组名 文件名)
- 使用 root 用户创建文件 orange.txt ,看看当前这个文件属于哪个组【root】,然后将这个文件所在组,
修改到 police 组。
chgrp police orange.txt
03:权限的基本介绍
04:rwx 权限详解(rwx :可读可写可执行)
注意:[ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该 文件所在的目录有写权限,才能删除该文件.
05:修改权限-chmod
第一种方式:+ 、-、= 变更权限
chmod u=__ ,g= ,o= 文件目录名,chmod o+ 文件目录名,chmod a-__ 文件目录名
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)
- chmod u=rwx,g=rx,o=x 文件目录名
- chmod o+w 文件目录名
- chmod a-x 文件目录名
第二种方式:通过数字变更权限(规则:r=4 w=2 x=1 ,rwx=4+2+1=7)
06:修改文件所有者-chown(chown newowner file)
- -R 如果是目录 则使其下所有子文件或目录递归生效
举例:请将 /home/kkk 目录下所有的文件和目录的所有者都修改成 tom 首选我们应该使用 root
07:修改文件所在组-chgrp(chgrp newgroup file/目录)
第 10 章 实操篇 crond 任务调度(指系统在某个时间执行的特定的命令或程序)
原理示意图
基本语法(语法:crontab [-e,-l,-r],设置任务调度文件:/etc/crontab)
未完待续。。。。。。。
第 11 章 Linux 磁盘分区、挂载
分区的方式(mbr 、gtp分区知道即可)
windows 下的磁盘分区
LINUX硬盘、分区理解
- Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘
对于 SCSI 硬盘则标识为“sdx~”,SCSI 硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE 硬盘的表示方法一样。sdb1 [表示第 2 块 scsi 硬盘的第 1 个分区]
查看所有设备(光驱 /media,u 盘, 硬盘)挂载情况(lsblk 或者 lsblk -f)
如何增加一块硬盘(虚拟机添加硬盘,分区,格式化磁盘,挂载,设置可以自动挂载)
**1:虚拟机添加硬盘 **
在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只 有选择磁盘大小的地方需要修改,至到完成。然后重启系统(才能识别)!
2:分区
添加虚拟硬盘后,直接lsblk -f 发现并没有发现所加的磁盘空间,需要重启后才会显示
重启后:
分区命令 fdisk /dev/sdb
输入m
- m 显示命令列表
- p 显示磁盘分区 同 fdisk
- n 新增分区 •d 删除分区
- w 写入并退出
说明: 开始分区后输入 n,新增分区,然后选择 p ,分区类型为主分区,然后自己选择主分区第几个。后两次回车默认剩余全部空间。最后输入 w 写入分区并退出,若不保存退出输入 q
分好区后查看
3:格式化磁盘
分区命令:mkfs -t ext4 /dev/sdb1
其中 ext4 是分区类型
格式化成功
4:挂载: 将一个分区与一个目录联系起来
- 挂载:mount 设备名称 挂载目录
- 注意:解挂:umount 设备名称 或者 挂载目录
例如: umount /dev/sdb1 或者 umount /newdisk
上面的方式,只是临时生效,当你重启系统,挂载的关系没有, 配置 linux 的分区表,实现启动时,自动挂载
5:设置可以自动挂载
vim /etc/fstab
添加完成后 执行 mount –a 即刻生效
后续重启,就会自动挂载
磁盘情况查询
查询系统整体磁盘使用情况(df -h)
查询指定目录的磁盘占用情况(du -h /目录)
基本语法: du -h /目录
查询指定目录的磁盘占用情况,默认为当前目录
- s 指定目录占用大小汇总
- h 带计量单位
- a 含文件
-
--max-depth=1 子目录深度
- c 列出明细的同时,增加汇总值
查询 /usr 目录的磁盘占用情况,深度为 1
磁盘情况-工作实用指令
-
统计/home 文件夹下文件的个数
ls –l /home/ | grep “^-” | wc -l
-
统计/home 文件夹下目录的个数
ls –l /home/ | grep “^d” | wc -l -
统计/home 文件夹下文件的个数,包括子文件夹里的
ls –lR /home/ | grep “^-” | wc -l -
统计/home 文件夹下目录的个数,包括子文件夹里的
ls –lR /home/ | grep “^d” | wc -l
以树状显示 home 目录结构 [没有 tree 指令咋办, 使用 yum 来安装]
先安装yum install tree
第 11 章 linux 的网络配置
Linux 网络配置原理图(含虚拟机)
目前我们的网络配置采用的是 NAT
查看网络 IP 和网关、修改 ip 地址(修改虚拟网络的 ip)
修改 ip 地址(修改虚拟网络的 ip)
查看网关
linux 网络环境配置(自动获取、指定固定的 ip)
自动获取
linux 启动后会自动获取 IP,缺点是每次自动获取的 ip 地址可能不一样。这个不适用于做服 务器,因为我们的服务器的 ip 需要时固定的。
指定固定的 ip
直 接 修 改 配 置 文 件 来 指 定 IP, 并 可 以 连 接 到 外 网 ( 程 序 员 推 荐 ) , 编 辑 vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改后,一定要 重启服务
- service network restart
- reboot 重启系统
修改主机名
修改后,可直接通过ping 主机名。就可以连接
第 12 章 进程管理(重点)
显示系统执行的进程(ps -aux)
查看进行使用的指令是 ps ,一般来说使用的参数是 ps -aux
终止进程 kill 和 killall
- kill [选项] 进程号(功能描述:通过进程号杀死进程)
- killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变 得很慢时很有用)
查看进程树 pstree(pstree [选项])
-p :显示进程的 PID
-u :显示进程的所属用户
案例 1:请你树状的形式显示进程的 pid
服务(Service)管理
- service 服务名 [start | stop | restart | reload | status]
- 在 CentOS7.0 后 不再使用 service ,而是 systemctl
查看当前防火墙的状况,关闭防火墙和重启防火墙。
chkconfig 指令(给每个服务的各个运行级别设置自启动/关闭)
- 查看服务 chkconfig --list|grep xxx
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/of
请将 sshd 服务在运行级别为 5 的情况下,不要自启动。
动态监控进程(top [选项])
选项说明:
应用实例:
-
案例 1.监视特定用户
top:输入此命令,按回车键,查看执行的进程。
u:然后输入“u”回车,再输入用户名,即可 -
案例 2:终止指定的进程。
top:输入此命令,按回车键,查看执行的进程。
k:然后输入“k”回车,再输入要结束的进程 ID 号
查看系统网络情况 netstat(netstat [选项])
netstat -anp
-an 按一定顺序排列输出, -p 显示哪个进程在调用
查看系统所有的网络服务
请查看服务名为 sshd 的服务的信息
第 13 章 rpm 和 yum 软件安装
rpm 包的简单查询指令(查询已安装的 rpm 列表 rpm –qa|grep xx)
查询已安装的 rpm 列表 rpm –qa|grep xx
举例:请查询看一下,当前的 Linux 有没有安装 firefox这个软件
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 包的其它查询指令
- rpm -qa :查询所安装的所有
- rpm 软件包 rpm -qa | more [分页显示]
- rpm -qa | grep X [rpm -qa | grep firefox ]
- pm -q 软件包名 :查询软件包是否安装
- rpm -qi 软件包名 :查询软件包信息
- rpm -ql 软件包名 :查询软件包中的文件
- rpm -qf 文件全路径名 查询文件所属的软件包
卸载 rpm 包(rpm -e RPM 包的名称)
- 删除 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 带上 --nodeps 就是强制删除。
安装 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/
Yum 是一个 Shell 前端软件包管理器
Yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包 并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用 yum 的前提是可以联 网
yum 的基本指令(yum list|grep xx 软件列表、yum install xxx)
- 查询 yum 服务器是否有需要安装的软件
yum list|grep xx 软件列表 - 安装指定的 yum 包
- yum install xxx 下载安装
案例:请使用 yum 的方式来安装 firefox
- 先查看一下 firefox rpm 在 yum 服务器有没有
- 安装
yum install firefox