Linux学习笔记

Linux笔记

  • Linux--CentOS
    • 基础篇
      • Linux介绍
      • VMware设置--网络适配器
      • 文件系统目录结构
        • 具体的目录结构
    • 实操篇
      • 远程控制Linux系统(登录、上传下载文件)
      • Vi&Vim的使用
        • 1. Vi和Vim的三种常见模式
        • 2. Vi和Vim模式的相互切换
        • 3. Vi和Vim快捷键
      • Linux关机重启,用户登录注销
        • 关机&重启
        • 用户登录注销
      • 用户管理
        • 用户的创建、删除、指定密码、查询
        • 切换用户
        • 用户组的管理
        • 用户和组的配置文件
      • 实用指令
        • 运行级别和找回root密码
        • 帮助指令
        • 文件目录类
        • 时间日期类
        • 搜索查找类
        • 压缩、解压类
      • 组管理和权限管理
        • 组管理
        • 权限管理
        • 练习
      • 任务调度
      • 磁盘分区
      • 进程管理
        • 进程介绍
        • 查询进程
        • 终止进程
        • 服务管理
        • 监控服务
      • RPM包与YUM包管理
        • RPM包
        • YUM包
  • Linux--Ubuntu
    • root用户设置
    • APT软件管理
    • 使用SSH远程登录
  • Linux--Shell编程
    • Shell简介
    • Shell杂项
      • 注释
      • 以后台方式运行
    • Shell变量
      • 变量
      • 环境变量
      • 位置参数变量
      • 预定义变量
    • Shell运算符
    • Shell判断语句
    • Shell流程控制
      • if
      • case
      • for
      • while
    • Shell读取控制台输入
    • Shell函数
      • 系统函数
      • 自定义函数
  • 学习链接

Linux–CentOS

基础篇

Linux介绍

  1. Linux是一款操作系统,免费、开源、安全、高效、稳定,处理高并发强
  2. 发行版:Redhat、CentOS、Ubuntu等

VMware设置–网络适配器

  1. 桥连接模式:Linux可以和其他系统通信,但可能造成IP冲突
  2. NAT模式(推荐):网络地址转换方式:Linux可以访问外网,不会造成IP冲突
  3. 主机模式:Linux是一个独立的主机,不能访问外网

文件系统目录结构

Linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录"/",然后在此目录下再创建其他的目录。Linux以文件的形式管理设备。(在Linux的系统里,一切皆文件)

具体的目录结构

  • /bin (/usr/bin、/usr/local/bin): 是Binary的缩写,这个目录存放着最常使用的命令

  • /sbin (/usr/sbin、/usr/local/sbin): s指Super User,这里存放的是系统管理员使用的系统管理程序

  • /home : 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账户命名的

  • /root : 该目录为系统管理员,也称作超级权限者的用户主目录

  • /etc : 所有的系统管理所需要的配置文件和子目录

  • /usr (Unix System Resource) : 用户的很多应用程序和文件都放在这个目录下,类似于Windows下的Program Files目录

  • /usr/local : 安装软件所在的目录,一般是通过编译源码的方式安装程序

  • /boot : 存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件

  • /porc (慎动): 该目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息

  • /srv (慎动): service缩写,该目录存放一些服务启动之后需要提取的数据

  • /sys (慎动): 这是Linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs

  • /tmp : 该目录用于存放一些临时文件

  • /dev : 类似Windows的设备管理器,把所有的硬件用文件的形式储存

  • /media : Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下

  • /mnt : 该目录是为了让用户临时挂载别的文件系统的,可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容(共享文件夹)

  • /opt : 存放软件安装包的目录

  • /var : 这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件

  • /selinux : (Security-Enhanced Linux)是一种安全子系统(类似360),它能控制程序只访问特定文件

  • /lib : 系统开机所需要的最基本的动态链接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库

  • /lost & /found : 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件

实操篇

远程控制Linux系统(登录、上传下载文件)

  • 软件准备:Xshell(远程登录到Linux的软件)、Xftp(上传和下载文件或软件)
  • 配置:在Linux下输入命令ifconfig获取IP地址,在Xshell中建立连接(端口号为22)

Vi&Vim的使用

1. Vi和Vim的三种常见模式

  1. 正常模式/一般模式

    在正常模式下,可以使用快捷键。可以使用[上下左右]按键来移动光标,使用[删除字符]或[删除整行]来处理档案内容,使用[复制粘贴]来处理文件数据

  2. 插入模式

    在插入模式下,可以编辑输入内容

    按下i,I,o,O,a,A,r,R等任何一个字母后可进入编辑模式,一般来说按i(insert)即可

  3. 命令行模式

    在命令行模式下,可以提供相关指令,完成读取、存盘、替换、离开vim、显示行号等操作

2. Vi和Vim模式的相互切换

Linux学习笔记_第1张图片

3. Vi和Vim快捷键

  1. 拷贝当前行:yy;拷贝当前行向下的n行:nyy;粘贴:p
  2. 删除当前行:dd;删除当前行向下的n行:ndd
  3. 在文件中查找某个单词:命令行下/+关键字,回车查找,输入n可查找下一个
  4. 设置文件的行号:命令行下:set nu;取消文件的行号:命令行下:set nonu
  5. 跳到文档最末行:正常模式下输入G;跳到文档最首行:正常模式下输入gg
  6. 撤销操作:正常模式下输入u
  7. 光标移到指定行:可先显示行号(命令行模式下:set nu),输入行号,按下快捷键(shift+g)
  8. 官方文档:vimtutor
    Linux学习笔记_第2张图片

Linux关机重启,用户登录注销

关机&重启

  • shutdown

shutdown -h now:立即关机

shutdown -h 1:1分钟后关机

shutdown -r now:立即重启

  • halt

​ 直接使用,效果等价于关机

  • reboot

​ 直接使用,重启系统

  • sync

​ 将内存的数据同步到磁盘

用户登录注销

  1. 介绍
  • 登录时尽量少用root账号登录,因为root是系统管理员,有最大的权限,为避免操作失误,可以用普通用户登录,登录后再用su - 用户名命令来切换成系统管理员身份
  • 在提示符下输入logout即可注销用户
  • 注意:logout注销指令在图形运行级别无效,在运行级别3下有效
    Linux学习笔记_第3张图片
    Linux学习笔记_第4张图片

用户管理

用户的创建、删除、指定密码、查询

  1. 家目录

/home/目录下有各个创建的用户对应的家目录,当用户登录时,会自动进入到自己的家目录

  1. 介绍
  • Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
  • Linux的用户需要至少属于一个组
  1. 语法

    useradd 用户名:创建用户,当创建用户成功后,会自动创建和用户同名的家目录

    useradd -d 指定目录 用户名:创建新用户,并指定用户的家目录

    passwd 用户名:给用户指定密码

    userdel 用户名:删除用户,但保留家目录

    userdel -r 用户名:删除用户以及用户家目录(不推荐)

    id 用户名:查询用户信息

切换用户

  1. 介绍

    在操作Linux中,如果当前用户的权限不够,可以通过指令,切换到高权限用户,例如root

  2. 语法

    su - 用户名

  3. 注意

  • 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
  • 当需要返回到原来用户时,使用exit指令

用户组的管理

  1. 用户组

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

  2. 语法

    groupadd 组名:增加组

    groupdel 组名:删除组

    useradd -g 用户组 用户名:增加用户时指定归属组

    usermod -g 用户组 用户名:修改用户的归属组

    usermod -d 目录名 用户名:改变用户登录的初始目录

用户和组的配置文件

  • /etc/passwd文件

    用户(user)的配置文件,记录用户的各种信息

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

  • /etc/shadow文件

    口令的配置文件

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

  • /etc/group文件

    组(group)的配置文件,记录Linux包含的组的信息

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

实用指令

运行级别和找回root密码

  1. 运行级别
  • 0:关机(系统停机状态,系统默认运行级别不能设为0,否则不能正常启动)
  • 1:单用户工作状态(root权限,用于系统维护,可找回丢失密码,禁止远程登录)
  • 2:多用户状态无网络服务(没有NFS)
  • 3:多用户状态有网络服务(登录后进入控制台命令模式)
  • 4:系统未使用,保留给用户
  • 5:图形界面(X11控制台,登录后进入图像GUI模式)
  • 6:系统重启(系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动)

开机的一般流程:

开机 => BIOS => /boot => init进程 => 运行级别 => 运行级对应的服务

  1. 注意
  • 常用运行级别是3和5,要修改默认的运行级别可以改文件:/etc/inittab中的id:5:initdefault:这一行中的数字
  • id:5:initdefault::指开机时进入第五运行级别(即图形界面)
  • 指令:init 数字012356(没有4)
  1. 面试题:若root密码丢失,如何找回root密码(不同版本方法不同)

centOS 6:

  • 进入单用户模式:开机 -> 在引导时按回车键 -> 看到一个界面输入e -> 看到一个新的界面,选中第二行(编辑内核),再输入e -> 在这行输入空格+1(单用户模式)后按回车键 -> 输入b,进入单用户模式

  • 在单用户模式下,使用passwd指令修改root密码

centOS 7:

  • 重启系统,在开机过程中,快速按下键盘上的方向键上和下。目的是告知引导程序,我们需要在引导页面选择不同的操作,以便让引导程序暂停。按键盘 e 键,进入编辑模式,找到 linux16 的那一行。将光标一直移动到 LANG=en_US.UTF-8后面,空格,再追加init=/bin/sh。注意,需要写在UTF-8后,保持再同一行,并注意空格。

  • 按下Ctrl+x进行引导启动,进入单用户模式后,挂载根目录mount -o remount, rw /,更改密码passwd root,更新系统信息touch ./autorelabel,重启系统exec /sbin/reboot

帮助指令

  • man指令

    man [命令或配置文件]:获得帮助信息

  • help指令

    help 命令:获得shell内置命令的帮助信息

  • info指令

    类似man,和man不同的是,info命令的帮助信息是一套完整的资料,每个单独命令的帮助信息只是这套完整资料中的某一个小章节

文件目录类

  • pwd指令

    pwd:显示当前工作目录的绝对路径

  • ls指令

    ls [选项] [目录或文件]:列出目录的内容

    常用选项:

    -a:显示当前目录所有的文件和目录

    -l:以列表的方式显示信息

    -R:递归显示整个目录

  • cd指令

    cd [参数]:切换到指定目录(绝对路径、相对路径)

    常用参数:

    cd ~cd:回到家目录

    cd ..:回到当前目录的上一级目录

  • mkdir指令

    mkdir [选项] 要创建的目录:创建目录

    常用选项:

    -p:创建多级目录

  • rmdir指令

    rmdir [选项] 要删除的空目录:删除空目录

    注意:

    rmdir删除的是空目录,若目录下有内容则无法删除

    ​ 若要删除非空目录,则使用指令rm -rf 要删除的目录

  • touch指令

    touch 文件名称(可创建多个文件):创建空文件

  • cp指令

    cp [选项] 文件或目录 目录:拷贝文件或目录到指定目录

    常用选项:

    -r:递归复制整个文件夹

    注意:

    ​ 强制覆盖不提示:cp改为\cp

  • rm指令

    rm [选项] 要删除的文件或目录:移除文件或目录

    常用选项:

    -r:递归删除整个文件夹

    -f:强制删除不提示

  • mv指令

    mv 旧名 新名:重命名文件

    mv 文件或目录 目录:移动文件或目录

  • cat指令

    cat [选项] 要查看的文件:查看文件内容,以只读方式打开

    常用选项:

    -n:显示行号

    注意:

    cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令| more

  • more指令

    more指令是一个基于Vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容,并且内置了若干快捷键

    more 要查看的文件:查看文件内容

    快捷键:

    操作 功能说明
    空格键(space) 向下翻一页
    回车键(Enter) 向下翻一行
    q 立刻离开more,不再显示该文件内容
    Ctrl+F 向下滚动一屏
    Ctrl+B 返回上一屏
    = 输出当前的行号
    :f 输出文件名和当前的行号
  • less指令

    less指令用来分屏查看文件内容,它的功能与more类似,但比more指令更强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示的需要来加载内容,对于显示大型文件具有较高的效率

    less [要查看的文件]:查看文件内容

    快捷键:

    操作 功能说明
    空格键(space) 向下翻一页
    回车键(Enter) 向下翻一行
    [page down] 向下翻一页
    [page up] 向上翻一页
    /字串 向下搜寻[字串],n:向下查找,N:向上查找
    ?字串 向上搜寻[字串],n:向上查找,N:向下查找
    q 离开less这个程序
  • >指令和>>指令

    >:输出重定向(会将原来的文件的内容覆盖)

    >>:追加(不会覆盖原来的文件,而是追加到文件的尾部)

    语法:

    ls -l > 文件:列表的内容覆盖写入文件中,文件不存在则创建文件

    ls -al >> 文件:列表的内容追加到文件的末尾

    cat 文件1 > 文件2:将文件1的内容覆盖写入到文件2

    echo "内容" >> 文件:将内容写入文件

  • echo指令

    echo [选项] [输出内容]:输出内容到控制台

  • head指令:用于显示文件开头部分内容,默认情况下显示文件的前10行内容

    head 文件:查看文件前10行内容

    head -n 行数k 文件:查看文件前k行内容

  • tail指令:用于输出文件尾部的内容,默认情况下显示文件后10行的内容

    tail 文件:查看文件后10行内容

    tail -n 行数k 文件:查看文件后k行内容

    tail -f 文件:实时跟踪文档的所有更新

  • ln指令:软链接也叫符号链接,类似于Windows中的快捷方式,主要存放了链接其他文件的路径

    ln -s [原文件或目录] [软链接名]:给原文件或目录创建一个软链接

    注意:

    ​ 使用pwd指令查看目录时,仍然看到的是软链接所在的目录

    ​ 删除软链接:rm -rf 软链接名,注意软链接后不能带斜杠/,会把链接的内容删掉

  • history指令

    history:查看已经执行过的历史指令

    history 数字k:查看最近使用的k条指令

    !数字:执行对应的指令

时间日期类

  • date指令:显示当前日期

    date:显示当前时间

    date +%Y:显示当前年份

    date +%m:显示当前月份

    date +%d:显示当前是哪一天

    date "+%Y-%m-%d %H:%M:%S":显示年月日时分秒(中间格式可以自己改)

    date -s 时间(字符串形式):设置日期

    hwclock -s:改回去原来的时间

  • cal指令

    cal:显示本月日历

    cal 年份:显示全年日历

搜索查找类

  • find指令

    find [搜索范围] [选项]:从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端

    选项:

    选项 功能
    -name 文件名(可用通配符) 按照指定的文件名查找模式查找文件
    -user 用户名 查找属于指定用户名的所有文件
    -size (+/-)文件大小(单位可根据实际情况调整) 按照指定的文件大小查找文件(+/-表示大于/小于)
  • locate指令

    locate 搜索文件:快速定位文件路径。

    补充:

    locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻

    注意:

    ​ 由于locate指令基于数据库进行查询,所以第一次运行时,必须用**updatedb**指令创建locate数据库

  • grep指令和管道符号|

    grep过滤查找,管道符|表示将前一个命令的处理结果输出传递给后面的命令处理,例子:cat hello.txt | grep hello:通过管道符|,将hello.txt的内容输出给grep hello指令,查找hello.txt文件中的hello字符串

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

    选项:

    -n:显示匹配行及行号

    -i:忽略字母大小写

压缩、解压类

  • gzip/gunzip指令

    gzip 文件(可选多个文件):压缩文件,只能将文件压缩为***.gz**文件(压缩后原文件不保留)

    gunzip 文件.gz:解压缩文件命令

  • zip/unzip指令

    zip [选项] 文件名.zip 压缩的内容(文件或目录):压缩文件和目录的命令

    unzip [选项] 文件.zip:解压缩文件

    zip常用选项:

    -r:递归压缩,即压缩目录

    unzip常用选项:

    -d 目录:指定解压后文件的存放目录

  • tar指令

    tar指令是打包指令,最后打包的文件是*.tar.gz文件

    tar [选项] 文件名.tar.gz 打包的内容:打包目录,压缩后的文件格式:*.tar.gz

    选项:

    选项 功能
    -c 产生.tar打包文件
    -v 显示详细信息
    -f 指定压缩后的文件名
    -z 打包同时压缩
    -x 解包.tar文件
    -C 目录 解压到指定目录

    打包压缩:-zcvf

    解压:-zxcf

组管理和权限管理

组管理

  1. 组的介绍

    在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所在组、其他组的概念

  2. 文件/目录的所有者、所在组

    文件/目录的所有者、所在组默认是创建者及创建者所在的组

    ls -ahl:查看文件的所有者、所在组

  3. 其他组

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

权限管理

  • 权限介绍

    ls -l显示的内容中,按从左到右的顺序:

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

    ​ 第1-3位确定所有者(该文件的所有者)拥有该文件的权限(r,w,x) ——User

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

    ​ 第7-9位确定其他用户拥有该文件的权限(r,w,x) ——Other

    ​ 数字:对于文件来说,表示硬链接数;对于目录来说,表示子目录数

    ​ 用户名

    ​ 组名

    ​ 数字:表示文件大小(单位是字节Byte),如果是目录,则显示4096(字节)

    ​ 最后修改日期

    ​ 文件名

  1. 文件类型(d,-,l,c,b)

    -表示普通文件

    d表示目录

    l表示软链接

    c表示字符设备文件,如键盘、鼠标

    b表示块文件,如硬盘

  2. rwx权限

    • rwx作用到文件

      r(read):可以读取,查看

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

      x(execute):可以被执行

    • rwx作用到目录

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

      w(write):可以修改,目录内创建、删除、重命名文件

      x(execute):可以进入该目录

  • 修改权限

    1. 修改权限——chmod

      通过chmod指令,可以修改文件或者目录的权限

      用户:u:所有者;g:所有组;o:其他用户;a:所有用户

    • 通过+、-、=修改权限

      chmod u=权限,g=权限,o=权限 文件/目录

      chmod 用户+权限 文件/目录

      chmod 用户-权限 文件/目录

    • 通过数字修改权限

      r=4, w=2, x=1; rwx=4+2+1=7

      如:chmod u=rwx,g=rx,o=x 文件目录名相当于chmod 751 文件目录名

  1. 修改文件所有者——chown

    chown 新用户名 文件:修改文件所有者

    chown 新用户名:新组名 文件:修改文件的所有者和所在组

    参数:

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

  2. 修改文件所在组——chgrp

    chgrp 新组名 文件:修改文件所在的组

    参数:

    -R递归其下所有子文件或目录

练习

建立两个组(神仙immortal、妖怪monster)

建立四个用户(唐僧ts、悟空wk、八戒bj、沙僧ss)

设置密码(123)

把悟空、八戒放在妖怪组,唐僧、沙僧放在神仙组
Linux学习笔记_第5张图片

用悟空建立一个文件monkey.txt,内容是i am monkey
image-20210314201817627

给八戒rw的权限
image-20210314203044610

八戒修改monkey.txt,加入一句话i am pig
Linux学习笔记_第6张图片

唐僧、沙僧对该文件没有权限
Linux学习笔记_第7张图片

把沙僧放入妖怪组
image-20210314203531074

沙僧修改monkey.txt,加入一句话我是沙僧,我是妖怪
Linux学习笔记_第8张图片

任务调度

  1. 介绍

    任务调度:是指在某个时间执行特定的命令或程序

    任务调度分类:

    • 系统工作:有些重要的工作必须周而复始地执行,如病毒扫描等
    • 个别用户工作:个别用户可能希望执行某些程序,比如对MySQL数据库的备份
  2. 语法

    crontab [选项]

    service crond restart:重启任务调度

    常用选项:

    选项 功能
    -e 编辑crontab定时任务
    -l 查询crontab任务
    -r 删除当前用户的所有crontab任务
  3. 例子

    设置任务调度文件:/etc/crontab

    设置个人任务调度,执行crontab -e命令

    输入任务*/1 * * * * date > date.txt(每小时的每分钟执行命令)到调度文件

    参数说明:

    项目 含义 范围
    第一个* 一小时当中的第几分钟 0-59
    第二个* 一天当中的第几小时 0-23
    第三个* 一个月当中的第几天 1-31
    第四个* 一年当中的第几月 1-12
    第五个* 一周当中的星期几 0-7(0和7都代表星期日)

    特殊符号:

    特殊符号 含义
    * 代表任何时间。比如第一个*代表一个小时中每分钟都执行一次命令
    , 代表不连续的时间。比如0 8,12,16 * * *代表每天的8点,12点,16点都执行一次命令
    - 代表连续的时间范围。比如0 5 * * 1-6代表周一到周六的5点执行命令
    */n 代表每隔多久执行一次。比如*/10 * * * *代表每隔10分钟执行一次命令

    注意:星期几和几号最好不要同时出现,容易产生混乱

磁盘分区

  1. 分区的方式
  • mbr分区:
    • 最多支持四个主分区
    • 系统只能安装在主分区
    • 拓展分区要占一个主分区
    • MBR最大只支持2TB,但拥有最好的兼容性
  • gtp分区:
    • 支持无限多个主分区(但操作系统可能限制,比如Windows下最多128个分区)
    • 最大支持18EB的大容量(1EB=1024PB, 1PB=1024TB)
    • Windows7 64位以后支持gtp
  1. Linux分区
  • 原理介绍

    • 对Linux来说无论有几个分区,分给哪个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分
    • Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,并且将一个分区和一个目录联系起来,这时要载入的一个分区使它的存储空间在一个目录下获得
  • 硬盘说明

    • Linux硬盘分为IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
    • 对于IDE硬盘,驱动器标识符为“hdx”。“hd”表面分区所在设备的类型,这里是指IDE硬盘。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“”代表分区,前四个分区用数字1到4表示,它们是主分区或拓展分区,从5开始表示逻辑分区。例如,hda3表示第一个IDE硬盘上的第三个主分区或拓展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或拓展分区
    • 对于SCSI硬盘,则标识为“sdx~”。SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样
  • 查看当前系统的分区情况

    指令:(老师不离开)

    lsblk -f:查看系统的分区和挂载的情况

    lsblk:可查看分区的大小

  1. 添加新硬盘(centOS 7)
  • 虚拟机添加硬盘
    Linux学习笔记_第9张图片

    添加后Linux需重启

    重启后lsblk -f查看系统分区情况
    Linux学习笔记_第10张图片

  • 分区

    fdisk /dev/sdb
    Linux学习笔记_第11张图片

    依次输入np
    Linux学习笔记_第12张图片

    之后回车默认:
    Linux学习笔记_第13张图片

    分配完成后,输入w保存:
    Linux学习笔记_第14张图片

    分区完成:
    Linux学习笔记_第15张图片

  • 格式化

    mkfs.xfs -f /dev/sdb1
    Linux学习笔记_第16张图片

    格式化完成:
    Linux学习笔记_第17张图片

  • 临时挂载

    mkdir /home/newdisk1:在home目录下创建一个文件夹newdisk1

    挂载到newdisk1目录下,mount -t xfs /dev/sdb1 /home/newdisk1,完成后查看分区情况:
    Linux学习笔记_第18张图片

  • 永久挂载

    修改系统挂载硬盘的文件:vim /etc/fstab

    添加配置/dev/sdb1 /home/newdisk1 xfs defaults 0 0
    Linux学习笔记_第19张图片

    最后重启syncreboot

  1. 磁盘查询

    df [选项]:查询系统整体磁盘使用情况

    du [选项] 目录:查询指定目录的磁盘占用情况,默认为当前目录

    选项:

选项 功能
-h 带计量单位
-s 指定目录占用大小汇总
-a 含文件
--max-depth=k 子目录深度k
-c 列出明细的同时,增加汇总值

ls [选项] 目录 | grep "^-" | wc -l:统计某个目录下文件的个数

ls [选项] 目录 | grep "^d" | wc -l:统计某个目录下目录的个数

​ 选项:参考ls指令的选项

进程管理

进程介绍

  • 在Linux中,每个执行的程序(代码)都称为一个进程。每个进程都分配一个ID号
  • 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器
  • 每个进程都可能以两种方式存在:前台和后台,前台进程就是用户屏幕上可以进行操作的,后台进程则是实际在操作
  • 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束

查询进程

  1. 显示系统执行的教程

    ps [选项]:查看进程

选项 功能
-a 显示当前终端的所有教程信息
-u 以用户的格式显示教程信息
-x 显示后台进程运行的参数
-e 显示所有进程
-f 全格式

​ 常用:

ps -aux:查看系统进程

ps -aux |more:以more方式打开

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

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

ps -ef | grep xxx:过滤出所需内容

​ 指令说明:(BSD风格)

指令 说明
UID 用户ID
PID 进程ID
PPID 父进程ID
C CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
STIME 进程启动的时间
TTY 完整的终端名称
TIME CPU时间
CMD 启动进程所用的命令和参数

终止进程

  1. 介绍

    若某个进程执行一半需要停止时,或者已消耗了很大的系统资源时,此时可以考虑停止进程

  2. 语法

    kill [选项] 进程号:通过进程号结束进程

    killall 进程名称:通过进程名称结束进程(支持通配符),在系统因负载过大而变得很慢时有用

    常用选项:

    -9:表示强迫进程立即停止

  3. 查看进程树

    pstree [选项]

    常用选项:

    -p:显示进程的PID

    -u:显示进程的所属用户

服务管理

  1. 介绍

    服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql,sshd防火墙等),因此称为守护进程

  2. 指令

    service 服务名 [start/stop/restart/reload/status]

    注意:

    ​ 在centOS 7.0后,不再使用service,而是systemctl

  3. 查看服务

    • setup 回车
    • ls -l /etc/init.d/
  4. chkconfig指令:可以给每个服务的各个运行级别设置自启动/关闭

    chkconfig --list | grep xxx:过滤出所需服务

    chkconfig 服务名 --list:查看服务

    chkconfig --level 运行级别k 服务名 on/off:设置某个服务在不同运行级别下的自启动/关闭(需要重启才能生效)

监控服务

  1. 动态监控进程
  • 介绍

    topps指令类似,都用来显示正在执行的进程。topps最大的不同之处,在于top在执行一段时间后可以更新正在运行的进程

  • 语法

    top [选项]

    选项:

    选项 功能
    -d 秒数 指定top指令每隔几秒更新,默认是3秒
    -i 使top不显示任何闲置或者僵死进程
    -p 通过指定监控进程ID来仅仅监控某个进程的状态

    交互操作:

    操作 功能
    P 以CPU使用率排序(默认)
    M 以内存使用率排序
    N 以PID排序
    u 提示输入用户,可查询指定用户的进程
    k 提示输入PID,可杀死指定进程
    q 退出top
  1. 监控网络状态
  • netstat指令

    netstat [选项]:查看系统网络情况

    选项:

    选项 说明
    -an 按一定顺序排列输出
    -p 显示哪个进程在调用

RPM包与YUM包管理

RPM包

  1. 介绍

    rpm包是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.rpm的拓展名。rpm全称是RedHat Package Manager(RedHat软件包管理工具),类似Windowssetup.exe

  2. rpm包的管理

    • 查询rpm包

      rpm -qa:查询所安装的所有rpm软件包

      rpm -qa | more:以more方式打开

      rpm -qa | grep 软件包名:过滤出所需的软件包

      rpm -q 软件包名:查询软件包是否安装

      rpm -qi 软件包名:查询软件包信息

      rpm -ql 软件包名:查询软件包中你的文件

      rpm -qf 文件全路径名:查询文件所属的软件包

    • 卸载rpm包

      rpm -e 软件包名

      可带上--nodeps强制删除(不推荐)

    • 安装rpm包

      rpm -ivh rpm包全路径名称

      参数说明:

      iinstall 安装

      vverbose 提示

      hhash 进度条

YUM包

  1. 介绍

    YUM是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包

  2. yum包的管理

    • 查询yum包

      yum list:查询所有yum包

      yum list | grep 软件包名:过滤出所需软件包

    • 安装yum包

      yum install 软件包名:安装指定软件包

    • 卸载yum包

      yum remove 软件包名:卸载软件包

Linux–Ubuntu

root用户设置

  1. 介绍

    安装Ubuntu成功后,都是普通用户权限,没有最高root权限,需要使用root权限的时候,需要在命令前面加上sudo

    如果没有给root设置初始密码,则无法通过su命令切换到root用户,会抛出问题:su:Authentication failure

  2. 给root用户设置密码

    sudo passwd,输入当前用户密码后,设定root用户密码

    $代表一般用户,#代表root用户

APT软件管理

  1. 介绍

    apt是Advanced Packaging Tool的简称,是一款安装包管理工具。在Ubuntu下,使用apt命令可以用于软件包的安装、删除、清理等,类似于Windows中的软件管理工具

  2. 软件操作的相关命令(package为具体包名)(在普通用户下需要加sudo前缀)

    sudo apt-get update:更新源

    sudo apt-get install package:安装包

    sudo apt-get remove package:删除包

    sudo apt-cache search package:搜索软件包

    sudo apt-cache show package:获取包的相关信息,如说明、大小、版本等

    sudo apt-get install package --reinstall:重新安装包

    sudo apt-get -f install:修复安装

    sudo apt-get remove package --purge:删除包,包括配置文件等

    sudo apt-get build-dep package:安装相关的编译环境

    sudo apt-get upgrade:更新已安装的包

    sudo apt-get dist-upgrade:升级系统

    sudo apt-cache depends package:了解使用该包依赖哪些包

    sudo apt-cache rdepends package:查看该包被哪些包依赖

    sudo apt-get source package:下载该包的源代码

  3. 更新Ubuntu软件下载地址为清华镜像源

    清华镜像源:https://mirrors.tuna.tsinghua.edu.cn/

    • cd /etc/apt/:切换到/etc/apt/目录下

    • sudo cp sources.list sources.list.bak:备份Ubuntu默认的源地址

    • echo '' > sources.list:清空文件内容(需要先切换到root用户su - root)

    • 替换文件内容,更新源服务器列表Linux学习笔记_第20张图片

    • sudo apt-get update:更新源

使用SSH远程登录

  1. 介绍

    SSH为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所指定;SSH为建立在应用层和传输层基础上的安全协议

    SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。几乎所有UNIX平台——包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH

    使用SSH服务,需要安装相应的服务器和客户端

    和CentOS不一样,Ubuntu默认没有安装SSHD服务,因此默认不能进行远程登录

  2. 安装SSH和启用

    sudo apt-get install openssh-server:安装SSH服务端和客户端

    service sshd restart:启动sshd服务,会监听22号端口

  3. 从Linux系统客户机远程登录Linux系统服务机

    两台Linux都需要安装openssh-server

    CentOS:yum install openssh-server

    Ubuntu:sudo apt-get install openssh-server

    连接:ssh 当前用户名@待连接Linux的ip地址

    若出现访问错误,可查看是否有该文件:~/.ssh/known_ssh,尝试删除该文件解决问题

    退出:exitlogout

Linux–Shell编程

Shell简介

  1. 为什么要学习Shell编程

    • Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理
    • 对于JavaEE和Python程序员来说,工作的需要,可能需要编写一些Shell脚本进行程序或者服务器的维护,比如编写一个定时备份数据库的脚本
    • 对于大数据程序员来说,需要编写Shell程序来管理集群
  2. Shell是什么

    Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统程序,用户可以用Shell来启动、挂起、停止甚至编写一些程序

  3. Shell脚本的执行方式

    • 脚本格式要求
      • 脚本要以#!/bin/bash开头
      • 脚本需要有可执行权限
    • 脚本的常用执行方式
      • 输入脚本的绝对路径或相对路径(需要有可执行权限)
      • sh 脚本,不需要赋给脚本可执行权限(不推荐)

Shell杂项

注释

单行注释:

#这是单行注释

多行注释:

:<

以后台方式运行

在shell脚本中,以后台方式执行其他shell脚本:在行尾添加&

Shell变量

变量

  1. 介绍
    • Linux Shell中的变量分为,系统变量和用户自定义变量
    • 系统变量:$HOME、$PWD、$SHELL、$USER等等,比如echo $HOME等等
    • 显示当前shell中的所有变量:set
  2. 定义
    • 语法
      • 定义变量:变量=值
      • 撤销变量:unset 变量
      • 声明静态变量:readonly 变量,注意:不能unset
    • 规则
      • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头
      • 等号两侧不能有空格
      • 变量名称一般习惯为大写
    • 将命令的返回值赋给变量
      • eg:A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A
      • eg:A=$(ls -la) 等价于反引号

环境变量

export 变量名=变量值:将shell变量输出为环境变量

source 配置文件:让修改后的配置信息立即生效**(配置环境变量后需使其生效)**

echo $变量名:查询环境变量的值

位置参数变量

  1. 介绍

    当执行一个shell脚本时,如果希望获得命令行的参数信息,就可以使用位置参数变量

  2. 语法

    $n:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,需要用大括号包含,如${10}

    $*:这个变量代表命令行中的所有参数,$*把所有的参数统一对待(当做一个整体)

    $@:这个变量也代表命令行中的所有参数,不过$@把每个参数区分对待

    $#:这个变量代表命令行中的所有参数的个数

预定义变量

  1. 介绍

    是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用

  2. 语法

    $$:当前进程的进程号(PID)

    $!:后台运行的最后一个进程的进程号(PID)

    $?:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行有错误

Shell运算符

语法:

  • $((运算式))$[运算式](推荐)
  • expr m +,- n:加,减(注意expr运算符之间要有空格)
  • expr m \*,/,% n:乘,除,取余

Shell判断语句

语法:

[ condition ]:非空返回true,可使用$?验证(0为true,>1为false)(注意condition前后要有空格)

常用的判断条件:

  • 两个整数/字符串比较

    =:字符串比较

    -lt:小于

    -le:小于等于

    -eq:等于

    -gt:大于

    -ge:大于等于

    -ne:不等于

  • 按照文件权限进行判断

    -r:有读的权限

    -w:有写的权限

    -x:有执行的权限

  • 按照文件类型进行判断

    -f:文件存在并且是一个常规的文件,即不是隐藏文件

    -e:文件存在

    -d:文件存在并且是一个目录

Shell流程控制

if

  • 语法
if [ condition ];then
	程序
fi
# 推荐
if [ condition ]
then
	程序
elif [ condition ]
then
	程序
fi

注意中括号与条件判断式之间必须有空格

case

  • 语法
case $变量名 in
"值1")
程序1
;;
"值2")
程序2
;;
...省略其他分支...
*)
程序(default执行)
;;
esac

for

  • 语法
for 变量 in 值1 值2 值3...
do
	程序
done
for ((初始值;循环控制条件;变量变化))
do
	程序
done
  • 举例
    Linux学习笔记_第21张图片

while

  • 语法
while [ condition ]
do
	程序
done

Shell读取控制台输入

  1. 语法:

    read (选项) 参数

    选项:

    -p:指定读取值时的提示符

    -t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待

    参数:

    ​ 变量:指定读取值的变量名

  2. 例子
    Linux学习笔记_第22张图片

Shell函数

系统函数

  • basename

    basename命令会删掉所有的前缀,包括最后一个"/"字符,返回完整路径最后/的部分,常用于获取文件名

    basename [pathname] [suffix]

    basename [string] [suffix]

    选项:

    suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉

  • dirname

    返回完整路径最后的/的前面的部分,常用于返回路径部分

    dirname 文件绝对路径:从给定的包含绝对路径的文件名中除去文件名(非目录的部分),然后返回剩下的路径(目录的部分)

自定义函数

  • 函数定义:[]为可选项
[ function ] funname[()]
{
	Action;
	[return int;]
}
  • 函数调用

    funname [值]

  • 举例

    输入两个参数,求和
    Linux学习笔记_第23张图片

学习链接

B站-尚硅谷Linux教程

你可能感兴趣的:(信息安全,linux)