一、Linux入门

1.1 什么是Linux?

Linux是一款操作系统,免费,开源,安全,高效,稳定,处理高并发强悍,现在很多企业级的项目都部署到Linux,unix服务器运行。

1.2 Linux的安装

我们一般在 Windows 系统上使用虚拟机去安装 Linux ,没有必要去重装 Linux 系统。通常我们都会使用到 VirtualBox 虚拟机。

  1. 首先安装VirtualBox虚拟机,选择 Windows host下载并安装。
  2. 虚拟机安装完成后,我们需要下载 CentOS 7
  3. 我们需要在系统磁盘上新建文件夹,用于存放虚拟机,例如D:/IDE/VM/iso将我们下载好的 CentOS 放置在此路径下。
  4. 打开 VirtualBox ,选择新建虚拟电脑

image.png

  1. 输入虚拟电脑的名字,选择创建的文件夹,这里我们将其放在刚刚创建的D:/IDE/VM路径下,类型选择 Linux ,版本选择 other Linux (64-bit)

image.png

  1. 选择内存分配,默认建议512M

image.png

  1. 选择现在创建虚拟硬盘

image.png

  1. 选择创建,创建完成后在左侧菜单栏选择创建的虚拟电脑,打开设置,打开存储,添加盘片,选择刚才下载到D:/IDE/VM/iso/CentOS-7-x86_64-DVD-2009.iso

image.png

  1. 设置网络,设置->网络->网卡1->连接方式->界面名称
    • 连接方式选择:桥接网络
    • 界面名称基于电脑的网络连接方式:
      • WIFI连接选择:Intel(R) Wireless-AC 9560 160MHz
      • 宽带网线连接选择:Realtek PCIe GbE Family Controller #2

image.png

  1. 配置完成后,双击启动,开始安装。在内部选择磁盘,将网络设置打开,设置密码,等待安装,安装完成后重启,进入系统输入Linux系统,输入用户名root,密码为自己设置的密码。安装完成后检查网络是否连接ping www.baidu.com
  2. 查看IP地址ip addr并使用 XShell 连接。

    二、Linux基础

    2.1 Linux根路径

    首先,我们刚进入 Linux 系统的命令行时,会显示[root@anonymous ~] #,并处于等待输入状态,首先root是用户名,anonymous是指主机名,~代表当前用户所在的目录。cd /回到根路径。输入ll查看当前目录下的内容。
    image.png
    首先,深蓝色的代表文件夹,浅蓝色的代表软链接(就相当于Windows下的快捷方式),我们可以看到每一个软链接都指向一个新的路径。

  3. /bin 二进制文件的缩写,存放最经常使用的命令。

  4. /boot 启动linux的使用的核心文件,链接文件,镜像文件
  5. /dev设备的缩写,linux的外部设备,
  6. /etc系统管理的配置文件
  7. /home 每一个用户都有自己的目录
  8. /lib目录存放着最基本的动态链接库
  9. /media 系统会自动识别,U盘,光驱等,识别后,自动挂载此目录
  10. /mnt 让用户可以手动临时指定挂载的目录,
  11. /opt 安装软件存放的目录
  12. /proc 存储当前内核运行状态的特殊文件
  13. /root 系统管理员,超级权限用户目录
  14. /sbin 超级用户的二进制文件
  15. /srv 启动之后需要加载提取的数据
  16. /tmp 临时目录
  17. /usr 用户很多应用程序的目录
  18. /var存放不断扩充的的目录

    2.2 Linux基础命令

    ip addr查看IP地址
    cd 目录 切换文件夹
    pwd查看当前目录位置
    mkdir 文件夹名创建文件夹
    rmdir 文件夹名删除文件夹
    rm -rf 文件名 删除文件夹(慎用),
    rm -f 文件名 删除文件
    help帮助手册
    ls -a -l -al查看信息
    touch 文件名创建文件
    cp 要复制的文件 目标位置 拷贝
    mv 要移动的文件 目标位置移动
    mv 当前目录下的文件 当前目录下的文件(改名)重命名(利用移动的手段重命名文件)
    history显示历史命令
    find查找 find /home/ -name a1.txt [类型、大小、用户、组、时间]

    2.3 vi常用命令

    2.3.1 一般模式:vi刚进入文件的模式

    gg进入文本的第一行
    G到文本的最后一行
    dd删除一行
    u撤销
    yy复制当前行
    p粘贴
    3+G移动到第三行
    /关键字向下查找关键字
    ?关键字向上查找关键字
    ctrl+f向下翻页
    ctrl+b向上翻页
    ctrl+u向上翻半页
    ctrl+d向下翻半页

    2.3.2 插入模式:i/a/o进入

    i在光标前插入,I当前行开始插入
    a光标后插入,A光标当前行末尾插入
    o当前行下一行插入新行,O当前行的上一行插入

    2.3.3 底行模式:ESC退出到(一般模式),:进入

    set nu 显示行号
    set nonu 取消行号
    :2进入第二行
    查找和替换
    wq 保存并退出
    q 退出,不保存

    2.4 tail命令

    tail 文件名显示文件的最后10行内容
    tail -行数 文件名显示文件的最后n行内容,例如:tail -20 b.txt
    tail -F 文件名监视文件的更新,并自动输出到控制台
    tail -f 文件名监视文件索引的更新,并输出到控制台

    注意:vi输入其实是将文件复制出一份,编辑完成后保存会重新创建一个新的文件替换掉原来的文件,所以我们在使用tail -f 文件名不能实时监听到vi输入模式下文件的变化。

echo 内容 >> 文件名将内容追加到文件的尾部,不会产生新的文件,可以被tail -f监听到
tail -20f 文件名监听文件,并默认显示文件的结尾20行内容

2.5 grep命令

grep可以在任何位置配合管道符|进行过滤操作,例如:
tail -f a.txt |grep 'A:'只监视A:的变化
ll |grep 'ssl'只显示包含ssl名字的文件
ip addr |grep 'inet'只显示inet的IP地址

2.6 cat命令

cat 文件名全文查找,将文件的内容全部打印到控制台
cat命令通常会伴随着grep过滤一起使用,例如:
cat a.txt |grep "abc"只输出有abc的行
cat a.txt |grep "abc" |grep "ok"abc的基础上再次过滤ok的行

2.7 less命令

less 文件名根据屏幕大小默认显示出一页的内容
在此模式下,我们可以进行如下操作:
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将“tab”键显示为规定的数字空格
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n重复前一个搜索(与 / 或 ? 有关)
N反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown] 向下翻动一页
[pageup] 向上翻动一页

2.8 Linux下的搜索命令

whereis 命令查找该命令在哪一个目录下
find -name 文件名查找该文件在哪一个目录下

2.9 top命令

该命令可以监视系统的资源,相当于 Windows 下的任务管理器的性能
image.png
我们可以监视到cpu利用率,内存占比等信息。

2.10 shell

shell 在 linux 中就是一个批处理文件,类似于 Windows 中的.bat文件,但是 linux 中的批处理文件是.sh文件。执行该文件后,系统会从上到下执行文件中的每一行命令。
执行vi doit.sh可以创建一个doit.sh的文件。我们可以使用vi命令编辑该文件的内容

  1. mv b.txt c.txt
  2. cp c.txt test/b.txt

现在编辑完成,保存后执行,会发现显示-bash: ./doit.sh: Permission denied,表示该文件没有可执行权限。我们需要对此文件进行授权。
使用如下命令完成授权,后续会解释该命令的含义:

  1. chmod 777 doit.sh

2.11 文件授权

我们每次使用ll命令查看文件夹中的内容时,每个文件都会有一个前缀。例如:
image.png
每个文件的前缀-rw-r--r--等内容都代表一个文件的权限,我们需要将这一串字符拆解成四段:

  1. 第一个符号-代表文件类型
    1. -代表文件
    2. d代表目录
    3. l代表 link ,相当于快捷方式
  2. 后续的九个字符,每三个为一组,分别代表拥有者权限、用户组权限、其他组权限,每一种的最高权限是rwx
    1. r代表可读,权重为 4
    2. w代表可写,权重为 2
    3. x代表可执行,权重为 1
  3. 我们为文件赋权时,可以为每个对象赋予对应权重的权限,即将对应的权限的权重值累加即可。例如可读可写对应为5,仅可读对应为4,最高为7,代表可读可写可执行,无权为0,以此类推
  4. 通过chmod 每一组对象的权重值 文件名可以为一个文件赋权。

    2.12 查看进程与结束进程

    使用ps aux可以查看全部进程,例如:
    image.png
    我们也可以使用|grep来过滤某些进程,例如:
    image.png
    每一个进程都有其对应的PID,我们可以通过执行kill PID来结束掉当前进程
    1. kill 1382

    2.13 Linux上安装软件

    在 Linux 系统上,可以使用yum install xxx来安装软件,我们也可以使用yum search xxx来查找是否存在某个软件可以安装的版本。yum就类似于npmmaven,将别人上传到公共仓库的包拉取下来安装。
    例如安装jdktomcat
    首先查询jdk版本
    1. yum search java |grep "jdk"
    会显示有关jdk的所有课安装的信息。
    1. yum install java-1.8.0-openjdk.x86_64 -y
    安装tomcat也是如此
    1. yum install tomcat
    一般安装的路径都存放在/usr/share中,我们可以进入此目录查看,也可以修改配置文件等操作,然后启动服务service xxx start
    1. service tomcat start
    停止服务使用service xxx stop,也可以直接kill PID
    1. service tomcat stop
    2. # 或
    3. kill 1234

    2.14 lsof命令

    lsof命令可以根据端口号查找进程,使用之前需要安装
    1. yum install lsof -y
    例如,查询8080端口的进程
    1. lsof -i:8080

    2.15 关闭防火墙

    通常我们在 Linux 上启动的服务,外界是无法访问的。我们需要关闭防火墙
    1. systemctl disable firewalld
    关闭防火墙后需要重启
    1. reboot

    2.16 curl命令

    curl命令可以发起一个 http 请求,获取到页面数据,加上对应的参数还可以获取响应头信息
    1. curl -i www.baidu.com
    我们也可以定义一下tomcat的主页面,进入tomcat安装目录,进入/webapps/ROOT创建index.html,使用vim命令编辑后保存,重启 tomcat 服务后使用curl http://127.0.0.1:8080即可访问到 tomcat 的默认页面。

    2.17 zip压缩与unzip解压

    想要使用zip压缩与unzip解压都需要先进行安装
    1. yum install zip -y
    2. yum install unzip -y
    然后我们可以对一个目录进行压缩,zip -r 压缩文件名 文件名

    注意:要压缩文件夹需要使用-r

  1. zip -r test.zip test

解压unzip 压缩文件

  1. unzip test.zip

2.18 tar包的压缩与解压

tar不需要安装,可以直接使用,压缩文件成xxx.tar有两种方式

  1. # 第一种方式
  2. tar -cvf test.tar test
  3. # 第二种方式
  4. tar -zcvf test.tar test

注意:

  1. -cvf的压缩体积很大,远大于-zcvf

同样解压xxx.tar也有两种方式

  1. # 解压 -cvf 模式的tar
  2. tar -xvf test.tar
  3. # 解压 -zcvf 模式的tar
  4. tar -xzvf test.tar

2.19 scp传送文件

我们可以向另一台 Linux 系统传送一个文件,使用scp命令,该命令不需要安装,系统自带。
使用如下命令:scp 要传送的文件 用户@主机IP:存放的路径,例如:

  1. scp ./test2.tar root@192.168.1.22:~/test2.tar

2.20 安装mysql

yum仓库没有mysql的映射,所以我们需要先下载安装包。
通过wget下载,首先安装wget

  1. yum install wget -y

然后通过wget下载 mysql 的安装包

  1. wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

安装包下载完毕后,我们需要进行安装

  1. rpm -ivh mysql-community-release-el7-5.noarch.rpm

现在,就已经将我们的安装包添加到内存了,可以使用yum进行安装了
分别安装 mysql 的服务端,测试端,客户端

  1. #安装 mysql 服务端
  2. yum install mysql-server
  3. #安装 mysql 测试端
  4. yum install mysql-devel
  5. #安装 mysql 客户端
  6. yum install mysql

进入/etc/my.cnf修改字符集

  1. vim /etc/my.cnf

添加一行character-set-server=utf8,然后保存并退出
然后,启动 mysql 服务,并修改登录密码

  1. service mysqld start
  1. # 选择数据库
  2. USE user;
  3. # 修改用户密码
  4. UPDATE user SET password = password("123456") WHERE user = "root";
  5. #刷新
  6. flush privileges;

最后quit退出重新登录即可。端口号默认还是3306

2.21 安装Nginx

安装 Nginx 之前,我们需要先安装一下 c++ ,因为 Nginx 是基于 c++ 来开发的

  1. yum install gcc-c++

然后进入vim /etc/yum.repos.d/nginx.repo文件,将nginx的安装包配置一下

  1. name=nginx repo
  2. baseurl=http://nginx.org/packages/centos/7/$basearch/
  3. gpgcheck=0
  4. enable=1

将 Nginx 的安装包添加进去

  1. sudo yum install epel-realease

开始安装

  1. sudo yum install nginx

完成!!

2.22 设置开机自启

进入/etc/profile.d/,这个目录下面的文件都会在开机的时候执行一次,所以我们可以在此目录下创建一个shell批处理文件。开机的时候启动服务即可。

  1. service tomcat start
  2. service nginx start