Linux基础

 1. Linux的内核版本

目录

 1. Linux的内核版本

 3. 基本命令

 4. 通配符

 5. shell

 6. 分区

 7. Block,inode,vim

 8. 用户,组管理

 9. 系统备份

 10. 软件安装

 11. 硬件管理

 12. 进程

 13. 文本字符管理

 14. 服务

 15. 脚本


一、Linux内核版本
    2.6.20
    
    2  主版本(第几个大版)
    6  次版本(第几次补丁)奇数:开发中的版本(不稳定版)    偶数:稳定版()
    20 末版本(修补的次数)

二、linux版本

    RedHat linux    
        企业版:3.0、4.0、5.0、6.0(三年前)7.0(2015年 比之前的版本变化比较大)
        个人版:已停用9.X
    

三、安装前的准备
    
    1、分区命名 hda1 sdb2
    
        hd    IDE(并口盘)
        
        s     串口盘(SCSI SAS SATA USB)

        a b c d 表示磁盘编号 a 第一块盘 b第二块盘  c第三块盘   以此类推
        
        1 2 3 表示磁盘内的编号 1 表示第一个分区  2 表示第二个分区 以此类推

    2、分区使用
        
        Linux是一款树形文件系统
        Linux中所有的文件夹都在总文件夹下存放("/"跟目录下存放)
        Linux把所有的硬件资源当成文件管理
        一个分区不能直接使用,必须要和某个文件夹建立关联关系
        向文件夹存入文件,实质存入分区,建立关联关系,称为“挂载”
        挂载时使用的文件夹称为“挂载点”
        Linux中文件夹改称为“目录”

四、安装
    建议双网卡的桥接模式
    
    1、开机后 选择第一项    直接安装
              第二项    检测后安装
    2、安装过程中语言
    3、检查键盘鼠标,地区,时间
    4、软件选择 基础设施服务器(纯字符界面)-- 文件及存储服务器
            带GUI服务器(图形界面 & 字符界面)    --文件及存储服务器
    5、安装位置
        自动分配 所有的内存都分给 “/”服务
        手动 → 完成 → 标准分区 → 新建分区“+”
        /    5G ext4格式
        /boot     1G 开机程序存放位置(通常都很小,几兆)
        /home     2G 每个用户的家目录,除Root外,root的目录存放在/root
        /usr     8G 系统程序,帮助文件存放位置
        swap    物理内存的2倍    交换分区(即虚拟内存)

        完整磁盘摘要及引导盘 → 选中本机磁盘为引导盘

    6、网络主机名
        开启一块网卡,配置IP参数
        主机名,不要用默认
    
    7、安装
        设置root密码    暂时不创建用户
        注:安装完毕后,自动重启,略过看kdump配置,新建用户 

 3. 基本命令

命令提示符    --输入命令前的提示文字

[root          @localhost ~]#
[当前登录的用户@主机名 当前所在目录]用户身份符
            # 管理员
            $ 普通用户
    
    所在文件  ~ 当前用户的家目录,仅有root的家目录在“/root”,其他用户在“/home”下

基础命令:
    用户:
        useradd "用户名"    --新建用户
        passwd    "用户名"    --设置密码,不加用户名,给当前用户设置密码
    
        vi /etc/passwd        --用户的配置文件,显示七列信息,用:分隔
        root:X:0:0:: /root /set/hash
            用户名:
            密码列:    --有专用于记录密码的配置文件,所以用X填充
            用户ID:    --UID,用户在系统中的唯一编号
                    --7.0之后版本,0-99 系统用户,100-999 软件用户, 1000-65535 自定义用户
                    --7.0之前版本,100-499 软件用户,500-65535 自定义用户
            私有组ID:    --GID,用于记录用户的所属的私有ID
            用户属性:    --用户的附加信息,如电话,邮箱,地址等(一般为空)
            用户家目录:    --指定用户家目录的位置
            shell        --用户登录后使用的shell

        vi /etc/shadow        --用户的密码配置文件,记录密码,密码有效期
                    (1970.01.01开始计时),改密码时隔
        用户禁用    --锁用户
            passwd -l aaa        --通过锁密码,禁用用户aaa
            passwd -u aaa        --解锁密码

            usermod -L pp        --通过锁用户名,禁用用户
            usermod -U pp        --解锁用户名

        取消密码验证
            passwd -d pp    --取消用户密码,即登录时无需密码登录
            passwd pp    --重新设置密码,恢复验证

        组织用户登录系统
            vi /etc/passwd        --在shell列改为:/sbin/nologin,实现在未禁用用户的情况下,拒绝用户登录系统,但是可以登录服务
                实现未禁用用户的情况下,拒绝用户登录系统,但是可以登录服务
        
        改名:
            usermod -l oo pp     -- -l 改用户名,格式:先写新名,后写旧名
            usermod -d /mnt/ccc ccc        --更改用户的家目录,为:/mnt/ccc

        删除用户:
            userdel aa    --删除用户,会保留用户相关文件,如:家目录等
            userdel -r aa    --删除用户,同时删除用户所有相关文件
组管理:
    私有组    --属组

        Linux中规定:每个用户必须属于一个,且只能属于一个私有组;

        一个组可以是多个用户的私有组。                

    标准组     --
        正常使用的用于管理用户的组,用户可有可无,可多个标准组。

        vi /etc/group     --查看组的配置文件,四列信息

            组名:组密码:组ID(UID):组中的标准组成员

        groupadd 组1     --新建组

        gpasswd -a qq zu1     --把qq加入到zu1中

        gpasswd -a 11 zu1     --给组添加成员

        gpasswd -d pp zu1     --组中提出成员

        gpasswd -A root,pp zu1     --把zu1组的权限给pp,管理组员,允许添加删除组中的用户。

        gpasswd -A root zu1     --仅root为管理员

        id pp            --查看用户的相关信息
        
        usermod -G zu2    pp    --替换用户的标准组;注:用usermod -G 替换标准组后,原有的所有标准组全部退出
        
        删除组:
            groupdel zu1     --删除组
        
        参数:
            usermod useradd 参数:
                        -d    --家目录
                        -g    --私有组
                        -G    --替换标准组
                        -u    --指定UID
        
        用户替换:
            su pp        --切换到pp身份下,exit退出;无 - 表示用户的环境变量设置
            
            su - qq        --使用目标用户的环境变量设置
            
            sudo     --给普通用户授权某些命令的使用权限
                
            visudo    --打开编辑sudo配置文件,绝对路径:/etc/sudoers
                (约98行写下:用户名    主机名=(以某个用户身份) 命令程序的绝对路径)
            列:
                pp    localhost=(root) /usr/bin/mount,/usr/bin/umount
                说明:给pp授权,允许在localhost主机上以root身份使用mount,umount命令
                
                以pp身份登录
                sudo mount /dev/sr0 /media    --用户验证sudo可用    

———————————————————————————————————————————

ls     --显示当前目录下的内容
        ls /var     --显示指定目录下的内容
        ls -l         --查看目录下详细信息(等同于 “ll”)
                权限    硬链接数    属主    属组    大小    修改日期    文件名
                属主:文件的所属者,默认文件的创建者即是文件的属主
                属组:属主所在的私有组,即是属组

        ls -a         --显示目录下的所有文件,包括隐藏文件,以“.”开头的文件为Linux里的隐藏文件
        ls -i        --查看文件/目录,编号

        注:里面的选择可以一起使用

文件权限:    
    权限区域,共十个字符
    
        -        rwx        rwx        rwx
         文件类型           属主权限       属组权限        其他用户权限
                u         g         o
        
        注:表示三类对象用 a 

        文件类型:
            -    --表示二进制文件,即文本文档
            d    --目录
            l    --软链接
            b    --块设备
            r     --字符设备
        权限:    
            r    --读取    4
            w    --写入  2
            x    --执行    1
更改权限:

    chomd u+x,g+w,o-r f1    --增减方式权限
    chmod a+x f1        --给三类用户同时增减权限
    chmod u=rw,g=r,o=  f1     --赋值的方式设置权限
    chmod a=rw f1        --同时给三个用户赋值权限
    
    数字方式:
        
        rwx 三个权限,当作2bit的二进制数字来计算,有对应权限设置设置1,无权限设置0
        
        rw ---> 110 ---> 6
        rwx ---> 111 ---> 777
        r-x ---> 101 ---> 5
        r-- ---> 100 ---> 4
        
        chmod 644     --数字方式设置权限 
                
        注:提供数字不足时,左侧补零。chmod 66 f1 --即066权限

    对于目录,rwx意义
        
        r     --显示目录的内容,即ls功能
        w    --在目录下创建、删除、改名功能
        x    --进入目录,即cd功能    
    
        默认权限有umask 变量值辅助计算,管理员umask=022,普通用户umask=002
        
        文件    满权限    666    --umask = 默认权限 即644 664
        目录    满权限    777    --umask = 默认权限 即755 775    
    
    更改文件/目录所属
        
        chown pp f1    --更改文件的所属主

        chown .pp f1     --更改文件的所属组
    
        chown pp.pp f1    --更改文件的所属主和属组

        chown -R pp.pp f1     -- -R 表示更改目录,并集成给目录中的所有文件,称为:递归
    
    ACL    --- 访问控制列表
        
        功能:给指定用户特殊权限,即设定权限用户
    
        getfacl f1    --查看文件ACL设置
        
        setfacl -m u:pp:rw f1 --针对符f1文件,设置用户的ACL,允许pp具备rw权限;(g 表示组)

        setfacl -x u:pp f1    --删除某项ACL设置
    
        setfacl -b f1         --设置文件上所有ACL设置(恢复默认)

    说明:
        cp -p f1 /var     --- -p 表示按原有的权限和所属信息不变,复制文件

    
————————————————————————————————————————————————————————————————————
————————————————————————————————————————————————————————————————————     

打包
    tar -cvf back.tar f1 f2 f3     --打包多个文件到back.tar中
                    -- -c 创建包文件    -v 显示所有过程        -f 指定打包文件名
    
    tar -tf back.tar    --查看包文件中的内容
    
    tar -xvf back.tar     --在当前目录下解压包。注:解包后,若当前已有同名文件,则覆盖。

    tar -vxf back.tar -C /mnt/b1    --把解压的文件放到指定目录下
    
    tar -vxf back.tar -C /mnt/b1 f1 f3     --- 仅提取制定文件

    tar -Af    back.tar back2.tar     --把第二个包追加到第一个包中,合并。

    tar -uf    back.tar f4 f5     --更新包中的文件,也可以加入文件
    
    tar -rf rf back.tar *.txt    --把所有以.txt结尾的文件加入到back.tar里

    tar -cvf back.tar f1 f2 f3 --remove-files     --打包后删除原文件
3
    tar -f back.tar -delete f4     --删除包中的文件
        
        注:后缀名不能决定文件的存储编码格式,仅起到帮助识别的作用,建议加后缀

压缩    
    gzip back.tar     --压缩文件,后缀.gz
    
    gunzip back.tar.gz    --解压文件
    
    tar -zcvf back.tar f1 f2 f3    --打包的同时并压缩

    tar -zxvf back.tgz -C /mnt/d1    --解压打包文件

    .tgz = .tar.gz


————————————————————————————————————————————————————————————————————
————————————————————————————————————————————————————————————————————
    
    Alt + F2     --切换终端,即切换登录界面
    Alt + F1 - F6      --共6个终端界面可用,用户ttyx(数字)表示,可重复登录

    exit    --注销
    w     --查看当前登录的用户,可以查看远程登录的用户
    who     --查看当前登录的用户,可以查看登录的具体日期

    clear     --清屏 快捷键(Ctrl + L)
    
    pwd     --查看当前目录的绝对路径

    ↑↓     --翻看历史命令

    history   --查看历史命令
    
    <Tab>键      --命令补齐     单击 显示到多个命令  或者文件的共有部分
                双击 显示出所有的可能性
    光标在字符后闪,说明还有其他文件的可能性
    光标在字符空格后闪,说明无其他文件

    unset LANG  --清空语言,让语言恢复 到英文状态,因为字符界面不支持中文

    vi "文件名"    --vi编辑器,编辑文件,查看文件
            → 查看模式 → i → 编辑模式 → 编辑文字 → 退出 “ESC键” 返回查看模式 
            → 按大写“ZZ”保存退出 → 按大写“ZQ”不保存退出

linux 运行级别        --系统的多多种运行模式或状态

    0    关机模式

    1    单用户模式,仅管理员可以登录,做系统修复或杀毒,相当于windows安全模式(F8)

    2    多用户模式,单不支持网络通讯

    3    完全模式,多用户,和上网,字符界面

    4    自定义模式,一般不用,主要用于开发

    5    图形界面模式

    6    重启级别

     init 0 - 6    --切换用户级别

设置开机级别:
    版本7.0

    systemctl get-default  ---查看用户级别
    systemctl set-default multi-user.target --设置开机级别为字符界面
    systemctl set-default graphical.target     --设置开机级别为图形界面
    
    Redhat 7.0之前
    
    vi /etc/inittab     --编辑开机界面级别的配置文件
    
    id: 5: initdefault    --更改开机界面级别

系统管理命令:
    
    注销:     
        logout       
        Ctrl + D    
        exit
    
    关机:     
        init 0
        halt
        poweroff
        shutdown -h now (立即关机)
        shutdown -h 5   (5分钟后关机,会给其他终端发送提示信息)
        shutdown -c     (取消关机)
        
    重启:
        init 6 
        reboot
        shutdown -r 5 (5分钟后重启)

    cd     --进入目录
        cd /etc        --进入目录
        cd ..        --返回父目录
        cd -        --进入上一个所在目录
        cd         --回家目录,等同于 cd ~
    

查询命令帮助
    man ls        --查看ls命令的详细信息(Q键退出)
    info ls        --查看ls命令的信息,不详细(Q键退出)
    ls --help    --查看ls命令的帮助信息,简单的命令

文件/目录管理
    vi 文件名    --创建并编辑文件
    echo aaaaa > f1  --创建一个名字为“f1”的文件,并写入“aaaaa”
             --如果文件里有内容,会将其覆盖
    touch 文件名     --创建空文件,可以同时创建多个文件,如(touch a1 a2 a 3),则会创建                a1 a2 a3
    rm -rf 文件名     --删除文件
    
创建目录
    mkdir 目录名     --创建空目录
    mkdir -P d1/d2/3    --若父目录不存在,则一并创建,选项:-p
    
删除目录
    rm -rf 目录名/文件    --删除目录/文件,
            -r     --删除目录
            -f    --删除时不提示
            -rf    --删除目录,不提示
    rmdir 目录名        --删除空目录

查看文件
    cat 文件名    --查看文档内容
    cat -n     文件名    --带行号显示,无法翻页
    more 文件名    --分屏显示文档内容,回车-翻页 空格-翻页 不可回翻
    less 文件名    --分屏显示,可以回翻
    q 退出

文件复制
    cp 文件名1 文件名2    --复制文件,并改名
    cp 文件名 /mnt/d2(目录路径)    --复制到制定目录,可以指定路径
        注:复制文件时,若目标无,复制成功;若目标存在,则提示是否覆盖
            如果要复制目录,需要选择:-r

    cp -r 目录名1 目录名2    --复制目录
        注:复制目录时,若目标无,则复制并改名;若目标存在,则复制到目标目录里

文件移动
    mv 文件名1 文件名2     --移动文件,并改名
    mv 文件名 /mnt/d2    --移动目录
        注:移动目录时,若目标无,移动成功;若目标存在,则提示是否覆盖。
    mv 目录1 目录2         --移动目录
        注:移动文件时,若目标物,则移动成功;
             若目标存在,则移动到目标目录里
        注:mv命令实现改名功能:mv操作时,不更换目录

链接文件
    
    软连接        --相当于windows里的快捷方式,软连接文件指向的是原文件名;
            再通过原文件找到磁盘存储空间,原文件改名/删除,软连接不可用
            建议:软连接制定的原文件,用绝对路径表示

    硬链接        --相当于文件的另一个文件名,硬链接文件通过源文件,直接指向磁盘空间;
                即一块存储空间,两个文件名,原文件删除硬链接仍可用

    ln -s 原文件名    软连接名    ---创建文件的软链接
    ln 原文件名 硬链接名    --创建硬链接            
    ln -l    --第二大列,显示的数字,表示硬链接
    ls -i    --显示文件inode编号,同一编号的是同一硬链接

路径制定
    绝对路径:从/开始表示到文件所在位置的完整路径,称为绝对路径
    相对路径:仅从当前所在目录下查看路径,称为相对路径

文件查找
    find / -name fi        --按照名字查找制定文件(在根目录下查找)
    find /    -size +100M    --按照文件大小查找(在跟目录下查找)
    find / -user root    --按照文件的属主查找(在根目录下查找)
    find / -inum 3004(i节点)    --查找硬链接(在根目录下查找)

 4. 通配符

保留字    --特殊含义的字符、符号

    *    --通配符,任由长度的任意字符

    ?     --单配符号,单个长度的任意字符

    [0-9]    --单个字符的取值范围[a-z](区分大小写),[A-Z],[02468]等同于[0,2,4,6,8]

    [^1-9]    --单个字符的排除范围

    ""    --表示、明确参数,当前参数中有空格,为了表示参数是一个整体,需要加""

    ''    --为了实现引号的层次嵌套

    ``    --反单引,所引起的内容当做命令来执行

    \    --反斜杠,转义字符,把符号或字符的隐藏含义显示出来

    |    --管道符,前后两个命令,前命令的运行结果作为后命令的输入信息使用

    $    --用户身份符;变量值提取;
    
    >    --输出重定向,前命令后文档,前命令的运行结果不显示,保存到指定文档中
        -- > f1  qin清空f1中的内容

    <    --输入重定向,前命令后文档,把后文档中的内容当做前命令的输入信息
            列:write pp < f1     wall < f1

    &    --后台指定符,把命令放入后台执行,仅显示结果(Ctrl + z)
        jobs    --查看后台    列:find / -name f12 &
    
    write root    --给已登录德用户发送消息,进入消息编辑界面,Ctrl + d 退出编辑
    write root tty3        --指定给那个终端的用户发送消息
    wall        --给所有登录的用户发送消息
    mail root     --给用户发邮件
    mail         --查看本机邮件
 

 5. shell

shell
    编辑器:负责把系统之外的高级语言编写的软件程序,翻译成计算机硬件能够识别的机器语言
    
    Linux中的编辑器为shell,RedHAT和CentOS默认使用的是Bash

命令的分类
    
    内置命令
        命令集成于系统shell和内核中,无需编译,没有对应的可执行程序

    外部命令
        位于系统的shell之外,有对应的可执行程序,需要shell编译后才可执行
    
        whereis ls     --查看某个命令的可执行程序和帮助文档位置

——————————————————————————————————————————————————————————————————————————————————————————
        
环境变量
    
    功能:指定系统中的某种工作状态的变量
    常用变量:
        LOGNAME        --当前登录用户
        SHELL        --当前编译器的版本
        HOME         --当前用户的家目录
        LANG         --当前系统语言
        PATH        --命令搜索路径,运行命令时,Linux到那些目录下查找可执行程序
        PS1        --命令提示符,指定字符界面下,输入命令前的提示文字

        set        --查看系统中所有的环境变量
        echo $PS1    --查看环境变量的值,环境变量值必须大写
        PS1="{\u@\h \t \w }\\$"        --更改环境变量的值
                    \u    --用户名
                    \h    --主机名
                    \t    --时间
                    \d    --日期
                    \w    --绝对路径
                    \W    --相对路径
                    \\$    --身份符
        重启失败
            原因:系统配置有专项的配置文件做记录,存放于磁盘中,系统运行是从磁盘读取配置文件到内存,日常命令操作,生效给内存中的配置文件,磁盘中的配置文件未被改动。所以注销、重启时失效。
            解决重启失效:手动更改磁盘中的配置文件

——————————————————————————————————————————————————————————————————————————————————————————

环境变量配置文件

        系统环境变量配置文件
            针对整个系统生效,所有的用户都会集成和遵守
            /etc/bashrc    --针对shell和内核做操作
            /etc/profile    --针对外围程序做操作
        
        个人环境变量配置文件
            仅针对单个用户生效,不影响其他用户使用
            $HOME/.bashrc
            $HOME/.bash_profile
    
        把对环境变量做更改的命令写入配置文件。
        注:系统配置王文建和个人配置文件发生冲突是,以个人设置为准。

——————————————————————————————————————————————————————————————————————————————————————————

命令别名:
        给较长较复杂的命令,起一个剪短的格式,便于使用
        alias    --查看命令别名
        alias abc="cd /etc/sysconfig/network-scripts"    --新建命令别名
        unalias    abc    --取消命令别名
        
        注:定义的命令别名也是重启失效,可以写到环境变量配置文件中永久生效。


shell 编程    --- 批处理脚本编写,多用于夜间跑批
        
        vi text.pl    --- 脚本后缀 .pl .sh
        
            #!/bin/bash    --- 指定编译运行本脚本的shell
            代码或命令
            
        chmod a+x text.pl    --- 添加执行权限

    运行脚本
        /mnt/text.pl     --- 绝对路径运行脚本
        cd /mnt
        ./mnt        --- 相对路径运行脚本

        bash test.pl    --- 使用bash执行脚本,脚本可以无执行权限(x)
        注:运行脚本时,是新开shell执行命名,脚本运行完毕,shell关闭。
            所以,脚本对环境变量等项的操作,是无法生成给shell的。
    
        source test.pl     --- source表示使用当前shell执行脚本,不新开shell
        
        . test.pl     --- 等同于source
        
编程语法:

    变量:程序中用于临时存放数据的工具,实质是在内存中开辟一块空间,并起名。
    
        name=zhangsan    --- 定义一个变量叫做name,存入数据zhangsan,称为赋值
        age=25         --- 定义一个变量叫做age,并赋值
        echo "name is $name"
        echo "age is $age"
    
        shu=`ls -l /etc | grep "^d" | wc -l`    --- 用``执行命令,命令的结果赋值给变量

        let num3=$num1+$num2     --- let表示后边代码按数学计算执行
    
        read num1     --- read 是提示从键盘接受输入的数据赋值给变量
        
        "*"    --- 变量或数值有特殊字符时,写在""内表示普通字符使用

    判断语句
        
        if格式1
        
            if [ 判断条件 ];then     --- 判断条件,若条件满足,则执行代码
                //代码
        
            fi
            判断条件
            age -gt 15     --- gt 大于    lt 小于        eq  等于    ge  大于等于     le 小鱼等于
            
            name = "zhangsan"    --- 字符判断用=
            注:=两侧有空格表示判断,=两侧无空格表示赋值
            
            -f /mnt/f1    --- 判断文件是否存在;-d 判断目录    -l  判断软链接
            -r /mnt/f1    --- 判断文件是否有r权限    -w  -x
            -z $num1     --- 判断是否是空变量,若是,则结果为:true
            
            条件1 -a 条件2    --- -a表示and -o表示or
        
            !条件        --- !非,取反值

        if格式2
            
            if [ 判断条件 ];then    --- 判断条件,若条件满足则执行代码1
                //代码1
            else    ---    条件不成立,则执行代码2
                //代码2
            fi
        
        if格式3
            
            if [ 判断条件 ];then    --- 判断条件1成立,则执行代码1
                //代码1
            elif [ 判断条件 ];then    --- 若条件1不成立,则执行判断条件2,成立则执行代码2
                //代码3
            elif [ 判断条件 ];then    --- 若条件2不成立,则执行判断条件3,成立则执行代码3    
                //代码3
            fi
            
            注:判断从上之下执行,以次判断,遇到成立的则立即执行不看后面的代码,所以多重判断,需要设计好个条件的排列顺序。

循环语句
    while [ 条件 ]
    do
        //代码
    done
    
    num=1
    while [ $num -le 100 ]
    do 
        echo "hello"
        let num=$nu_1
    done

    执行过程:判断条件 -> 执行代码 -> 判断条件 -> ...... -> 判断条件失败 -> 跳出循环
    循环四要素:初始值、条件、代码、自增减

    for 变量 in 值1 值2 值3 值4    --- 给变量依次赋值,带入代码
    do 
        //代码
    done
    列:
        sum=0
        for num in 1  2 3 4 5
        do 
            let sum=$sum+$num
        done
多分支语句
        
    echo  please input your name
    read name
    case $name in 
        1)echo first ;;
        2)echo second ;;
        3)echo third ;;
        *)echo ----- ;;
    esac
    
    case $变量 in        --- 根据变量的值,找到下列对应项,执行代码
        值1)//代码 ;;    --- ;; 表示该项结束
        值2)//代码 ;;    
        值3)//代码 ;;
        *)//代码 ;;    --- * 若给定的值和变量都不匹配,执行*中所对应的代码
    esac    

选择结构
    
    select 变量 in 值1 值2 值3 ... ... --- 把给定的各个值,显示在菜单中用于选择,根据人为选择,把对应的值赋值给变量,带入代码中执行
    do
        //代码
        break
    done
    列:
        select num in aaa bbb ccc ddd 
        do 
            echo $num
        dome

 6. 分区

  标准分区
    主分区:
        允许安装系统
        一块磁盘最多四个主分区
    扩展分区:
        占主分区的一个名额
        扩展分区不可直接使用,必须在扩展分区的基础上,创建逻辑分区
    逻辑分区:
        建立在扩展分区的基础上,可建立多个,可以用于存储文件
 
Linux基本磁盘管理
    lsblk    --查看本机的磁盘分区
    fdisk    --查看本机的磁盘分区表,sector(扇区),cylinder(柱面)
        --blocks表示分区大小,单位是Kb
        --7.0之后的版本,stat end 表示开始和结束的扇区号
        --7.0之前的版本,stat end 表示开始和结束的柱面
    df -h     --查看文件系统的使用率
    fdisk /dev/sda        --使用fdisk工具进行磁盘管理,进入fdisk界面
            命令:    
                d    --删除某个分区
                n    --新建某个人去
                t    --更改分区的系统编号,即文件系统类型
                q    --不保存退出
                w    --保存退出
                p      --显示分区表,等同于fdisk -l 
                m     --显示帮助
        
    实验:
        按 n 键 ->输入扇区号,一般使用默认即可 -> 输入结束扇区号 -> +1000000表示占用的1000000个扇区,+800M自定义分区大小
        按 t 键 ->指定分区号 -> 按L键 -> 显示所有可用文件系统类型(83 Linux即 exit4 或 86 bg)-> 86 ,即NTFS,为了和windows兼容 -> 按 p 键 -> w保存退出
        
        注:新的分区表,并未立即生效,reboot重启后失效

            partprobe     --更新分区表,使分区表立即生效
            格式化=制作文件系统
            mkfs -t ext4 /dev/sda7     --制作文件系统
            mkfs -t vfat /dev/sda7     --linux中对所有Windows文件系统类型统一使用vfat
    
            mkdir /mnt/d1 /mnt/d2        --创建挂载点
            mount /dev/sda7 /mnt/d1        --挂载文件系统
            umount /dev/d1            --卸载文件系统,指定设备或挂载点都可
            df -h             --可见挂载效果
            mount                 --查看本机的挂载表
            mount /dev/sda7 d1 -o ro     --指定挂载时设定为只读文件系统

        开机自动挂载
            vi /etc/fstab     --编辑文件系统配置文件,写入
                /dev/sda7 /mnt/d1    vfat       rw,user    00
                /dev/sda1 /mnt/d1    ext4       rw,user     00
            保存退            
            书名:rw挂载权限,user允许普通用户访问,
                        1列表示是否自动备份(0-不备份,1-备份);
                        2列表示是否开机自动扫描(0-不扫描,1-自动扫描,2-手动扫描)
            fsck -t ext4 /dev/sda6     --手动扫描命令

        UUID     --设备唯一识别号
            blkid             --查看所有设备的UUID
            blkid /dev/sda1        --查看指定设备的UUID

——————————————————————————————————————————————————————————————————
——————————————————————————————————————————————————————————————————

LVM    --逻辑磁盘

    基本分区缺点:分区划分后,不可扩容,分区分配空间必须连续的,不可跨
    
    LVM:解决标准分区的缺点

基本概念:

    PV:物理卷,一个分区制作称一个PV
    
    VG:卷组,多个PV组成一个卷组,称为VG
    
    LV:逻辑卷,从VG中划分出一块存储空间,称为LV该LV可以跨越多个PV占用空间
        --一个LV制作文件系统,挂载使用,可根据需要扩容
    
    PE:物理单元,PV加入VG时,按照统一大小,分割成个存储单元,称为PE
        --建立VG时,需要指定PE的大小
        --划分LV时根据LV的大小划分出足够多的PE,组成LV

    LE:逻辑单元,PE被LV占用后,在LV中,称为LE
        --PE = LE,LE是PE的映射

实验:
    1、划分分区,制作成PV
    
        fdisk 划分分区 /dev/da7 /dev/da8 /dev/da9
        
        指定文件系统类型:8e(Linux LVM)

        partprobe    --重置分区表
        
        pvcreate /dev/sda7 /dev/sda8 /dev/sda9

        pvdisplay     --查看本机所有的PV

    2、把PV加入到VG中
        
        vgcreate -s 64 vg01 /dev/sda8 /dev/sda9        --制作VG
            -- -s 指定PE大小(默认4M,必须为2的次方)新VG名 加入的PV
        
        vgdisplay    --查看VG,可见PV数,PE数,使用PE数,未使用PE数

    3、从VG中划分LV
        
        lvcreate -L 500M -n fv01 /dev/vg01        --创建LV,(-L -- 指定LV大小,-l -- 指定LV的个数,-n -- 指定LV名 VG名)
    
        lvdisplay     --查看本机的所有LV

        lvdisplay -m /dev/vg01/lv01    --查看LV中所占用的PE映射关系

    4、给LV制作文件系统,挂载使用
    
        mkfs -t ext4 /dev/lv01    --制作文件系统
    
        mount /dev/vg01/lv01 /mnt/d1    --挂载,df -h --查看

        开机自动挂载:
            写入/etc/fstab 中即开机挂载

    VG扩容:
        vgextend /dev/vg01 /dev/sda7    --扩容VG,加入PV
    
        vgreduce /dev/vg01 /dev/sda7    --缩容VG,提出PV
    
    LV扩容:
        lvextend -L +100M /dev/vg01/lv01    --扩容LV
                -- -L +100M 表示增加100M
                -- -l 20 表示增加到20个LE 

        注:扩容后的LV新增加的空间,不可直接使用,因为没有做文件系统
        
        resize2fs /dev/vg01/lv01    --对新增加的空间制作文件系统
        
        lvextend -L +100M -r /dev/vg01/lv01 --扩容LV时,-r 直接做文件系统

    数据转移:
        pvmove -n /dev/vg01/lv01 /dev/sda7 /dev/sda9    --把lv01在sda7上映射的PE,转移到sda9上
    
        -- -n 指定LV名,若不写转移sda7上的所有LV映射

清理实验
    
    umount
    
    lvremove

    vgremove 

    pvremove

 7. Block,inode,vim

Block    --存储块
    一个分区制作文件系统后,则会被分割成N个大小相同的存储块,称为Block。

    Block是分区分配文件空间时的最小单位,目的是快速磁盘寻址,Linux中默认Block的大小是4kb。
    
    du f1 --查看文件占用的磁盘空间大小,显示单位Kbd
    du -s /f1 --查看整个目录占用磁盘大小
    
     mkfs -t ext4 -b 2k /dev/sda8    --配置文件系统的存储块为2Kb
                    --指定Block大小,最大为4Kb

    tune2fs -l /dev/sda1    --查看某分区的Block信息,可见Block大小,Block个数,Inode个数。

    tune2fs -c 10    /dev/sda8    --没挂载10次进行文件系统扫描。
    tune2fs -i 20d  /dev/sda8     --每20天进行一次系统扫描(d-天,w-周,m-月)
    tune2fs -c -1 /dev/sda8     --取消按挂载次数自动扫描
    toue2fs -i 0 /dev/sda8         --取消按天 数/周/月 自动扫描

inode     --I节点
    一个分区制作完文件系统后,会被分割成两个区:
        inode区        数据区

    一个文件在inode中占用一个block,记录:文件名,大小,创建修改日期,权限,所属所占数据区的地址编号等
        由inode指定的数据器地址编号,查找到数据所存放的区域
        说明:inode区有多少个block,大约表示该文件系统允许存放多少个文件。
        
    对于文件系统(分区)的概念
        1、block块大,分区中,每个文件较小,但是文件个数多,则inode区用完,但数据区任有空闲
        2、bolck块小,分区中,每个文件较大,则数据区用完,inode区有空闲
        
        建议:当制作文件系统时,建议事先规划一下该分区的使用目的,判断文件的大小,设定合理的block大小。
        
    一个文件系统制作完成后,设定第一个block专用于记录本分区的属性信息,被称为超级块(第31块block作为超级块的备份)

    df -i --查看inode区信息,单位:个
    ls -i --查看inode节点编号
    stat f1    --查看文件详细信息,可见inode编号,硬链接数等
    find / -inum 1002    --查看1002编号的硬链接

vi配置
    vi f1 -> 命令模式 -> i a o键 -> 编辑模式 -> ESC 键 -> 命令模式 -> : -> 末行模式
    wq    --保存退出
    q!    --不保存退出
    set nu  --显示行号(set nonu  --取消行号)
    101    --跳转到101行
    set backup     --编辑前做备份,备份文件自动放在同目录下,同名~文件中
    /name         --查找指定单词,n键查找下一个
    3,6 s/name/123123/g    --查找并替换字符,固定格式,3,6表示3-6行(%表示所有行)
    % g/name/d        --删除包含指定字符的行

    命令模式    --快捷键
        ZZ    --不保存退出
        ZQ    --保存退出
        G    --跳转到文件结尾
        yy     --复制光标所在行
        3yy    --复制光标所在行开始的三行
        p    --粘贴到光标的下一行
        dd    --剪切光标所在行
        3dd     --剪切光标所在行开始的3行
        u    --撤销上一步
        U    --撤销整个编辑

 8. 用户,组管理

用户:
        useradd "用户名"    --新建用户
        passwd    "用户名"    --设置密码,不加用户名,给当前用户设置密码
    
        vi /etc/passwd        --用户的配置文件,显示七列信息,用:分隔
        root:X:0:0:: /root /set/hash
            用户名:
            密码列:    --有专用于记录密码的配置文件,所以用X填充
            用户ID:    --UID,用户在系统中的唯一编号
                    --7.0之后版本,0-99 系统用户,100-999 软件用户, 1000-65535 自定义用户
                    --7.0之前版本,100-499 软件用户,500-65535 自定义用户
            私有组ID:    --GID,用于记录用户的所属的私有ID
            用户属性:    --用户的附加信息,如电话,邮箱,地址等(一般为空)
            用户家目录:    --指定用户家目录的位置
            shell        --用户登录后使用的shell

        vi /etc/shadow        --用户的密码配置文件,记录密码,密码有效期
                    (1970.01.01开始计时),改密码时隔
        用户禁用    --锁用户
            passwd -l aaa        --通过锁密码,禁用用户aaa
            passwd -u aaa        --解锁密码

            usermod -L pp        --通过锁用户名,禁用用户
            usermod -U pp        --解锁用户名

        取消密码验证
            passwd -d pp    --取消用户密码,即登录时无需密码登录
            passwd pp    --重新设置密码,恢复验证

        组织用户登录系统
            vi /etc/passwd        --在shell列改为:/sbin/nologin,实现在未禁用用户的情况下,拒绝用户登录系统,但是可以登录服务
                实现未禁用用户的情况下,拒绝用户登录系统,但是可以登录服务
        
        改名:
            usermod -l oo pp     -- -l 改用户名,格式:先写新名,后写旧名
            usermod -d /mnt/ccc ccc        --更改用户的家目录,为:/mnt/ccc

        删除用户:
            userdel aa    --删除用户,会保留用户相关文件,如:家目录等
            userdel -r aa    --删除用户,同时删除用户所有相关文件
组管理:
    私有组    --属组

        Linux中规定:每个用户必须属于一个,且只能属于一个私有组;

        一个组可以是多个用户的私有组。                

    标准组     --
        正常使用的用于管理用户的组,用户可有可无,可多个标准组。

        vi /etc/group     --查看组的配置文件,四列信息

            组名:组密码:组ID(UID):组中的标准组成员

        groupadd 组1     --新建组

        gpasswd -a qq zu1     --把qq加入到zu1中

        gpasswd -a 11 zu1     --给组添加成员

        gpasswd -d pp zu1     --组中提出成员

        gpasswd -A root,pp zu1     --把zu1组的权限给pp,管理组员,允许添加删除组中的用户。

        gpasswd -A root zu1     --仅root为管理员

        id pp            --查看用户的相关信息
        
        usermod -G zu2    pp    --替换用户的标准组;注:用usermod -G 替换标准组后,原有的所有标准组全部退出
        
        删除组:
            groupdel zu1     --删除组
        
        参数:
            usermod useradd 参数:
                        -d    --家目录
                        -g    --私有组
                        -G    --替换标准组
                        -u    --指定UID
        
        用户替换:
            su pp        --切换到pp身份下,exit退出;无 - 表示用户的环境变量设置
            
            su - qq        --使用目标用户的环境变量设置
            
            sudo     --给普通用户授权某些命令的使用权限
                
            visudo    --打开编辑sudo配置文件,绝对路径:/etc/sudoers
                (约98行写下:用户名    主机名=(以某个用户身份) 命令程序的绝对路径)
            列:
                pp    localhost=(root) /usr/bin/mount,/usr/bin/umount
                说明:给pp授权,允许在localhost主机上以root身份使用mount,umount命令
                
                以pp身份登录
                sudo mount /dev/sr0 /media    --用户验证sudo可用    
 

 9. 系统备份

数据备份
    
    完整备份    -- 备份所有文件

    增量备份    -- 备份和上一次备份后的变化数据

    累计增量备份    -- 备份和上一次完全备份的变化备份

    备份等级
        0 - 9
        
        0    -- 完全备份
        1    -- 备份和0级的变化数据
        2       -- 备份和1级的变化数据
        .
        .
        .
        9     -- 备份和8级的变化数据
    
    注:每一级备份,向前找最近的比它数字小的备份操作,做变化备份

    案例:
        周日晚 0级备份    -- 完全备份
        周一晚 2级备份    -- 增量备份
        周二晚 2级备份    -- 累计增量备份
        周三晚 1级备份    -- 累计增量备份
        周五晚 2级备份    -- 增量备分
        周六晚 2级备份    -- 增量备份

    实验:
        mout /dev/sr0 /mcdia     -- 挂载光盘
        
        cd /media/Packages    --进入光盘下默认的安装包路径
    
        rpm -ivh rmt-1.5XXXX.rpm 
    
        rpm -ivh dump-0.4XXX.rpm    --安装所需软件包
    
        
        注:dump备份只针对挂载的文件系统做操作,即指定挂载点做备份。
            dump备份数据存放在一个未挂载的文件系统中
2
        fidsk /dev/sda         -- 做一块新的分区,更新分区表,制作文件系统,不挂载
        
        dump -0 -u -f /dev/sda7 /home    --备份某文件系统
                        -- -0 备份等级,0级备份(完全备份)
                        -- -u 做备份日志,记录文件:/etc/dumpdates
                        -- -f 指定备份存入的设备
        dump -W     --查看备份记录
        
        restore -tf /dev/sda7     --查看备份设备中的备份内容

        restore -rf /dev/sda7     --恢复所有数据到当前目录,若同名则覆盖

        restore -xf /dev/sda8 f1     ---恢复指定文件或目录,按1键,按n键完成

        
数据转移
        
        dd if=源设备/文件 of=目标设备/文件 bs= 每次转移字节数 count=转移次数
        dd if=f1 of=f2     --- 相当于文件复制
        dd if=/dev/sda1 of=/dev/sdb2    --- 分区对考
        dd if=/dev/sda of=/dev/sdc    --- 盘盘对考
        注:dd也可以做数据备份使用

 10. 软件安装

rpm 
    挂载光盘
        mount /dev/sr0 /media    --- 光盘挂载
                    --- 光盘设备文件/dev/cdrom 实质上时一个软连接指向sr0
        
        cd /mcdia/Packages     --进入光盘中的rpm软件包存放路径
                    -- 老版本的LInux路径:RPMS Packages 
    
        rpm -ivh dhcp.4.rpm     --安装指定软件包
                    -i    安装
                    -v    检查、差错
                    -h     以#形式显示安装进度

        rpm -e dhcp         -- 卸载

        rpm -q dhcp         -- 查询某软件包是否安装过    
        rpm -qa         -- 查询系统里安装的所有安装包
        rpm -ql dhcp         --查询软件安装后所有文件的位置
        
        rpm -qf /etc/dhcp/dhcpd.conf    --- 查询某文件被那个软件使用

        rpm -Uvh dhcp-4.XXX.rpm        --- 升级软件

        rpm -Fvh dhcp-4.XXX.rpm        --- 更新软件

yum源安装
    功能:解决rpm软件包之间的依赖关系
    思路:指定一个存放所有rpm软件包的路径,安装时,用yum自动调用安装依赖关系包

    挂载光盘:
        cd /etc/yum.repos.d     --- 进入yum固定的安装源配置文件存放路径
        mkdir back        --- 创建目录,用于备份
        mv CentOS-* back     --- 备份源有文件

        vi cdrom.repo        --- 编辑自定义的安装源配置文件,文件名随意,后缀必须时:.repo
        
                [cdrom]            --- 设置项目标签,随意写
                name=cdrom         --- 本项名,随意写
                baseurl=file:///media    --- 指定所有rpm软件包的存放路径    
                enabled=1        --- 启用本项    
                gpgcheck=0        --- 关闭安全检验

        yum -y install mysql-connector-java

        yum clean all        --- 清空yum缓存
        yum makecache        --- 创建yum缓存
    
        yum list         --- 查看可用安装源下,都有那些软件包

        yum remove     yum update 等命令

        yum makecache    --- 刷新缓存
    
    源码包安装    --- 源程序包
            下载到软件包大多是.tar /.gz /.tgz 
            tar -zxvf xxx.tgz    --- 解压解包,解包后ls会查看到一个目录
            cd XX             --- 进入解包后生成的目录
            sl查看
                情况一:
                    发现一个install.pl的可执行程序,即安装程序
                    ./install.pl    --- 绝对路径运行安装程序,.表示当前目录
                    
                情况二:
                    发现一个叫configure的可执行程序,说明软件包还未被编译
                    ./conifigure     -- 绝对路径运行该程序,进行编译检查,若无error,warnning等报错
                    make --- 编译本软件
                    make install     --- 安装本软件
            

 11. 硬件管理

查看CPU
    
    cat /proc/cpuinfo    --查看CPU信息
            -- /proc 调取当前内存中的系统信息做记录,采用伪文件系统
    
    lscpu    -- 查看CPU的硬件信息,可见core数(线程数),一核做VDT虚拟化技术,可以运行两个任务,称为:2core
    
    top    -- 查看系统当前综合性能,可见CPU、内存、进程等、(3秒刷新一次,q键退出)

    sar 1 3     -- 查看CUP的使用率,每一秒显示一次,共显示2次
             %user     -- 以用户身份调用的程序占CPU比例
         %system -- 系统进程占CPU的比例
         %idle     -- CPU空闲率,正常:50%+     较忙 :-40%
         %iowait -- 等待读写的进程占用CPU比例
         %nice   -- 手动调整过优先级的程序占CPU比例
         %steal     -- 卡死进程占CPU的比例

负载:CPU每个core上,运行队列中有几个任务在排队运行,core上给每个任务分配时间片
    
    w    --可见平均负载大小,显示:lmin 5min 15min 内的平均负载
        
    uptime     --只显示平均负载大小,正常:0.7 , 负载过大:2

查看内存:
    
    free -m        -- 查看内存使用情况,-m 按MB显示,正常使用率 40% 左右

查看磁盘:
    
    iostat    -- 查看各磁盘的读写速度

查看借口:
    
    lsusb    
    
    lspci
    
    dmesg    -- 查看硬件检测报告,检修硬件故障的时查看
    
进程管理
    
    ps     -- 查看当前登录账户正在登录的进程

    ps -aux        -- 查看系统中所有进程,可见:所有用户,进程ID,占CPU比例,占内存比例,占swap(虚拟内存)比例

    ps -ef        -- 查看系统中所有进程,可见PPID - 父进程

    状态:        
        运行态:
            前台运行台
        
            后台运行台

        阻塞态(暂停态,挂起态)

        终止态:

        
        命令 +  &    放入后台
        
        前台进程 + Ctrl+c    -- 强停
        
        前台进程 + Ctrl+z    -- 放入后台挂起状态

        jobs     -- 查看后台进程,可见后台运行和后台挂起进程[]

        bg X    -- 前台挂起进程放入后台运行,X表示进程编号
        
        fg X     -- 后台进程放入前台运行,X表示进程编号

        杀死进程
            
            kill -l     -- 显示杀死级别
            
            kill -9 PID    -- 杀死指定进程
        
            kill -9 进程名    -- 杀死多个同名进程
    

 12. 进程

进程分类:
    交互进程:用户人为输入的命令,命令的执行进程称为交互进程。
    
    批处理:脚本程序,实现多个命令写入一个可执行脚本,运行该脚本执行多个命令。
    
    守护进程:监控或监听本机的某个服务或端口的进程。


定点运行:
    
    at 22:00    --- 设定在指定的时间运行进程,回车后进入命令编辑界面,Ctrl+d结束编辑。

    at now+5min    --- 5分钟后执行命令

    atq         --- 查询以指定的定点任务,可见任务编号

    at -c  任务编号    --- 查询具体的任务编号

    atrm 任务编号    --- 删除任务

        
    定点任务进程文件:/var/spool/at下,有定点任务对应的可执行程序
    
    at用户管理文件:
        
        /etc/at.deny     --- 列出拒绝使用at功能的用户

        /etc/at.allow    --- 只运行那些用户使用at功能
        
        注:当allow和deny 同时存在时,以at.allow 为准

    at功能缺点:只能执行一次,不可以周期性执行
    
计划任务:
    
    crontab -e     --- 编辑当前用户的计划任务,采用vi编辑方式

    crontab -l     --- 查看当前用户的计划任务
    
    crontab -r     --- 删除本用户的所有计划任务
    
    crontab -e -u pp    --- -u 指定用户,给pp创建计划任务
        
    格式:
        分    时    日    月    周    命令    --- 需要命令程序的绝对路径
    
        00    22    *    *     *    /usr/sbin/reboot    --- 表示每天10点重启
        
        00    22    1    *    *    /usr/bin/rm -rf /tmp/*    --- 每月1号十点删除tmp下的所有内容

        00    22    1    *    *    /usr/bin/rm -rf /tmp/*    --- 每周1十点删除tmp 下的所有内容

        00     22   1,2,3,4,    *     *    /usr/bin/rm -rf /tmp/*    --- 用,做挑选

        */10    *    *    *    *    /usr/ben/rm -rf /tmp/*    --- */数,设定频率

        *    *    *    *      1-5    /usr/ben/rm -rf /tmp/*    --- 用 “数-数” 表示范围


    cron的记录文件:
            
        /var/spool/cron下,以用户名命名的文件,即对应用户的计划任务
        
    cron的管理文件:
            
        /etc/cron.deny         /etc/cron.allow     allow文件默认不存在,特性功能与at相同

 13. 文本字符管理

head -n 3 f1     --- 显示文件前三行
head -n -3 f1     --- 不显示后三行

tail -n 3 f1     --- 显示后三行
tail -n +2 f1     --- 从第二行显示到最后一行
tail -n +3 f1 | bead -n 3 

grep 'name' f1 --- 抓取显示指定字符的行
grep -i 'name 'f1    --- -i 忽略大小写,抓取
grep '^name' f1        --- 显示以什么开头的行
grep 'name$' f1     --- 以指定字符结尾的行
grep -v 'name 'f1    --- 排除显示包含'name'的行

wc -l f1     --- 统计文字汇总的文字行数 

ll /mnt/ | grep '^d' |wc -l    --- 统计有多少个目录

sort -rn -k 2 f1    --- 按某列的值,排序显示文档内容
    -r    -- 降序
    -n    -- 按数值排序
    -k    -- 指定按第几列的数据排序

ps -aux | sort -rn -k 4 | heab -n 5     --- 显示占内存最高的前5个进程

awk     --- 抓取显示列
    awk -F " " '{print $1,$3}' f1    --- 抓取显示指定列
                    -F  -- 指定列的分割符
                     $2,$3  -- 指定要抓取的列

awk -F "" '($2>300) {pront $2,$3}' f1    --- ()中加筛选条件

sed '2,4d' f1      --- 不显示2到4行
sed '2,$d' f1     --- 不显示从第2行开始到结尾
sed 's/name/abc123/g' f1    --- 替换显示,把原字符,替换成新字符

sed '1a\aaa sss ddd' f1        --- 在第1行后追加,一行为:aaa sss ddd
sed '1i\aaa sss ddd' f1        --- 在第1行前插入,一行为:aaa sss ddd
sed '1c\aaa sss ddd' f1        --- 把第1行的内容替换成:aaa ss ddd

sed '2,3d' f1    --- 不显示2,3行的内容
sed '/name/d' f1 --- 物理删除包含指定字符的行

sed -n '/name/p' f1     --- 显示包含指定字符的行    
 

 14. 服务

服务
    Linux中某项专用的功能,如:at,wed,cron,FTP等

服务管理
    Linux7.0之后版本使用systemd管理系统进程及服务
    systemctl list-unit-files     --- 查看系统中存在的所有服务
                    --- 右侧显示该项服务的开始状态,static 系统必备服务,enable 开机启动,disable 开机关闭。
    systemctl list-unit-file | grep atd     --- 查看指定服务的开机状态

    stsysv
    
    systemctl enable atd         --- 设置服务的开机状态
                    disable        --- 开机不启动

    systemctl status atd         --- 查看服务的启动状态
    
    systemctl stop atd     --- 关闭服务
                --- stat 开始
                --- restart 重启
                --- reload 重载

服务进程的存放路径
    
        /usr/lib/systemd/system中,以.service 结尾文件
        
        说明:服务即某个功能,各自有各自的服务名,如:at cron http web 
              服务有对应的进程,进程有各自的进程名,进程名的命名习惯:服务名后加d,如:atd crond httpd 等
    
        systemctl restart httpd.servcie 实际使用时可省略.sercice 不写
    
7.0之前版本
    Linux使用init进程管理系统进程即服务
    所有系统服务:/etc/rc.d/init.d 下存放
    service httpd restart     --- 使用service 命令开启,关闭,重启服务

    ntsysv  --- 查看、配置所有服务的开机状态
    
    chkconfig httpd on     --- 设置某个服务的开机自启,off 开机不自启        

开机级别
    开机级别文件
        /usr/lib/systemd/system下,以.target 命名的文件
    会发现同级别有多个文件,目的是设置相同级别下有多中开机状态

    开机级别配置文件
        /etc/systemd/system/default.target,软链接文件,指向某个.target文件,LInux的开机级别

    Linux启动顺序
          开关 -> bios加电自检 -> 读取磁盘的MBR,运行引导程序 -> 选择要进入的系统 -> 加载系统内核(kernel) ->  启动shell编译器,运行systemd进程 -> 读取defaule .target ,进入相应的级别 -> login登录

    grup引导程序
        vi /etc/grub2.cfg    --- 编译grub配置文件呢,是软链接,指项/boot/grub2/grub.cfg
                    timeout=5     --- grub 界面倒计时时间
                    menuentry     --- 可选项

开机级别修复
        开机grub界面下,按上下键(取消倒计时)
        让光标停留在正常Linux系统上,按 e 键,进入代码编译界面
        编译Linux16行,在结尾处追加 systemd.unit = rescue.target     --- 临时更改启动代码,让系统进入单用户模式
        按ctrl + X 组合键,执行启动代码,进入单用户模式,仅输入root密码即可
        systemctl set-default multi-user.target --- 该回正常启动级别
        reboot启动

root密码修复
    开机grub界面下,按上下键(取消倒计时)
    让光标停留在正常Linux系统上,按 e 键,进入代码编译界面
    找到LInux16行,ro 改为 rw init=/sysroot/bin/sh     ---- 开机不挂载光盘直接进入shell:sh
    (在Linux16这行的后面输入“rd.break”ctrl + x)
    ctrl + x 执行操作
    mount -o remount ,rw /sysroot    --- 重新挂载磁盘分区
    chroot    /sysroot        --- 切换到分区挂载状态,并启用bash shell 
    unset LANG            --- 清空语言
    passwd     root             --- 重置root密码
    touch /.autorelabel        --- 重建selinnux的标签文件
    exit                 --- 退出bash,回到sh
    reboot                --- 重启

 15. 脚本

cpuMonitor

#!/bin/bash

while true
do
	date +"20%y-%m-%d %H:%M:%S"  >> /mnt/logs/cpuMonitor.log
	
	shu=`sar 1 1 | tail -n 1 | awk -F " " '{print $8}'`
	shu2=${shu%%.*}
	if [ $shu2 -lt 30 ]; then
		ps -aux | tail -n +2 | sort -rn -k 3 | head -n 10 >> /mnt/logs/CPUMonitor.log
	fi
	
	echo "" >> /mnt/logs/CPUMonitor.log
	
	sleep 1800   ---   sleep 进程休眠指定的时间,单位:秒
done

##本脚本有循环执行,可以不需要cron指定
## /mnt/cpuMonitor.pl &   ---   脚本放入后台运行即可

diskMonitor

#!/bin/bash

date +"20%y-%m-%d %H:%M:%S"  >> /mnt/logs/dfMonitor.log

df -h | tail -n +2 > /tmp/df.tmp

while read hang
do
	shu=`echo $hang | awk -F " " '{print $5}'`
	shu2=${shu%%%*}

	if [ $shu2 -ge 70 ]; then
		echo $hang >> /mnt/logs/dfMonitor.log
	fi

done < /tmp/df.tmp
echo "" >> /mnt/logs/dfMonitor.log
rm -rf /tmp/df.tmp

##使用cron设定本间本每天晚上02:00执行一次,即跑批

memMonitor

#!/bin/bash
	
	date ="20%y-%m-%d %H:%M:%S" >> /mnt/logs/memMonitor.log

	info=`free | grep Mem`
	shu1=`echo $info | awk '{print $2}'`
	shu2=`echo $info | awk '{print $3}'`
	let shu3=$shu2*100/$shu1

	echo $shu3
	
	if [ $shu3 -ge 70 ]; then
		ps -aux | tail -n +2 | sort -rn -k 4 | head -n 10 >> /mnt/logs/memMonitor.log
	fi
	
	echo "" >> /mnt/logs/memMonitor.log

##可以使用cron,也可以使用while sleep模式周期运行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值