• Linux


    Linux

    一、Linux 简介

    1.1 为什么要了解Linux

    开源、稳定、漏洞少、靠谱公司都用它。

    1.2 Linux是什么

    Linux是一套免费试用和自由传播的类Unix操作系统

    1.3 Linux 与 Unix的那些事

    1.4 不同时代不同选择

    1.5 Linux 家族

    各个Linux系统的主要区别

    • 选择不同的内核版本
    • 集成不同的应用程序
    • 定制不同的图形界面

    二、VM 与 Linux 的安装

    2.1 从哪下载

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

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

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

    认已经开启。

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

    2.3 安装虚拟机-组装电脑

    安装步骤详见本博客Linux的安装

    2.4 安装Linux-装系统

    安装步骤详见本博客Linux的安装

    2.5 xshell 和 xftp 工具的安装

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

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

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

    三、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这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    /srvservice缩写,该目录存放一些服务启动之后需要提取的数据
    /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这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

    四、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.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下的磁盘分区

    2. 常用的两种磁盘分区类型

    • mbr

      操作系统要安装在主分区

      只支持4个主分区

      扩展分区占一个主分区

    • gpt(win7 64位以后)

      无限主分区

      支持超大硬盘 3T以上

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

    ​ sblk 或者 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)

    5.5 进程类

    1. ps(process)

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

    ​ 3.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端口的进程

    六、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

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

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

    3.组(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 改变文件的所有组

    七、rpm 与 yum

    7.1 rpm

    1. RPM(RedHat Package Manager),Rethat软件包管理工具,类似windows里面的setup.exe是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通用的。

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

    3. 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

    3. 配置完成后执行如下操作

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

      source /etc/profile

      重启系统[最靠谱]

    8.2 安装Tomcat

    1. 解压缩到/opt
    2. 进入到Tomcat目录下的bin目录中,启动tomcat ./startup.sh

    8.3 安装Eclipse

    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 命令才能生效.

  • 相关阅读:
    Guide2:Consuming a RESTful Web Service
    腾讯云轻量应用服务器性能如何?值得入手吗?
    100G以太网光模块解决方案
    学了labview怎么系统的编一个程序?
    日期类练习题
    Java 优化:读取配置文件 "万能方式" 跨平台,动态获取文件的绝对路径
    python web开发(四): Bootstrap
    【MySQL数据库笔记 - 进阶篇】(二)索引
    【前端必会】webpack loader 到底是什么
    说一下你项目或者实习的收获?
  • 原文地址:https://blog.csdn.net/LMY0210/article/details/128153971