linux 开山(尚硅谷)--听课笔记-

一、学习流程:

1、文件操作命令(rm mkdir chmod chown) 编辑工具(vi vim ) linux 用户管理(useradd userdel usermod)等

2、各种配置(环境配置,网络配置,服务配置)

3、linux下搭建对应语言的开发环境(大数据,javaee,python)

4、能编写shell脚本,对linux服务器进行维护

5、能进行安全设置,防止攻击,保障服务器正常运行,能对系统调优

6、深入理解linux系统,熟练掌握大型网站应用架构组成,并熟悉各个环节的部署和维护方法

二、linux基础篇

1、虚拟机VM和linux系统(CentOs)的安装

关系:在windows上安装VM软件,虚拟出一个操作空间,在操作空间中安装 CentOs(可以看成文件夹)。并且该CentOs可以在任何一台VM中打开。

安装步骤

1、安装VM

(5条消息) 最新超详细VMware虚拟机下载与安装(一篇足以带你上高速,附钥)_Slcp的博客-CSDN博客_vmware虚拟机百度云下载

注意要进入BIOS  将系统虚拟化   [enable]。不同系统进入BIOS方法不同。

这些过程会有多次的重启。

2、创建一个虚拟空间/centos的安装

(5条消息) Linux之CentOS下载与安装教程【图文详解】_花伤情犹在的博客-CSDN博客_centos linux下载

注意虚拟机三种网络连接模式:

  1. 桥接模式:A系统中的linux的ip地址与母机的ip一致,可以与其他系统网络通信。但是会造成同一个网络环境中ip地址不够用,冲突。
  2. NAT模式:A系统中的linux的ip不会与母机ip一致,不占用A系统的网络环境ip。linux可以访问外网,不会造成ip冲突。(推荐模式)
  3. 仅主机模式:linux是一个独立的主机,不能访问外网。

3、centos的终端打开与联网使用

  • 桌面右键选择--打开终端
  • 联网使用--用火狐浏览器

4、安装vmtool

  • 将Windows内容复制粘贴到linux中
  • 共享文件

5、目录结构

  1. 只有一个根目录:/
  2. 各个目录存放的内容是预先规划好的,不要乱放文件,类似  树  结构
  3. 在linux世界里,一切皆文件
  4. linux各个目录下,存放什么内容,必须有一个认识
  • /bin  用于存放经常使用的命令

  • /sbin 用于存放的是系统管理员使用的系统管理程序

  • /home 存放普通用户的主文件,在Linux中每个用户都有一个自己的目录,一般改目录是以用户的账号命名的

  • /root 系统管理员,超级权限者的用户主目录

  • /lib  类似于Windows里的DLL

  • /etc 所有系统管理所需要的配置文件和子目录 

  • /user 类似windows下的 program file目录(重要)

  • /boot 启动linux时使用的一些核心文件,包括一些链接文件以及镜像文件

  • /media 系统会自动识别一些设备,例如U盘,光驱

  • /mnt 让用户临时挂载在别的文件系统 

  • /user/local 给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序

  • /var 存放在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下

三、linux实战篇

1、为什么要远程登录linux

linux服务器是开发小组共享的,正式上线的项目实在公网上运行的,因此程序员需要远程登录到centos进行项目管理或者开发。

xshell:用于远程登录linux的软件

xftp:mysql的安装文件上传到linux上,或者将文件从linux下载到Windows

(5条消息) XShell免费版的安装配置教程以及使用教程(超级详细、保姆级)_SoloVersion的博客-CSDN博客_xshell安装步骤

特别说明:如果希望安装好xshell就可以远程访问linux系统的话,需要linux启动linux 启动了SSHD服务,开启22端口

(5条消息) Xshell连接虚拟机详细教程_为你关月亮的博客-CSDN博客_xshell连接虚拟机

2、vi 和 vim编辑器

所有linux系统都会内建vi编辑器。vim具有程序编辑的能力,可以看成是VI的增强版本。

三种常用模式

  • 正常模式:可以使用快捷键  上下左右  删除字符 删除行  复制、粘贴
  • 插入模式/编辑模式:    i I o O  a A r R
  • 命令行模式:读取 存盘 替换 离开     :wq   :q!      :q

案例:用vim开发hello.java程序

三种模式相互切换

 快捷键

  • 拷贝当前行 【yy】  拷贝当前行向下的5行 【5yy】  并粘贴 【p】
  • 删除当前行 【dd】 删除当前行向下的5行 【5dd】
  • 在文件中查找某个单词【命令行下/关键字 ,回车 查找 ,输入n就是查找下一个】
  • 设置文件的行号【:set nu】,取消文件的行号【:set nonu】
  • 底文档的最末行 【G】和最首行【gg】
  • 撤销【u】
  • 光标移动到 20 行  【20 shift+g】

 键盘图

 3、关机和重启

shutdown

  • shutdown -h now :表示立即关机
  • shutdown -h 1:表示1分钟后关机
  • shutdown -r now: 立即重启

halt   :效果等价于关机

reboot  :重启

sync : 把内存数据同步到磁盘 。在关机或者重启之前进行执行,以保存文档,防止数据丢失。

4、用户的登录和注销

  • 登录时尽量少用root账号登录,因为它是系统管理员,最大的权限,避免操作失误,可以利用普通用户登录,登录后在    【su-用户名】 命令切换成系统管理员身份
  • 【logout 】退出远程登录,注销,运行级别3下有效

5、用户管理

用户  组  家目录  

  • linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先想系统管理员申请一个账号,然后以这个账号的身份进入系统。
  • linux的用户需要至少要属于一个组。

添加用户 :useradd [选项] 用户名

  • 当创建用户成功后,会自动的创建和用户同名的家目录
  • 也可以通过指定目录   【useradd -d    /目录  用户名】例如:useradd -d /home/hello1/ xiaoming  
  • 使用 【passwd 用户名 】设置密码

删除用户:userdel 用户名

  • 删除用户小明,但是要保留家目录 【userdel xiaoming】
  • 删除用户小明以及用户组 【userdel -r xiaoming】
  • 细节:一般情况下 保留家目录

查询用户: id 用户名

切换用户: su - 用户名

【exit】 回到原来的用户

查看当前用户: whoami  

用户组:类似于角色,系统对有共性的多个用户进行统一的管理

  • 新增组:groupadd 组名
  • 删除组:groupdel 组名
  • 增加用户时直接加上组:useradd -g 用户组 用户名
  • 修改用户的组: usermod -g 用户组 用户名

用户和组的相关文件

  • 用户配置文件  /etc/passwd    用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
  • 组配置文件(组信息)/etc/group    登录名:加密口号:最后一次修改的时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  • 口令配置文件(密码和登录信息)/etc/shadow     组名:口令:组标识号:组内用户列表

增加用户后以上三个文件都会产生相应变化

6、实用指令

指定运行级别

  • 0:关机 
  • 1:单用户(找回丢失密码)
  • 2:多用户无网络服务
  • 3:多用户有网络服务 (常用)
  • 4:保留 
  • 5:图形界面 (常用)
  • 6:重启

系统的运行级别配置文件  /etc/inittab

切换到制定运行级别的指令 init 级别 (每次切换,都需要输入root密码)

面试题:如何找回丢失的root密码

思路:进入到单一用户 ,然后修改密码

开机-》在引导时输入 回车键-》看到一个界面输入 e->看到一个新的界面,选中第二行(编辑内核)在输入 e-》在这行最后输入 1,在输入 回车键 -》再次输入b, 这时就会进入单用户模式,使用passwd修改root密码。

设置运行级别,linux运行后,直接进入到命令行界面,即进入3运行级别

  1. vim /etc/inittab
  2. 将 id:5:initdefault: 这一行中的数字,5这个数字改成对应的运行级别

帮助指令

man【命令或配置文件】(功能描述,获得帮助信息)

help 命令 (功能描述,获得shell内置命令)

文件目录类

pwd   (显示当前工作目录的绝对路径)

ls  【选项】【目录或者文件】

  • -a  显示当前目录所有的文件和目录 ,包括隐藏的
  • -l  以列表形式
  • -al

cd 【参数】

  • cd .. 回到当前目录的上一级目录  cd ../../ 返回两级
  • cd ~ /cd : 回到自己的家目录
  • cd 【绝对路径和相对路径】

mkdir 【要创建的目录】

  • -p 创建多级目录

rmdir 【要删除的目录】

  • 注意,删除的是空目录,如果目录下有内容时无法删除,要用 rm -f 删除

touch  【要创建的空文件】

cp 【要拷贝的文件】【要拷贝的路径/】

  • -r 递归复制整个文件夹   cp -r

rm 【要删除的文件或目录】

  • -r 递归删除整个文件夹
  • -f 强制删除不提示

mv 移动文件与目录或者重命名

  • mv【old文件名】【new文件名】

cat 【要查看的文件】| more

  • -n 显示行号

more 基于vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容

  • 空白键 代表向下翻一页
  • enter  代表向下翻一行
  • q 代表立即离开more  不再显示该文件内容
  • ctrl+f  向下滚动一屏
  • ctrl+b 返回上一屏
  • = 输出当前行号
  • :f 输出文件名和当前行号

less 指令    分屏查看,并不是一次将一整个文件加载之后才显示,而是根据现实需要家在内容,对于大型文件具有较高的效率

>    输出重定向

  • ls -l >文件  列表的的内容写入文件中(覆盖)
  • cat 文件1>文件2  将文件1的内容覆盖到文件2

>>  追加

  • ls -al >>文件  列表的的内容追加到文件末尾
  • echo "内容">>文件  将内容写入文件
  • 将日历信息追加 cal >> /路径

echo 【选项】【输出内容】

  • 输出当前环境路径 echo $PATH
  • 输出文本  

head 用于显示文件的开头部分,默认情况下显示10行

  •  head -n 5 文件  查看文件头5行内容

tail 用于输出文件中尾部的内容,默认情况下tai 指令显示文件的后10行

  • tail -n 5 文件  查看文件后5行内容
  • tail -f 文件  实时追踪该文档的所有更新  ctrl+c退出

ln  软连接指令,类似于windows里的快捷方式

  • ln -s 【原文件或目录】【软链接名】  给原文件创建一个软链接
  • 删除软链接 rm -rf   软链接  (不能在软链接后加  /  ,否则提示资源忙)

history 查看已经执行过历史命令,也可以执行历史命令

执行历史编号为195的指令   !195

时间日期类

date  显示当前日期和时间

  • date +%Y   年
  • date +%m  月
  • date +%d    日
  • date ''+%Y-%m-%d%H:%M:%s''
  • date -s 字符串时间

cal  查看日历

  • cal 2020 显示2020一整年日历

搜索查找类

find 【搜索范围】【选项】

  •  -name<查询方式>  按指定的文件名查找模式 查找文件 
  •  find /home -name *.txt 
  • -user<用户名>  查找属于指定用户名所有文件   find /opt -user nobody
  • -size<文件大小>  按照指定的文件大小查找文件  大于20兆 find / -size +20M   小于20兆   find / -size -20M
  • ls -lh  

locate  指令

可以快速定位文件路径。locate 指令利用实现建立的系统中所有文件名称以及路径的locate数据库实现快速定位给定的文件。locate指令需要遍历整个文件系统,查询速度比较快。

由于locate 指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。

grep指令和管道符号

grep过滤查找,管道符,''|'' 表示将前一个命令的处理结果输出传递给后面的命令处理。  

cat pigs.txt | grep -ni look

grep 【选项】查找内容  源文件

  • -n  显示匹配行及行号
  • -i 忽略字母大小写

压缩和解压缩

gzip  文件  用于压缩 ,只能将文件压缩为*.gz文件  且不会保留源文件

gunzip  文件 用于解压缩 

zip  用于压缩

-r 递归压缩,即压缩目录

unzip  用于解压缩

tar 指令   

 压缩       tar -zcvf  【a.tar.gz 】【a1.txt a2.txt】 

 压缩目录下所有       tar -zcvf 【a.tar.gz 】【/home/】 

  • -c 产生.tar打包文件
  • -v 显示详细信息
  • -f 指定压缩后的文件名
  • -z 打包同时压缩
  • -x 解包.tar文件

 解压到当前  tar  -zxvf  【a.tar.gz 】

 解压到目录 tar  -zxvf  【a.tar.gz 】-C 【hello1/】 要求指定的解压目录存在

7、组管理和权限管理  重难点

组  

linux的每个用户必须属于一个组,不能独立于组外,在Linux中,每个文件有所有者、所在组、其他组的概念。

所有者  文件的所有者,一般是文件的创建者

  • 查看所有者  ls -ahl   
  • 修改文件所有者 chown  用户名  文件(不改变组)

所在组

  • 改变文件所在的组  chgrp 组名  文件名
  • 将所有的文件和目录所在组都修改 chgrp -R 组名  目录/文件

其他组

  • 改变用户所在组 usermod -g 组名 用户名
  • 改变用登录的初始目录  usermod -d 目录名 用户名

ls -l 权限的基本介绍   重要

  • - 普通文件
  • d 目录
  • l 软链接
  • c 字符设备 键盘 鼠标
  • b 块文件 硬盘

 上图为文件所有者的权限  r 读权限 w 写权限 

 上图为 文件所在组的用户的权限  r--表示只有读的权限 

 上图为 文件的其他组的用户的权限  r-- 表示只有读的权限

如果是文件 ,表示 硬链接的数,

如果是目录, 表示该目录的子目录个数

  • 106 是指文件大小; 还包括一个隐藏字符
  • 如果是目录,则该数字为4096;

rwx 权限

作用到文件 

  • r:读取和查看   4
  • w:可以修改,但不代表可以删除文件。除非对该文件所在的目录有写权限,才能删除该文件  2
  • x:可以被执行   1

作用到目录

  • r: 代表可以读取,ls 查看目录内容  4
  • w: 可以修改 目录创建+删除+重命名  2
  • x:可以进入改目录  1

. 代表当前目录  .. 代表上一个目录 一般被隐藏

时间  代表 最后修改时间

修改权限   chmod

  • U:所有者   g:所有组 o:其他人 a:所有人(u\g\o的总和)
  • chmod u=rwx,g=rx,o=x  文件目录名
  • chomd o+w 文件目录名  给o增加一个w权限
  • chomd a-x 文件目录名 给所有用户减少一个x权限

用数字的方式实现 rwxr-xr-x

  • rwx=4+2+1=7
  • r-x=4+1=5
  • chmod 755  文件

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

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

8、定时任务调度

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

任务调度分类:

  1. 系统工作 有些重要的工作必须周而复始地执行
  2. 个别用户工作  个别用户可能希望执行某些程序,比如mysql数据库库的备份
  • -e  编辑crontab 定时任务
  • -l 查询crontab 任务
  • -r 删除当前用户所有的crontab 任务

如果只是简单的任务,可以不写crontab脚本,直接在crontab中加入任务即可

对于比较复杂的任务,需要写shell

5个占位符的说明

  • 第一个 *   一小时当中的第几分钟 0-59
  • 第二个* 一天当中的第几小时 0-23
  • 第三个*  一个月当中的第几天 1-31
  • 第四个* 一年当中的第几个月 1-12
  • 第5个* 一周当中的星期几 0-7(0和7都代表星期日)
  • * 代表任何时间
  • , 代表不连续的时间,比如“0 8,12,16 * * *”命令代表每天8点、12点、16点都执行一次命令
  • - 代表连续的时间范围,比如“0 5 * * 1-6”命令,代表在周一到周六的凌晨5点0分执行命令
  • */n 代表没个多久执行一次。 比如“*/10 * * * *”命令,代表每隔10分钟执行一次
  • service crond restart 重启任务调度

9、磁盘分区,挂载

分区方法:

mbr分区

  • 最多只能支持四个主分区
  • 系统只能安装在主分区
  • 扩展分区要占一个主分区
  • 最大只支持2TB,但拥有最好的兼容性

gtp分区

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

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

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

  • 对于IDE硬盘,''hdx'hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区   
  • hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区
  • a表示基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘
  • 对于sici硬盘,‘sdx’

lsblk -f 查看系统的分区和挂载情况

UUID 是唯一标识分区40位不重复字符串

mountpoint 挂载点

linux桌面电脑终端上进行磁盘查看

 给虚拟机增加硬盘2g,挂载到/home/newdisk:

  1. 虚拟机添加硬盘,重启
  2. 分区     fdisk /dev/sdb   n(add a new partition type)  p (partition number)  w(写入并保存) q(不保存退出)
  3. 格式化  mkfs - t ext4 /dev/sdb1
  4. 挂载  先创建一个 /home/newdisk  ,挂载 mount  /dev/sdb1  /home/newdisk
  5. 设置可以自动挂载   (永久挂载)   vim   /etc/fstab 
  6. 断挂载  回到home后   umount   /dev/sdb1  或者 umount  /home/newdisk

 磁盘情况查询 df -h

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

du  -h  /目录

  • -s  指定目录占用大小汇总
  • -h 带计量单位
  • -a 含文件
  • --max-depth=1 子目录深度
  • -c 列出明细的同时,增加汇总值

磁盘工作使用情况

1)统计 home 下文件数目    ls -l /home | grep "^-" | wc -l

2)统计home下目录个数    ls -l /home | grep "^d" | wc -l

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

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

5)以树状显示目录结构 tree  如果未找到该目录用 yum install tree 进行安装

10、网络配置

目前采用的网络配置是nat模式

  1. 查看虚拟网络编辑器  编辑--虚拟网络编辑器
  2. 修改ip地址(修改虚拟网卡的ip) 
  3. 查看网关  选中网络--NAT设置--网关IP

使用ipconfig查看

ping测试主机之间网络联通行  ping www.baidu.com

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

固定配置:直接修改文件配置以指定ip,并可以连接到外网

CentOS 7教程(二)-网络设置 - 知乎 (zhihu.com)

编辑 vi etc/sysconfig/network-scripts/ifcfg- ens33

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

 上图是修改ip之前的

网关和域名保持一致

需要重启网络  systemctl restart network

11、进程管理

  • 在linux中,每个执行的程序(代码)都称为一个进程,每一个进程都分配一个ID号
  • 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程,例如wwww服务器
  • 每个进程都可能以两种方式存在:前台和后台。前台进程:用户目前的屏幕上可以进行操作的。后台:实际在操作,由于屏幕上无法看到的进程,通常使用后台方式执行。
  • 一般系统的服务都是以后台的方式存在,而且都会在常驻在系统中,直到关机才结束。

ps 命令是用来查看目前系统中,有哪些正在执行,以及它们执行的情况

ps -aux | more

 指令 ps -aux | grep xxx   比如查看sshd       ps -aux | grep sshd

  • -a 显示当前终端的所有进程信息
  • -u 以用户的格式显示进程信息
  • -x 显示后台进程运行的参数

STAT:进程状态

  • S-睡眠 
  •  s-该进程是会话的先导进程
  • N-拥有比普通优先级更低的优先级 
  • R-正在运行
  • D-短期等待
  • Z-僵死进程
  • T-被跟踪或者被停止等等

查看父进程 ps -ef | more     只查看sshd进程的父进程号   ps -ef | grep sshd

 终止进程kill 和 killall

kill [选项] 进程号 (功能描述:通过进程号杀死进程)

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

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

终止多个编辑器 

 

 查看进程树 pstree

-p 显示进程的PID

-u 显示用户ID

服务管理(service)

本质就是进程,但是运行在后台,通常都会监听某个端口,等待其他程序的请求,因此我们又称为守护进程,是linux中非常重要的知识点。

systemctl 服务名 【start | stop | restart | reload | status】

查看当前防火墙状况,关闭防火墙和重启防火墙

(6条消息) LINUX 开启防火墙_chl6021的博客-CSDN博客_linux开启防火墙

1.systemctl start firewalld.service(开启防火墙)

2.systemctl stop firewalld.service(关闭防火墙)

3.service firewalld restart(重启防火墙)

查看服务名  ls -l /etc/init.d/
运行级别 runlevel

开机的流程:开机 -》BIOS-》/boot-》init进程-》运行级别-》运行级别对应的服务

chkconfig指令  可以给每个服务的各个运行级别设置自启动/关闭

  • 查看服务   systemctl list-unit-files
  • 查看某个服务名  systemctl list-unit-files | grep firewalld
  • systemctl distable sshd.sevice

动态监控进程

top 与 ps 命令很相似,他们都是用来显示正在执行的进程。

Top 与ps最大的不同之处,top在执行一段时间可以更新正在运行的进程

  • -d 秒数
  • -i 
  • -p

交互操作

  • P   以CPU使用率排序,默认就是此项
  • M  以内存的使用率排序
  • N   以PID排序
  • q   退出top

监控网络状态  netstat

-an  按一定顺序排序输出

-p 显示哪个进程在调用 

查看系统的所有网络服务     netstat -anp

查看某一指定 netstat -anp | grep sshd

12 、RPM YUM

RPM 一种用于互联网下载包的打包以及安装工具,它包含在某些linux分发版中,它生成具有.RPM扩展名的文件。RPM (RedHal Package Manager) 

查询已安装的rpm列表  rpm -qa | grep XX

 rpm -qi firework 查询详细信息

卸载RPM包

rpm - e  prm包的名称

强制删除 rmp -e -nodeps foo

i 安装

v 提示

h 进度条

步骤先找到firefox的安装rpm 包 ,需要挂载上我们安装centos的iso文件,然后/media/下去 找rpm

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

yum的基本指令  yum list | grep xx

安装指定的yum包 yum install xxx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值