Linux基础入门

124 阅读14分钟

Linux 教程

Linux 源码下载地址:www.kernel.org/

CentOS下载地址:mirrors.163.com/centos/ mirrors.aliyun.com/centos/7/is…

1. Linux 安装

  1. 磁盘分区
    1. /boot: 1G 文件系统:ext4
    2. /swap: 2G 文件系统:swap
    3. /:剩余的大小 文件系统:ext4
  2. 网络连接的三种方式
    1. 桥接模式: 虚拟系统可以直接和外部网络通讯,但容易造成IP冲突
    2. NAT模式: 网络地址转换模式,虚拟机系统可以和外部系统通讯,不会造成IP冲突,但是外部不能和虚拟系统通信
    3. 主机模式: 独立的系统 image.png
    4. 网络链接模式选择桥接模式,IP地址参考虚拟机编辑/虚拟网络编辑器
  3. Linux网卡配置
    1. 修改配置文件,指定IP地址: /etc/sysconfig/network-scripts/ifcfg-ens33

      BOOTPROTO="static"
      IPADDR=10.0.28.128
      NETMASK=255.255.255.0
      GATEWAY=10.0.28.2
      DNS1=10.0.28.2
      
    2. 查看IP地址: ip addr

    3. 重启网络服务: systemctl restart network

  4. 安装vim: yum -y install vim
  5. centos7已经停止维护,yum没有可用的镜像源,可以配置国内镜像源
1. 备份原有的repo文件:
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2. 下载阿里云的CentOS7的repo文件
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    或者
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3. 清理yum缓存并重新生成缓存
    yum clean all
    yum makecache

2. Linux 目录结构

  1. /bin => 用于存放最常用的指令
  2. /sbin => 用于存放系统管理员常用的系统管理程序
  3. /home => 存放普通用户的主目录,每个用户都有一个自己的目录
  4. /root => 系统管理员的主目录
  5. /lib => 系统开机所需要最基本的动态连接共享库
  6. /lost+found => 这个目录一般情况下是空的,当系统非法关机后会存放一些文件
  7. /etc => 所有系统所需要的配置文件和子目录
  8. /usr => 用户很多应用程序和文件放在这个目录下
  9. /boot => 存放启动Linux时使用的核心文件,包括一些连接文件及镜像文件
  10. /proc => 这个目录是一个虚拟的目录,他是系统内存的映射,访问这个目录来获取系统信息
  11. /srv => 该目录存放一些服务启动之后需要提取的数据
  12. /sys => 这是linux2.6内核中的一个很大的变化,该目录下安装了2.6内核中出现的一个新的文件系统sysfs
  13. /tmp => 存放一些临时文件
  14. /dev => 类似于windows中的设备管理器,所有的硬件用文件的形式存储
  15. /media => linux系统自动设别的一些设备,如U盘,光驱等挂载在该目录下
  16. /mnt => 可以让用户临时挂在别的文件系统
  17. /opt => 给主机额外安装软件的目录
  18. /usr/local => 软件所安装的位置,一般是通过源码编译方式安装的软件
  19. /var => 存放不断扩展的文件,经常被修改的目录,各种日志文件等
  20. /selinux => SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式

3. Linux 实操篇

1 防火墙
// 查看防火墙状态
firewall-cmd --state
// 停止防火墙
systemctl stop firewalld
// 禁止开机启动
systemctl disable firewall.service
// 查看防火墙开放的端口
firewall-cmd --zone=public --list-ports
// 添加防火墙开放端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
// 重置
firewall-cmd --reload
2. 远程登陆
  1. XShell下载:www.xshell.com/zh/free-for…
  2. Linux查看IP地址:ifconfig
3. 文本编辑器
1. vi/vim

Linux会内置vi文本编辑器,vim具有程序编辑能力,相当于vi的增强版

vi/vim 安装命令 => yum install -y vim tree lrzsz wget curl unzip

  1. 编辑模式: 可进行编辑,按esc可进入一般模式

  2. 一般模式::或者/ 进入命令模式,按 i/I/a/A 进入编辑模式

  3. 命令模式: 按esc可进入一般模式

  4. 命令模式下 wq(保存并退出);q(退出,不保存);q!(强制退出,不保存)

2. 快捷键
  1. 拷贝当前行:一般模式中 yyp;拷贝多行:yy 行数 p
  2. 删除当前行:一般模式中 dd;删除多行:行数 dd
  3. 在文件中查找: 输入 /关键字,回车查找,输入 n 查找下一个
  4. 设置[取消]文件行号:输入 :set nu[:set nonu]
  5. 快速定位文件首行[尾行]:一般模式中 gg => 到达文件首航;G => 到达文件尾行
  6. 撤销操作:一般模式中 u
  7. 快速定位到某一行:一般模式中 输入行号 + shift + g
4. 关机,重启,用户管理
1. Linux 关机,重启,用户的登录注销
  1. shutdown -h now => 立即关机

  2. shutdown -h 1 => 1分钟后关机

  3. shutdown -r now => 立即重启

  4. halt => 关机

  5. reboot => 重启

  6. sync => 把内存中的数据同步到磁盘

    注意:在执行关机,重启的命令前最好先执行 sync

  7. su - [用户名] => 切换用户

  8. logout => 退出当前用户

2. 用户管理
  1. useradd 用户名 => 添加用户

    如果添加用户时,没有指定用户目录,则默认用户目录在 /home/用户名

  2. useradd -d 目录名称 用户名称 => 添加用户并指定用户目录

  3. useradd -g 组名 用户名 => 添加用户并放入指定组

  4. passwd 用户名 => 给指定用户设置密码

  5. pwd => 显示当前用户所在目录

  6. userdel 用户名 => 删除用户,保留用户目录

  7. userdel -r 用户名 => 删除用户及其用户目录

  8. id 用户名 => 查询用户信息

  9. who am i => 查询第一次登录的用户

3. 用户组管理

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

  1. groupadd 组名 => 新增组
  2. groupdel 组名 => 删除组
  3. usermod -g 组名 用户名 => 切换用户组
  4. usermod -d 目录名 用户名 => 切换用户所在目录

用户,用户组相关文件

  1. /etc/passwd => 用户配置文件,记录用户的各种信息

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

  3. /etc/group => 组的配置文件,记录用户组的信息

5. 实用指令
1. 指定运行级别
  1. 基本介绍

    0:关机

    1:单用户 => 可找回丢失的密码

    2:多用户状态没有网络服务

    3:多用户状态有网络服务

    4:系统未使用,保留给用户

    5:图形界面

    6:系统重启

    常用运行级别是3和5,也可以指定默认运行级别

    通过 init命令切换不同的运行级别

  2. systemctl get-default => 查看当前默认运行级别

  3. systemctl set-default multi-user.target => 设置默认运行级别为3

2. 找回root密码

image.png

image.png

image.png

3. 常用指令

linux 中隐藏文件以 .开头

1. 帮助指令
  1. man 命令
  2. help 命令
2. 文件目录指令
  1. pwd => 显示当前工作目录的绝对路径
  2. ls [选项] [目录或文件夹] => 查看目录中的文件信息
    1. -a 显示当前目录所有目录和文件,包括隐藏是
    2. -l 以列表的方式显示信息
    3. -lh 格式化文件大小
  3. cd [目录] => 切换目录
    1. cd ~ / cd : 回到自己的家目录
    2. cd .. 回到上一级目录
  4. mkdir [选项]
    1. -p 创建多级目录
  5. rmdir [目录] 删除空目录
  6. rm -rf [目录] 删除目录及其文件
  7. touch 创建空文件
  8. cp 复制文件到指定目录
    1. -r 递归复制整个文件夹
    2. \cp 强制覆盖,不提示
  9. rm 移除文件或目录
    1. -r 递归删除整个目录
    2. -f 强制删除不提示
  10. mv 移动文件目录或重命名
    1. mv [oldFileName] [newFileName] 重命名
    2. mv [原路径] [新路径] 移动文件
  11. cat 查看指定文件
    1. -n 显示行号
    2. | more 以more的方式查看文件
  12. more 以全屏的方式按页显示文本文件内容
    1. space键 下一页
    2. enter键 下一行
    3. q 退出more
    4. ctrl + f 向下滚动一屏
    5. ctrl + b 返回上一屏
    6. = 输出当前行的行号
    7. :f 输出文件名和当前行的行号
  13. less 分屏查看文件,与more类似,在前世内容时使用懒加载,对于显示大文件有更高的效率
    1. 空格键 向下翻页
    2. page down 向下翻页
    3. page up 向上翻页
    4. /字符串 向下查找字符串,n:下一个;N:上一个
    5. ?字符串 向上查找字符串,n:下一个;N:上一个
    6. q 退出less
  14. echo 输出内容到控制台
    1. echo $PATH 输出环境变量
    2. echo $HOSTNAME 输出环境变量
  15. head 用于显示文件的开头部分,默认情况下显示前10行
    1. -n 行数 显示前几行
  16. tail 默认情况下显示文件前10行
    1. tail -n 行数 显示文件前几行
    2. tail -f 实时显示文件的更新
  17. > >>
    1. > 输出重定向(相当于覆盖)
    2. >> 追加
  18. cal 显示日历
  19. ln 软连接,也叫做符号链接,类似于windows的快捷方式
    1. ln [原文件或目录] [软连接名]
  20. history 查看或执行最近执行的命令
    1. history 10 查看最近10个命令
    2. ! 编号 执行对应编号的命令
3. 时间日期类指令
  1. date 显示当前时间
    1. date +%Y 显示当前年份
    2. date +%m 显示当前月份d
    3. date +%d 显示当前天
    4. date +%H 显示当前时
    5. date +%M 显示当前分
    6. date +%S 显示当前秒
    7. date -s 时间字符串 设置系统当前时间
  2. cal 查看本月日历
4. 查找类指令
  1. find [搜索范围] [选项]

    选项:

    1. -name 按照指定文件名查找文件
    2. -size 按照指定文件大小查找文件
      1. -size +10M 大于10M
      2. -size -10M 小于10M
      3. -size 10M 等于10M
    3. -user 查找属于指定用户名所有文件
  2. locate 快速查找文件,第一次使用前必须先执行updatedb 指令创建 locate 数据库

  3. which 指令 查看对应指令所在目录

  4. grep grep指令和管道符 | 搭配使用

    grep [选项] 查找内容 源文件

    1. -n 显示匹配行及行号
    2. -i 忽略字母大小写
5. 压缩与解压缩
  1. gzip/gunzip

  2. zip/unzip

    1. zip -r 递归压缩,及压缩文件夹
    2. unzip -d 目录 指定解压后文件的存放目录
  3. tar

    tar [选项] 文件名 打包的内容

    1. -c 产生.tar打包文件
    2. -v 显示详细信息
    3. -f 指定压缩后的文件名
    4. -z 打包同时压缩
    5. -x 解包.tar文件
4. 组管理和权限管理
1. Linux组基本介绍

在Linux中每个用户必须属于一个组,每个文件有所有者,所在组,其他组的概念

  1. 所有者: 一般为文件的创建者

    1. ls -ahl 查看文件的所有者
    2. chown 用户名 文件名 修改文件的所有者 image.png
  2. 所在组: 当一个用户创建一个文件之后,该文件所在组就是该用户所在组

  3. 修改文件所在组: chgrp 组名 文件名

  4. 其他组: 除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组

2. 权限基本介绍

image.png

  1. 0-9 为说明

    1. 第0为确定文件类型,
      1. -:表示普通文件
      2. d:表示文件夹
      3. l:表示链接
      4. c:表示字符设备,如键盘,鼠标等
      5. b:表示块设备,如硬盘
    2. 第1-3位确定文件所有者拥有的权限
    3. 第4-6位确定文件所属组拥有的权限
    4. 第7-9位确定文件其他组拥有的权限
  2. rwx权限详解

    1. r:代表可读取 => 可以读取查看文件内容/可以读取查看目录内容
    2. w:代表可写 => 可以修改,但不代表可以删除。删除文件的前提是对该文件所在目录拥有w的权限/可以对目录内创建,删除,重命名目录
    3. x:代表可执行 => 可以执行文件/cd 进入目录
  3. 文件权限用数字表示: r => 4, w => 2, x => 1

  4. 其他说明:

    1. 1:文件 => 硬连接数/ 目录 => 子目录数量
    2. root: 文件所有者
    3. root: 文件所在组
    4. 0:文件大小(单位kb), 如果是目录显示4096
    5. 11月 21 21:52 :最后修改日期
    6. demo.txt: 文件名称
  5. 修改文件权限

    // 通过chmod指令,可修改文件权限
    // 1. 第一种方式:+, -, = 变更权限
    // u: 用户, g: 组, o: 其他用户, a: 所有人
    1. chmod u=rwx,g=rw,o=r 文件/目录
    2. o+w 文件/目录
    3. a-x 文件/目录
    // 2. 使用数字变更权限
    // 第一个数字表示用户权限
    // 第二个数字表示组权限
    // 第三个数字表示其他用户权限
    chmod 777 文件/目录
    
    // chown 修改文件所有者/所在组
    chown 新用户名 文件/目录名
    chown 新用户名:新组名 文件/目录名
    // 递归修改
    chown -R 新用户名:新组名 目录名 
    
    // chgrp 指令修改文件/目录所在组
    chgrp 新组名 文件/目录名
    // 递归操作
    chgrp -R 新组名 文件/目录名
    
6. 定时任务调度
1. crond 任务调度简介
  1. 概述:任务调度是指在某个时间执行特定的命令或程序
  2. 基本语法:
    crontab [选项]
    // 常用选项:
    1. -e 编辑crontab定时任务
    2. -l 查询crontab定时任务
    3. -r 删除当前用户所有的crontab定时任务
    
  3. 案例:
    /*
        第一个*:一小时中的第几分钟  0-59
        第二个*:一天中的第几个小时  0-23
        第三个*:一个月中的第几天    1-31
        第四个*:一年中的第几个月    1-12
        第五个*:一周中的星期几      0-7 (0和7都表示星期天)
    */
    // 每分钟执行:查询/etc/中的所有内容,重定向到/tmp/to.txt文件中
    crontab -e 回车
    */1 * * * * ls -l /etc/ > /tmp/to.txt
    
    /*
        定时任务重表示时间的特殊符号说明
        * 表示任何时间
        , 表示不连续的时间:0 4, 8, 16 * * * => 表示每天4点,8点,16点执行 
        - 表示连续的时间段:0 5 * * 1-6 => 表示没周一到周六5点之执行
        */n 表示每个多久执行: */10 * * * * => 表示每隔10分钟执行
    */
    
2. at 定时任务
  1. 概述:at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行。默认情况下,atd守护进程每60秒检查作业队列。at是一次性定时任务,执行完一个任务后就不再执行此任务。在使用at命令时,必须保证atd进程的启动,可以使用 ps -ef | grep atd 命令查看
  2. 基本语法
    // at安装
    yum install at -y
    // 设置atd自动启动
    systemctl enable --now atd
    // 查看atd进程是否启动
    ps -ef | grep atd
    at [选项] [时间]
    Ctrl + D 结束at命令
    // 编写at任务时,需要按两次 Ctrl + D
    
    
  3. 案例
    // 1. 查看系统中没有执行的工作任务
    atq
    // 2. 删除已经设置的工作任务
    atrm 编号
    
7. Linux分区
1. 原理介绍
  1. 对于Linux来说无论有几个分区,分给哪一个目录使用,它归根绝地只有一个根目录,一个独立且唯一的文件系统,Linux中每一个分区都是用来组成整个文件系统的一部分
  2. Linux采用一种叫 “挂载” 的处理方法。它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这是的一个分区将使它的存储空间在一个目录下获得
  3. 示意图

image.png

2. 硬盘说明
  1. Linux硬盘分IDE硬盘SCSI硬盘,目前基本上都是SCSI硬盘
  2. 对于IDE硬盘,驱动器标识符为:“hdx~”,其中 “hd”表明分区所在设备的类型,“x” 为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”表示分区,前四个分区用数字1-4表示,他们是主分区或扩展分区,从5开始就是逻辑分区
  3. 对于SCSI硬盘,则标识符为:“sdx~”
    ps: 
    1. hda3: 表示第一个IDE硬盘上的第三个主分区或扩展分区
    2. hdb2:表示第二个IDE硬盘上的第二个主分区或扩展分区
    
  4. 查看所有设备挂载情况:lsblk / lsblk -f