一 Linux系统简介与安装

1 发展简介

MIT, GC公司 => 国防部/大学使用 => UNIX缓慢, C语言重写

2 linux主要发行版本

image.png

3 发展历史

  1. 1991芬兰大学生李纳斯和其他爱好者共同开发,linux是开源软件,源码开放的UNIX

linux内核+自主开发=>自定义linux: 发行版本

  1. 发行版本两大阵营

RedHat Debian


image.png

4 unix和linux的关系

Linux 是一个类似 Unix 的操作系统,Unix 要早于 Linux,Linux 的初衷就是要替代 UNIX,并在功能和用户体验上进行优化,所以 Linux 模仿了 UNIX(但并没有抄袭 UNIX 的源码),使得 Linux 在外观和交互上与 UNIX 非常类似。 来源于 http://c.biancheng.net/view/707.html

5 软件的开源

什么开源软件? https://zhuanlan.zhihu.com/p/27501070

  1. 使用的自由 免费使用
  2. 研究的自由 能够获取到软件的源码
  3. 散步和改良的自由 自由传播 改良和销售

LAMP技术架构 LINUX Apache Mysql PHP

6 linux的应用领域

6.1 基于linux的企业服务器

谷歌 腾讯qq门户网站 大型软件公司的服务器, 都是linux系统的服务器

6.2 嵌入式应用

安卓系统 苹果ios 底层也是linux系统, 机顶盒, 只能终端…

6.3 linux在电影娱乐行业

电影娱乐行业的图像图形处理软件, 也有很多是linux开发, 运行在linux系统上

7 关于linux的学习方法

  1. 关于命令行
    window是偏应用, 侧重客户, linux是面向专业人员,同时由于类似windows的GUI界面比较消耗系统资源 ,而且安装的东西越多,系统越不安全, 所以出于种种考虑, linux为命令行界面操作
  2. 关于问题
    自行先查找问题的答案, 多想想不同一个解决思路和解决方案, 然后记录下来, 实在没有办法解决, 可以找一位能够帮助你的人请教 询问, 可以将自己思考问题的思路和方式让对方指出, 对你自己好, 对别人来说看到你这么爱学, 也乐于帮助你, 而不是自己发现问题就问别人, 当别人是百度百科
  3. 忘掉windows的思维方式
    盘符, 界面….
  4. 学习目标, 学习, 练习, 检验, 达到目标

8 linux安装

8.1VMWARE安装使用

(1) VMWare

VMware是一个虚拟PC的软件,可以在现有的操作系统上虚拟出一个新的硬件环境,相当于模拟出一台新的PC ,以此来实现在一台机器上真正同时运行两个独立的操作系统 。 VMware官方网站 http://www.vmware.com

(2) 特点

VMware主要特点: 不需要分区或重新开机就能在同一台,PC上使用两种以上的操作系统 本机系统可以与虚拟机系统网络通信 可以设定并且随时修改虚拟机操作系统的硬件环境

(3) 安装

建议的VMware配置 CPU:建议主频为1GHz以上 内存:建议1GB以上 硬盘:建议分区空闲空间8GB以上 过程: 参考网上 关于克隆和快照, 快速恢复linux某个状态, 防止系统崩溃, 但这只是vmware提供的功能, 真实的linux服务器没有该操作, 需要注意

8.2 系统分区

(1) 磁盘分区

磁盘分区是使用分区编辑器(partition editor)在磁盘上划分几个逻辑部分。碟片一旦划分成数个分区(Partition),不同类的目录与文件可以存储进不同的分区。

主分区:最多只能有4个。 扩展分区: 最多只能有1个。 主分区加扩展分区最多有4个。 不能写入数据,只能包含逻辑分区 逻辑分区

(2) 格式化

:::tips 格式化(高级格式化)又称逻辑格式化,它是指根据用户选定的文件系统(如FAT16、FAT32、NTFS、EXT2、EXT3、EXT4等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间。 :::

(3) 硬件设备文件名

:::tips 一切皆文件
硬件 设备文件名
IDE硬盘 /dev/hd[a-d]
SCSI/SATA/USB硬盘 /dev/sd[a-p]
光驱 /dev/cdrom或/dev/hdc
软盘 /dev/fd[0-1]
打印机(25针) /dev/lp[0-2]
打印机(USB) /dev/usb/lp[0-15]
鼠标 /dev/mouse :::

(4) 挂载

:::tips 4、挂载
必须分区
/(根分区)
swap分区 (交换分区,内存2倍,不超过2GB)
推荐分区
/boot(启动分区,200MB) :::

(5) linux文件系统结构为一个文件树

(6) 总结

:::tips 分区: 把大硬盘分为小的逻辑分区
格式化: 写入文件系统
分区设备文件名: 给每个分区定义设备文件名
挂载: 给每个分区分配挂载点 :::

8.3 Linux安装

:::tips /root/install.log:存储了安装在系统中的软件包及其版本信息
/root/install.log.syslog:存储了安装过程中留下的事件记录
/root/anaconda-ks.cfg:以Kickstart配置文件的格式记录安装过程中设置的选项信息, 当我们需要安装大量服务器时, 我们 只需要自定义一台的安装过程, 其他待安装通过该台服务器的kickstart就能够实现自动安装 :::

8.4 远程linux连接

(1) 远程连接之网络

:::tips

  1. 桥接模式
    虚拟机和宿主机(你的电脑平级,ip网段一样) 真实网卡, 但是由于虚拟机会分配一个ip,在少人的局域网可以玩, 但是多人情况下会出现ip冲突的情况
  2. NAT模式
    虚拟机在宿主机之下, 也就是虚拟机需要通过宿主机才能与外部网络通信, 不会占用ip网段
  3. Host-only模式
    虚拟机只能和宿主机进行通信 :::

    (2) 远程连接工具

    :::tips xshell SecureCT
    …. :::

    (3) linux注意点

    :::tips

  4. 严格区分大小写

  5. 一切皆文件: 包括我们的硬盘, 声卡….都是文件形式存在
  6. linux文件没有拓展名这种形式
  7. Linux中所有的存储设备都必须挂载以后才能使用, 例如u盘, 硬盘, 光盘…
  8. windows中的程序不能直接在linux中安装和执行
  9. linux只能重启, 不允许关机, 同时重启之前先关闭重要服务
  10. 服务器高峰期不要执行高负载命令(大数据扫描….)
  11. 密码定期更新 合理分配权限
  12. 重要数据 文件 定期备份

  13. :::

    9 linux文件目录

    :::tips 略…. :::

    二 Linux的常用命令

    1 文件处理

    :::tips

  14. ls -aldh /etc 显示文件列表信息
    -a 所有 -l列表形式 -h文件大小 -d具体目录属性

  15. mkdir -p 创建目录文件夹
    -p 递归创建
  16. cd . 或 .. 目录切换
  17. pwd 当前所在目录
  18. rmdir 删除非空目录
  19. cp -rp 要复制的目录/文件 目标目录文件
    -r 复制目录 -d保持文件属性
  20. mv 源文件/目录 目标文件/目录 剪切/更名
  21. rm -rf 文件/目录 删除文件或目录
    -r 递归 -f 强制删除
  22. touch 文件名 创建一个文件
  23. cat(tac) -n 文件 查看某个文件内容
    -n 行号
  24. more 文件名 分行分页查看文件内容
    f/空格 翻页 enter 换行 q/Q 退出浏览
  25. less 文件名 分行分页查看文件内容
    pageUp键往回看 /关键字 查找, 然后n查看下一个关键字
  26. head -n 行数 文件名 查看前n行文件
    -n+行数 -n 18: 前18行
  27. tail -nf 行数 文件名 查看后面几行
    -f 动态输出文件内容变化
  28. ln -s 原文件 目标文件
    -s 软链接 只是一条线, 软链接改变 ,源文件不北边 全权限
    -d 硬链接 链接类似源文件的copy, 但又不止仅限copy, 硬链接内容改变, 源文件内容改变 :::

    2 权限管理

    1. chmod 修改文件权限
      chmod [{ugoa}{+-=}{rwx}] 文件名和目录
      chmod u=rwx g=wx o=r /list list目录, 所有用户rwx, 组用户 wx, 所属o
      chmod 777/750/051/.. 文件/目录名 每个数字表示rwx权限的和 r 4 w2 x1
      chmod -R 777 文件/目录名 递归修改文件夹文件权限

对file有rwx 能够对文件内容进行读写删除
对directory有rwx权限, 能够对文件夹中的文件或文件夹进行读写删除, 注意

  1. chown 更改文件的所有者
    chown [username] [directoryname]
    useradd [username] 添加用户
  2. chgrp 更改文件的所有组
    chgrp [groupname] [directoryname]
    groupadd [groupname]
    文件创建者默认为文件的所有者
  3. umask 修改创建文件时文件的默认权限 少点更改
    umask -S 查看创建文件时默认的权限
    默认创建的文件都没有x(可执行)权限

3 文件搜索

  1. find 文件搜索
    find [搜索范围] [匹配条件]
    find /etc -name [searchbyname] 精确匹配
    find / -name filename 模糊匹配
    find / -name filename??? filename开头的文件
    find / -iname fileNAME 不区分大小写查找
    find /etc -size +/-/n 文件大小>/</= n 的文件
    find /home -user/-group username 查找文件所有者/所有组是usename的所有文件
    find /etc -cmin/-amin/-mmin 5 查找五分钟内被修改过文件属性/访问时间/文件内容的
    find /etc -size +10000 -a/-o -size -f/-d etc下文件>10000 且 为file/directory的文件(夹)
  2. locate 文件搜索 <快速>
    locate [filename] locate资料库搜索文件名
    updatedb 更新locate资料库 -> temp目录下文件无法搜索
    locate -i [filename] 忽略大小写搜索文件
  3. which linux原生命令所在位置
    which cp/rm cp命令在哪/别名
  4. whereis 命令所在位置, 命令帮助文档所在的位置
    whereis rm/useradd rm/userad命令所在的位置/帮助文档所在位置
  5. grep 文件内容搜索
    grep [keyword] [filename] keyword在file的第几行
    grep -v ^# /etc/inittab 去掉#所在行

4 帮助命令

  1. man 帮助命令
    man ls 查看ls命令的帮助文档
    man services 查看配置文件相关信息
  2. —help 命令简略帮助
  3. help / info

5 用户管理

  1. useradd 用户添加
    useradd [username] 增加一个用户
  2. passwd 更改用户密码
    passwd [username] 更改某个用户的用户名, 如果是修改自己密码,usename不用添加
  3. who 查看登录本服务器的所有用户(简略)
  4. w 查看登录本服务器的所有用户(详细)
  5. uptime 查看服务器负载情况 1/5/15分钟

6 压缩解压

  1. gzip 文件压缩 只能压缩文件, 不能压缩目录, 压缩后原文件消失gunzip 文件解压缩**
    .zip .gz .rar
  2. tar 打包
    tar -cvzf [压缩后的文件名] [被压缩文件/目录]
    -c 打包 -v 显示详细信息 -f 指定文件名 -z 打包同时压缩
    tar -zxvf [解压缩的tar.gz文件]
    -z 解压缩
  3. zip 打包
    zip -r [压缩后的文件名] [待压缩文件/目录] 原文件保留, 可压缩 目录
    unzip [文件名]
  4. bzip2 打包
    bzip2 -k [文件] -k保留原文件 高压缩比
    tar -cjf [压缩后的文件名] [被压缩文件] bzip2能够和tar共同使用

7 网络命令

  1. write [user] [message] 给在线的用户发信息 ctrl+d结束消息编辑, 然后发送
  2. wall [message] 给所有在线用户发信息, 不用+username
  3. ping [ip] 网络是否ping通
  4. ifconfig 查看当前网络/网卡状态
  5. mail [user] 给离线/在线用户发送信息/邮件
    mail 接收邮件
  6. last 所有用户登录的日志信息
    lastlog -u [userid] 用户最后一次登录
  7. traceroute [ip/domain-name] 到某个ip/域名的具体链路
  8. netstat [-t/-u/-l/-r/-n] 网络信息相关
    -t tcp协议 -u udp协议 -l: 监听 -r:路由 -n:ip/端口 -a:所有
    netstat -an 查询所有端口信息
  9. setup 网络配置
    service network restart
  10. mount 文件挂载点
    mount [-t 文件系统] 设备名 文件名 挂载点
    unmout 文件取消挂载

8 关机重启

  1. shutdown [-chr] [时间] 定时关机
    -c 取消 -h 关机 -r 重启
    halt poweroff init 0
  2. reboot 重启
    init 6
  3. 运行级别
    0 关机
    1 单用户 ->最简单模式/安全模式
    2 不完全, 不含NFS服务
    3 完全多用户
    4 未分配
    5 图形界面
    6 重启
    runlevel 查看系统运行级别
  4. logout 退出登录

9 文本编辑器Vim

linux下的全文本编辑器, 用于建立, 编辑, 查看文本文件, 没有菜单, 只有命令

  1. 编辑模式 set nu: 显示行号 set nonu 取消行号
  2. gg 到第一行 GG 到最后一行
  3. nG 到第几行 :n 第n行
  4. $ 到行首 0 到行尾

9.1 Vim工作模式

image.png

9.2 文本插入

image.png

9.3 文本删除

image.png

9.4 复制剪切

image.png

9.5 替换和取消

image.png

9.6 搜索和搜索替换

image.png

9.7 保存和退出

image.png

9.8 vim使用技巧

image.png

三 Linux软件包管理

1 简介

  1. 源码包: c语言, java语言…高级语言, 计算机无法直接识别
    脚本安装包
    优点
    1.1 可以修改源码 1.2 软件包编译安装, 系统效率更高 1.3 卸载/删除更加方便
    缺点
    安装步骤较多, 容易出现拼写错误 编译时间较长,安装二进制安装时间长 如果报错, 解决问题难度较高
  2. 二进制包(RPM 系统默认安装包)
    编译后的源码包, 也就是0101等计算机能够直接识别的软件包
    优点
    安装 卸载简单 安装速度快
    缺点:
    无法修改源码, 查看源码 依赖性强(依赖其他软件

2 npm包管理—-rpm命令管理

2.1 npm包命名规则

包名: httpd
包全面: 全部名字

image.png

2.2 RPM包依赖性

  1. 树形依赖
  2. 环形依赖
  3. 模块依赖 www.rpmfind.net

2.3 RPM安装 升级和卸载

  1. rpm -ivh 包全名 安装
    i install v 安装详细信息 h进度条 —nodeps 不检查依赖性
  2. rpm -Uvh 包名 升级
  3. rpm -e 包名 卸载

2.4 RPM查询

  1. rpm -qa 包名 查询所有已安装
  2. rpm -qi 包名 查询所有安装的信息
  3. rpm -qip 包名 查询未安装的信息
  4. rpm -ql 包名 rpm包安装路径
  5. rpm -qf 系统文件名 查询系统文件属于哪个包
  6. rpm -qR 包名 查询软件包依赖关系

2.5 RPM校验

  1. rpm -V 包名 RPM包校验

3 npm包管理—-yum在线管理

解决rpm命令管理方式的手动下载依赖的问题
yum和rpm都是一种管理方式, 而不是rpm包或者yum包, 一个是管理方式, 一个是被管理的对象

3.1 网络配置和网络yum源

  1. 网络配置,能连通外网
  2. 配置iyum源

image.png

3.2 yum命令

  1. yum list 网络yum源
  2. yum search 包名 查询包名(关键字)
  3. yum -y install 包名 yum方式安装npm包 -y 自动安装
  4. yum -y update 包名 升级所有包(不写包名, 会更新所有npm包,同时会更新linux内核,这个操作可能会导致服务器
    内核无法使用,慎用)
  5. yum -y remove 包名 npm包卸载,自动卸载依赖,当一个npm包被许多npm包依赖,这个操作会导致某个文件被删除
    所有的npm安装的软件都不能使用,慎用

软件组

  1. yum grouplist 查看软件组列表
  2. yum groupinstall 安装软件组名
  3. yum groupremove 移除组

3.3 光盘yum源配置

网络yum源慢, 光盘作为yum源不需要网络

4 源码包管理

4.1 源码包和npm包的区别

  1. 概念不同
  2. 路径不同: npm默认安装位置 源码包手动指定(/usr/local/软件名

image.pngimage.png

4.2 源码包安装

  1. 源码包保存: /usr/local/src 源码包安装路径: /usr/local/
  2. 下载源码包, 解压缩, 进入解压后的源码包
    INTALL目录: 软件安装说明
  3. ./configure 软件配置和环境检查, 定义需要的功能( 安装路径…各种配置) 生成Makefile文件
  4. make 编译
    make clear(如果安装出错, 执行clear)
  5. make install 安装

5 脚本安装包和软件安装包

  1. 脚本安装包: 自动安装过程+安装的软件
  2. Webmin: 图形化管理界面管理linux资源(DNS 文件共享…)

四 Linux用户和用户组管理

  1. 用户管理
    linux安全性的要求, 合理的用户合理的权限合理的文件访问/操作权限, linux中主要是通过用户配置文件来查看和修改用户信息

1 用户配置文件

1.1 用户信息文件 /etc/passwd

  1. linux系统用户的详细信息, 包括用户名, 密码标识, uid(权限 0:超管, 系统用户: 不能删,否则系统
    崩溃, ..其他用户)
    家目录: 普通用户: /home/用户名 超管: /root
  2. 初始组和附加组
    初始组: 用户被创建时就归属的组
    附加组: 用户可以加入初始组以外的其他许多组
  3. 关于Shell
    linux的命令解释器

1.2 用户影子文件 /etc/shadow

  1. 保存用户的密码, 所有人对其都是 0 权限, 内容:
    字段1: 用户名
    字段2 加密后的密码: SHA512密码 感叹号!!/星号*: 禁止登录
    …..
  2. 禁止将影子文件外传

1.3 组信息文件 /etc/group

  1. 组名
  2. 组密码标识(组密码/etc/gshadow
  3. 组管理员用户名
  4. 组中的附加用户

1.4 组密码文件 /etc/gshadow

2 用户管理相关文件

  1. 家目录
    普通用户 /home/用户名 权限700
    超级用户 /root 权限550
    普通用户转变为管理员 -> 加入管理员组
  2. 用户邮箱
    目录 /var/spool/mail/用户名/
  3. 用户模板目录
    目录 /etc/skl 一些添加用户的默认配置, 例如新建用户默认在其默认目录 添加的东西

3 用户管理命令

3.1 useradd

image.png
image.png
image.png

3.2 passwd

  1. 普通用户 passwd
  2. 超级用户 passwd 待改密码的用户名

image.png
image.png

3.3 usermod 和 chage

image.pngimage.png
image.png

3.4 userdel 和 del

image.png
image.png

4 用户组管理命令

4.1 添加

image.png

4.2 修改

image.png

4.3 删除

image.png

4.4 组用户添加/删除

image.png

五 Linux权限管理

1 ACL权限

1.1 简介

忽略传统的普通用户 超级管理员 以及用户组等概念, 单独为某个文件/文件夹给单独一个人设置对应的rwx权限, 更加灵活

1.2 ACL的查看和设置

  1. getfacle 选项 文件名 查看
  2. setfacl 选项 文件名 设置

image.png

1.3 最大有效权限和ACL的删除

image.pngimage.png

1.4 默认ACL权限和递归ACL权限

2 文件特殊权限

2.1 SetUID

image.png

2.2 SetGID

image.png

2.3 Sticky BIT

3 文件系统属性chattr权限

image.png
image.png

4 系统命令sudo权限

超级管理员授予系统某个用户某个命令的执行权限

image.png

六 Linux文件系统管理

1 分区和文件系统

image.png
image.png

2 df du fsck dumpe2fs

2.1 df

image.png

2.2 du(高负载命令, 容易造成服务器宕机)

image.png

2.3 fsck

image.png

2.4 dumpe2fs

image.png

3 挂载命令

4 U盘和光盘的挂载

5 支持NTFS文件系统

6. 使用fdisk进行分区的过程

7 fdisk自动挂载与fstab文件修复

七 Linux的Shell基础

八 Linux的Shell编程

九 Linux的服务管理

十 Linux的系统管理

十一 Linux的日志管理

十二 Linux的启动管理 备份和恢复