Linux教程-修炼

在2020这个特殊的时期,在家就是为国家做贡献!一切都会好起来的,加油中国!!

第1章 Linux 简介

1.1 为什么要学习Linux

开源、稳定、漏洞少、靠谱公司都用它。一般的服务器都是用linux系统。

1.2 Linux是什么

Linux 怎么读 【里纽克斯,利尼克斯,里纳克斯】
Linux 是一款操作系统,免费,开源, 安全,高效,稳定, 处理高并发非常强悍,现在很多的企业级的项目都部署到 Linux/unix 服务器运行。
Linux 创始人-linux 林纳斯
Linux是一套免费试用和自由传播的类Unix操作系统。

1.3 Linux 与 Unix的那些事

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.4 不同时代不同选择

在这里插入图片描述

1.5 Linux 家族

各个Linux系统的主要区别

  • 选择不同的内核版本

  • 集成不同的应用程序

  • 定制不同的图形界面

第2章 VM 与 Linux 的安装

2.1 从哪下载

  • 网易镜像: http://mirrors.163.com/centos/7/isos/

  • 搜狐镜像: http://mirrors.sohu.com/centos/7/isos/

2.2 BIOS中开启虚拟化设备支持

在这里插入图片描述

注意:先进行安装,如果出现虚拟化不支持的错误,再进入到BIOS进行设置,部分电脑默

认已经开启。

虚拟化设备支持未开启在安装是会出现如下错误:

在这里插入图片描述

2.3 安装虚拟机-组装电脑

在Windows上面安装在VM
在这里插入图片描述
在这里插入图片描述

2.4 安装Linux-装系统

在VM上安装CentOS7

2.5 xshell 和 xftp 工具的安装

  • xShell的作用: 远程命令行访问服务器端的Linux系统。

  • xftp的作用 :远程访问及传输文件

  • 推荐安装 XManager 教程
    在这里插入图片描述在这里插入图片描述

  • 扩展: 一个小型云服务网站架构

在这里插入图片描述

第3章 Linux文件与目录结构

3.1 Linux一切皆文件

在这里插入图片描述

3.2 目录结构

/bin (/usr/bin、/usr\local\bin) 是Binary的缩写, 这个目录存放着最经常使用的命令
/sbin(/usr/sbin 、/usr/local/sbin) s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/root 该目录为系统管理员,也称作超级权限者的用户主目录。
/lib 系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
/etc 所有的系统管理所需要的配置文件和子目录
/usr 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
/boot 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件,自己的安装别放这里
/proc 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/srv service缩写,该目录存放一些服务启动之后需要提取的数据
/sys 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs
/tmp 这个目录是用来存放一些临时文件的。
/dev 类似于windows的设备管理器,把所有的硬件用文件的形式存储
/media(centos6) linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/run 进程产生的临时文件,虚拟机加载光盘映像在:/run/media/root/ 目录下
/mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。
/opt 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/usr/local 这是另一个给主机额外安装软件所摆放的目录。一般是通过编译源码方式安装的程序。
/var 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

第4章 VI、VIM 编辑器

4.1 VI、VIM是什么

VI、VIM是Linux系统命令行下的文本编辑器.

通过命令 vi 文件名 或者是 vim 文件名 来使用。

4.2 三种模式

  • 一般模式(默认模式)
  1. 通过vi或者是vim打开文档后默认进入到一般模式,该模式下主要负责查看和一些基础的修剪工作

  2. 常用的操作

dd 删除光标当前行
dnd 删除n行
u 撤销上一步
x 删除一个字母,类似于键盘上Delete功能
X 删除一个字母,类似于键盘Backspace功能
yy 复制光标当前行
p 粘贴
dw 删除一个词
yw 复制一个词
Shift+g 移动到页尾
1+Shift+g 移动到目标行
N+shift+g 移动到第N行
Shift+6 移动到行头
Shift+4 移动到行尾
  • 编辑模式
  1. 在一般模式下通过字母 i 、a 、 o
    进入到编辑模式,进入后左下角会有【插入】的字样.如想退出编辑模式,需要按下【ESC】按键

  2. 常用的操作

i 当前光标前录入
a 当前光标后录入
o 当前光标行的下一行录入
I 行首录入
A 行尾录入
O 当前光标行的上一行录入
  • 命令模式
  1. 在一般模式下输入 / 或者 : 进入命令模式,命令模式一般用于存盘、退出VIM
    、显示行号、搜索、批量替换等操作.

  2. 常用的操作

:w 保存
:q 退出
:! 强制执行
:%/s/old字符/new字符 批量替换
/要查找的词 搜索,n查找下一个,N查找上一个
:set nu 显示行号
:set nonu 关闭行号
noh 取消高亮显示

4.3 三个模式之间的切换关系

在这里插入图片描述

4.4 VI、VIM键盘图

在这里插入图片描述

第5章 常用命令

==============

5.1 基本命令

man 帮助手册
–help 帮助手册
date 日期
cal 日历
pwd 显示当前所在目录
cd 切换目录
ls 显示当前目录下的内容
grep 通过|管道符,配置grep进行过滤筛选
mkdir 创建目录 -p :同时创建多级目录
Touch 创建文件
rmdir 删除一个空目录
rm 删除文件或者目录 -rvf:递归删除所有目录内容,有提示 -rf:递归删除所有目录内容,无提示[慎用]
cp 复制 -r : 递归复制整个目录 -v:显示复制过程中文件的列表 \cp:强制覆盖不提示
mv 重命名或者移动文件 mv oldFileName newFileName 重命名 mv /原目录/原文件 /新目录 移动文件
cat 查看文件 cat 文件名 查看轻量级的文本文件 cat 文件1 文件2 连接显示多个文件 cat 文件1 > 文件2 合并为新文件 cat 文件1 >> 文件2 追加
more 查看比较长的文件 空格键: 向下翻一页 回车键: 向下翻一行 q:代表立刻离开more ctrl+F 向下滚动一屏 ctrl+B 向上滚动一屏
less 同more类似,比more功能更多 pageDown:向下滚动一页 pageUp:向上滚动一页 /字符串: 向下搜索指定字符串 ?字符串:向上搜索执行字符串 n:重复前一个搜索 N:反向重复前一个搜索
tail 从尾部开始查看文件,比较适合看日志 -f:跟随查看
history 查看历史命令
echo 回显,输出 一般在shell脚本中使用较多
find 查找文件,提供了丰富的模糊搜索及条件搜索 Find+搜索路径+参数+搜索关键字 按文件名: find /目录/… -name “*.txt”
locate 查找文件,基于索引,查询速度更快 通过updatedb来更新索引
ln 软链接 Ln -s 原文件或者目录 软链接名
tar 压缩文件 、解压缩文件 tar -zcvf xxx.tar.gz xxxx 压缩文件 tar -zxvf xxx.tar.gz 解压缩文件 -c:创建一个新归档 -x:从归档中解出文件 -v:显示详细信息 -f:指定压缩后的文件名 -z:通过gzip过滤归档
zip 压缩文件 zip xxx.zip xxxx zip -r xxx.zip 目录/*
unzip 解压缩文件 upzip xxx.zip

5.2 磁盘分区类命令

  1. Windows下的磁盘分区

在这里插入图片描述

  1. 常用的两种磁盘分区类型
  • mbr

操作系统要安装在主分区

只支持4个主分区

扩展分区占一个主分区

  • gpt(win7 64位以后)

无限主分区

支持超大硬盘 3T以上

  1. linux下查看所有设备挂在情况

lsblk 或者 lsblk -f

  1. 增加一块新硬盘,通过命令进行分区
  • 虚拟机插入新硬盘

在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,至到完成。然后重启系统

在这里插入图片描述

  • 进行分区

通过 fdisk /dev/sdb 开始对 /sdb进行分区,

m 显示命令列表

p 显示磁盘

n 新增分区

d 删除分区

w 写入并退出分区

分区步骤如下: 开始分区后输入n,新增分区,然后选择p
,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。

在这里插入图片描述

在这里插入图片描述

  • 格式化磁盘

命令: mkfs -t ext4 /dev/sdb1

  • 挂载

将一个分区与一个目录联系起来,

mount 设备名称 挂载目录

例如: mount /dev/sdb1 /newdisk

umount 设备名称 或者 挂载目录

例如: umount /dev/sdb1 或者 umount /newdisk

注意: 用命令行挂载重启后会失效

  • 永久挂载

通过修改/etc/fstab实现挂载

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

/etc/fatab文件参数介绍

第一列:磁盘设备文件或者该设备的Label或者UUID

第二列: 设备的挂载点,就是你要挂载到哪个目录下

第三列: 磁盘文件系统的格式,

包括ext2、ext3、reiserfs、nfs、vfat等

第四列: 文件系统的参数 ,defaults代表同时具有

rw,suid,dev,exec,auto,nouser,async等默认参数的设置

第五列: 能否被dump备份命令作用

0 代表不要做dump备份

1 代表要每天进行dump的操作

2 代表不定日期的进行dump操作

第六列: 是否检验扇区

0 不要检验

1 最早检验(一般根目录会选择)

2 1级别检验完成之后进行检验

5.3 磁盘情况查询

df -h 查询系统整体磁盘使用情况

du -h /目录

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

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

-h 带计量单位

-a 含文件

–max-depth=1 子目录深度

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

例: du -ach --max-depth=1 /opt

5.4 网络配置类

  1. ifconfig 查看网络配置

  2. 如何修改ip

  • 图形化操作

  • 命令行方式 vi /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述

DEVICE=eth0 #接口名(设备,网卡)

BOOTPROTO=none # IP的配置方法[none|static|bootp|dhcp](引导时不使用协

议|静态分配IP|BOOTP协议|DHCP 协议)

BROADCAST=192.168.1.255 #广播地址

HWADDR=00:0C:2x:6x:0x:xx #MAC地址

IPADDR=192.168.1.23 #IP地址

NETMASK=255.255.255.0 # 网络掩码

NETWORK=192.168.1.0 #网络地址

ONBOOT=yes #系统启动的时候网络接口是否有效(yes/no)

TYPE=Ethernet #网络类型(通常是Ethemet)

配置完了,立即生效 命令: network services restart

5.5 进程类

  1. ps(process)

在这里插入图片描述

  1. ps -aux

-a : 显示当前总段的所有进行信息

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

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

  • 详细内容解释

ps –aux|grep xxx

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:启动进程所用的命令和参数,如果过长会被截断显示

  1. ps -ef

ps -ef是以全格式显示当前所有的进程

-e 显示所有进程。-f 全格式。

ps -ef|grep xxx

是BSD风格

UID:用户ID

PID:进程ID

PPID:父进程ID

C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高

STIME:进程启动的时间

TTY:完整的终端名称

TIME:CPU时间

CMD:启动进程所用的命令和参数

  1. kill pid 杀死指定pid对应的进程.

-9: 强行杀死进程

5.6 服务类

  1. service(CentOS6)
  • 注册在系统中的标准化程序

  • 有方便统一的管理方式(常用的方法)

service 服务名 start

service 服务名 stop

service 服务名 restart

service 服务名 reload

service 服务名 status

  • 查看服务的方法 /etc/init.d/服务名

  • 通过chkconfig 命令设置自启动

查看服务 chkconfig --list|grep xxx

chkconfig --level 5 服务名 on

  • 运行级别

在这里插入图片描述

查看默认级别: vi /etc/inittab

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

运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆

运行级别2:多用户状态(没有NFS),不支持网络

运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式

运行级别4:系统未使用,保留

运行级别5:X11控制台,登陆后进入图形GUI模式

运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

  1. systemctl(CentOS7)
  • 注册在系统中的标准化程序

  • 有方便统一的管理方式(常用的方法)

systemctl start 服务名(xxxx.service)

systemctl restart 服务名(xxxx.service)

systemctl stop 服务名(xxxx.service)

systemctl reload 服务名(xxxx.service)

systemctl status 服务名(xxxx.service)

  • 查看服务的方法 /usr/lib/systemd/system

  • 查看服务的命令

systemctl list-unit-files

systemctl --type service

  • 通过systemctl 命令设置自启动

自启动 systemctl enable service_name

不自启动systemctl disable service_name

  • 运行级别

在这里插入图片描述

查看默认级别: vim /etc/inittab

Centos7运行级别简化为:

multi-user.target 等价于原运行级别3(多用户有网,无图形界面)

multi-user.target 等价于原运行级别5(多用户有网,有图形界面)

5.7 netstat

查看系统的网络情况

-an 按一定顺序排列输出

-p 显示哪个进程在调用

netstat –anp|grep 8080 查看占用8080端口的进程

第6章 Linux 用户与权限管理

6.1 用户

  1. Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

  2. 对用户的操作

新增用户:useradd 新用户名

设置密码: passwd 用户名

用户是否存在:id 用户名

切换用户:su – 切换用户名

查看当前用户/登录用户:whoami/ who am I

删除用户:userdel

6.2 用户组

  1. 类似于角色,系统可以对有共性的多个用户进行统一的管理。

  2. 对用户组的操作

新增组:groupadd 组名

删除组:groupdel 组名

修改用户的组:usermod –g 用户组 用户名

增加用户时直接加上组:useradd –g 用户组 用户名

6.3 系统中用户和组的相关文件

  1. 用户(user)的配置文件: /etc/passwd

每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

  1. 口令的配置文件: /etc/shadow

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

  1. 组(group)的配置文件: /etc/group

每行含义:组名:口令:组标识号:组内用户列表

6.4 文件的权限管理

  1. 再说 ls -l

在这里插入图片描述

  • 0-9位说明

第0位确定文件类型(d, - , l , c , b)

第1-3位确定所有者(该文件的所有者)拥有该文件的权限。—User

第4-6位确定所属组(同用户组的)拥有该文件的权限,—Group

第7-9位确定其他用户拥有该文件的权限 —Other

  • 作用到文件

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

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

[ x ]代表可执行(execute):可以被系统执行

  • 作用到目录

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

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

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

  1. chmod

在这里插入图片描述

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

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

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

相当于 chmod 751 文件目录名

  1. chown

chown newowner file 改变文件的所有者

chown newowner:newgroup file 改变用户的所有者和所有组

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

  1. chgrp

chgrp newgroup file 改变文件的所有组

第7章 rpm 与 yum

7.1 rpm

  1. RPM(RedHat Package
    Manager),Rethat软件包管理工具,类似windows里面的setup.exe

是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通

用的。

  1. 查询已安装的rpm列表 rpm –qa|grep xx

  2. rpm包的名称:firefox-52.5.0-1.el7.centos.x86_64

名称:firefox

版本号:52.6.0-1

适用操作系统: el7.centos.x86_64

表示centos7.x的64位系统。

  1. 安装rpm

rpm –ivh rpm包名

-i 安装 install

-v 查看信息

-h 查看进度条

  1. 卸载rpm

rpm -e RPM软件包

7.2 yum

  1. 类似于我们java开发中的maven工具,可以从镜像网站上下载应用程序,并直接安装

  2. Yum 操作

yum list|grep xx 软件列表

yum install xxx 下载安装

第8章 搭建开发环境

8.1 安装JDK

  1. 将JDK解压缩到opt目录下

  2. 配置环境变量 , vim /etc/profile

JAVA_HOME=/opt/jdk1.8.0_152

PATH=/opt/jdk1.8.0_152/bin:\$PATH

export JAVA_HOME PATH
  1. 配置完成后执行如下操作

安装完成注销重新登录一下

source /etc/profile

重启系统[最靠谱]

8.2 安装Tomcat

  1. 解压缩到/opt

  2. 进入到Tomcat目录下的bin目录中,启动tomcat ./startup.sh

8.3 安装Eclipse、IDEA

8.4 安装MySQL

  1. 检查工作
  • CentOS6

rpm -qa|grep mysql

如果存在mysql-libs的旧版本包如下:

在这里插入图片描述

请先执行卸载命令:rpm -e --nodeps mysql-libs

  • CentOS7

rpm -qa|grep mariadb

如果存在如下:

在这里插入图片描述

请先执行卸载命令:rpm -e --nodeps mariadb-libs

  • 检查/tmp文件夹权限

执行 :chmod -R 777 /tmp

  1. 安装MySQL
  • 拷贝安装包到opt目录下

MySQL-client-5.5.54-1.linux2.6.x86_64.rpm

MySQL-server-5.5.54-1.linux2.6.x86_64.rpm

  • 执行如下命令进行安装

rpm -ivh MySQL-client-5.5.54-1.linux2.6.x86_64.rpm

rpm -ivh MySQL-server-5.5.54-1.linux2.6.x86_64.rpm

  1. 检查安装是否成功
  • 安装完成后查看MySQL的版本

执行 mysqladmin –version,如果打印出消息,即为成功

在这里插入图片描述

或者通过rpm查询

rpm –qa|grep –i mysql(-i 表示忽略大小写)

  1. MySQL服务的启停

启动: service mysql start

停止: service mysql stop

  1. 设置root用户的密码

mysqladmin -u root password ‘123123’

  1. 登录MySQL

mysql -uroot -p123123

  1. 建库

create database 库名

  1. 建表

create table 表名 (字段名 字段类型(长度)约束 …)

  1. 字符集问题
  • 查看字符集 show variables like 'character%’;

  • 查看MySQL的安装位置.

在这里插入图片描述

  • 修改字符集

将/usr/share/mysql/中的my-huge.cnf 拷贝到/etc/下,改名为my.cnf

tips: mysql启动时,会优先读取/etc/my.cnf文件。

在[client] [mysqld] [mysql]中添加相关的字符集设置

[client]

default-character-set=utf8

[mysqld]

character_set_server=utf8

character_set_client=utf8

collation-server=utf8_general_ci

[mysql]

default-character-set=utf8

重启MySQL服务,查看字符集

service mysql restart

  • 修改已有库表的字符集

修改库的字符集

alter database 库名 character set ‘utf8’;

修改表的字符集

alter table 表名 convert to character set ‘utf8’;

  1. 远程访问
  • MySQL默认的root用户只允许本机登录,远程通过SQLyog工具不能登录.

  • 查看MySQL mysql库中的用户表

列显示: select * from user\G;

查询常用字段: select host,user,password,select_priv from mysql.user;

  • 创建可以远程访问的root用户并授予所有权限

grant all privileges on *.* to root@’%’ identified by '123123‘;

  • 修改用户的密码

修改当前用户的密码

set password =password('123456’)

修改某个用户的密码

update mysql.user set password=password(‘123456’) where user=‘li4’;

  • 注意: 所有通过user表的修改,必须使用flush privileges 命令才能生效.

8.4.1 通过Docker安装MySQL

Docker教程

1、搜索镜像
[root@localhost ~]# docker search tomcat

2、拉取镜像
[root@localhost ~]# docker pull tomcat

3、根据镜像启动容器
docker run --name mytomcat -d tomcat:latest

4、查看运行中的容器
docker ps  

5、 停止运行中的容器
docker stop  容器的id

6、查看所有的容器
docker ps -a

7、启动容器
docker start 容器id

8、删除一个容器
 docker rm 容器id

9、启动一个做了端口映射的tomcat
[root@localhost ~]# docker run -d -p 8888:8080 tomcat
				-d:后台运行
				-p: 将主机的端口映射到容器的一个端口    主机端口:容器内部的端口

10、为了演示简单关闭了linux的防火墙
service firewalld status ;查看防火墙状态
service firewalld stop:关闭防火墙

11、查看容器的日志
docker logs container-name/container-id

通过docker容器来运行一个mysql的镜像

  • docker search mysql
  • docker pull mysql
  • docker run (这个过程是需要注意的 端口映射,设置密码等。。。)

在这里插入图片描述

[root@localhost ~]# docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
ad10e4bc5c6a        mysql               "docker-entrypoint.sh"   4 seconds ago       Up 2 seconds        0.0.0.0:3306->3306/tcp   mysql02

posted @ 2020-02-07 17:53  gqzdev  阅读(191)  评论(0编辑  收藏  举报