1、文件的属性

  1. 1、文件属性信息概述
  2. 1、常见的文件类型有哪些
  3. d : 文件夹
  4. - :普通文件
  5. l : 链接文件
  6. c : 字符设备文件
  7. b :块设备文件
  8. s : socket文件
  9. p : 管道文件
  10. 管道:将前面一个命令的结果交给后面一个命令来处理即为管道技术。
  11. 2、硬链接和软连接
  12. 硬链接 ln [源来的路径] [新的路径]
  13. 硬链接是文件的别名 原来文件删了 还有个硬链接可以访问文件里的内容
  14. 软连接 ln -s [源来的路径] [新的路径]
  15. 软连接绑定文件名 源文件删了文件名没了软来凝结就会飘红
  16. 注:在linux操作系统中,硬链接个数为0时,才会删除源文件

2、文件属性信息

  1. 1、用户及用户组
  2. 用户就相当于系统系统管理员
  3. 用户组就相当于具备某种相同特征的一系列用户的集合
  4. 2、创建用户
  5. useradd : 创建用户
  6. groupadd :创建用户组
  7. id : 查看指定用户的id(默认查看当前用户)
  8. 格式:
  9. useradd [选项(非必须)] [用户名称]
  10. 用户名命名规则:
  11. 1、可以包含字母和数字
  12. 2、必须以字母开头
  13. 选项:
  14. -u : 指定uid
  15. -g : 指定gid
  16. -r : 指定创建系统用户
  17. -s : 指定用户默认的解析器:
  18. useradd zdw -s /bin/sh
  19. uid 代表的是 用户的唯一标号
  20. gid 代表的是 用户组的唯一编号
  21. 3、系统用户和普通用户的区别:系统用户一般用运行系统级别的应用程序
  22. id号在 0 ~ 200之间的用户运行的是操作系统级别的应用程序
  23. id号在 201 ~ 999 之间的用户运行的 是用户级别的应用程序
  24. 通常情况下,id号在1000以下,那么该用户就是系统用户,在1000以上是普通用户。
  25. 普通用户一般用来登录操作系统
  26. 系统常用的shell解析器
  27. /bin/bash
  28. /bin/sh
  29. vin /etc/passwd文件保存的是用户信息 可以改解释器
  30. 案例1:创建用户
  31. [root@python ~]$
  32. [root@python ~]$ groupadd -g 666 shanhe
  33. [root@python ~]$ useradd -u 666 -g 666 test777

3、用户的原理

  1. useradd test 创建一个用户:test
  2. Linux中一切皆文件。
  3. 涉及用户的文件如下:
  4. /etc/passwd :保存用户信息的
  5. root:x:0:0:root:/root:/bin/bash
  6. root :用户名
  7. x :密码占位符
  8. 0 :用户的uid
  9. 0 :用户的gid
  10. root :用户的简介
  11. /root :用户的家目录
  12. /bin/bash :该用户登录默认的解析器
  13. /etc/shadow :保存用户的密码
  14. root:$6::0:99999:7:::
  15. /etc/group :用户组文件
  16. root:x:0:
  17. root :组名称
  18. x :密码占位符
  19. 0 :组id
  20. /etc/gshadow :组密码文件
  21. 案例一:要求手动创建一个用户
  22. 知识储备:
  23. chown 是用来修改用户及用户组的
  24. chown test.test test
  25. chmod 是用来修改权限的
  26. chmod 700 test
  27. 1、修改/etc/gshadow文件
  28. 在末尾添加test:!::
  29. 2、修改/etc/gtoup文件
  30. 在末尾添加test:x:995
  31. 3 修改/etc/passwd
  32. 在末尾添加test:x:996:995:手动创建文件:/home/test:/bin/bash
  33. 4、修改/etc/shadow
  34. test:$6$Wj1ga/9nmn6UT134$z4o/eXCMCeVV/eNqyEURZGdbwheEex2HiHvARirraJlpHQoCTvyyh/i/0FmA
  35. ngzvQ6SNU/QOo8MrpF0WL.bzT/::0:99999:7:::
  36. 5 [root@localhost home]# pwd
  37. /home/
  38. [root@localhost home]# mkdir /home/test
  39. [root@localhost home]# cp /etc/skel/.* /home/test/
  40. 6chown test.test test
  41. 7chmod 700 test
  42. 8、测试
  43. ssh root@192.168.15.50

4、文件的权限管理

  1. 超管用户不受普通权限的限制
  2. 权限管理指的是操作文件的权限
  3. 读内容的权限 可读 r 4
  4. 写内容的权限 可写 w 2
  5. 执行内容的权限 可执行 x 1
  6. 权限位的概念
  7. rw- --- ---
  8. 属主 属组 其他人
  9. 设置权限的命令
  10. 1、设置用户及用户组
  11. chown 【选项】【用户】.【用户组(非必须)】 【路径】
  12. 选项:
  13. -R :递归设置
  14. 2、设置权限
  15. 以每个权限位为单位,把需要设置的权限的和使用chmod来设置
  16. chmod 【选项(非必须)】 【数字权限】 【路径】
  17. 选项:
  18. -R :递归设置
  19. 案例:将1.txt全部设置为可读可写可执行
  20. chmod 777 -R test/

5、路径对于权限的意义

  1. Linux一般是最小化安装,为了提高性能,linux一般是设置最小权限,为了提高安全性。
  2. 注:一定要使用普通用户,同时用全路径来测试。
  3. 1、读权限
  4. 推导过程:
  5. 当目录没有权限,文件有可读权限时文件不可读。
  6. 当目录和文件只有可读权限时,文件不可读。
  7. 当目录只有可写权限时,文件有可读权限时,文件不可读。
  8. 读权限结论:
  9. 当目录有可执行权限,文件有可读权限时,文件可读。
  10. 2、写权限
  11. 推导过程:
  12. 当目录没有权限,文件只有可写权限时,文件不可写。
  13. 当目录只有可读权限时,文件只有可写权限时,文件不可写。
  14. 当目录只有可写权限时,文件只有可写权限时,文件不可写。
  15. 写权限结论:
  16. 当目录可执行权限时,文件只有可写权限时,文件可写。
  17. 3、可执行权限
  18. 推导过程:
  19. 当目录没有权限时,文件只有可执行权限时,文件不可执行。
  20. 当目录只有可读权限时,文件只有可执行权限时,文件不可执行。
  21. 当目录只有可写权限时,文件只有可执行权限时,文件不可执行。
  22. 当目录只有可执行权限时,文件只有可执行权限时,文件不可执行。
  23. 当目录只有可读可写权限时,文件只有可执行权限时,文件不可执行。
  24. 当目录只有可读可执行权限时,文件只有可执行权限时,文件不可执行。
  25. 当目录只有可读可写可执行权限时,文件只有可执行权限时,文件不可执行。
  26. 当目录属主属组其他人都有可执行权限时,文件只有可执行权限时,文件不可执行。
  27. 当目录属主属组其他人都有可读可写权限时,文件只有可执行权限时,文件不可执行。
  28. 当目录属主属组其他人都有可读可执行权限时,文件只有可执行权限时,文件不可执行。
  29. 当目录属主属组其他人都有可读可写可执行权限时,文件只有可执行权限时,文件不可执行
  30. 可执行权限结论:
  31. 文件可执行权限的最小权限是:目录有可执行权限,而文件有可读可执行权限。
  32. 目录必须有可执行权限,文件才能拥有其他权限

6、文件权限的归属

  1. 可读 r
  2. 可写 w
  3. 可执行 x
  4. 用户的归属
  5. 属主 u
  6. 属组 g
  7. 其他人 o
  8. 案例1:给1.sh的属主可执行权限
  9. chmod 100 1.sh
  10. 按照文件的权限的归属来:
  11. chmod u+x 1.sh
  12. 案例2:给1.sh的属组可读权限
  13. chmod 040 1.sh
  14. chmod g+r 1.sh
  15. 案例3:在原权限不变的情况下,给一个其他人的可读权限
  16. chmod 144 1.sh
  17. chmod o+r 1.sh
  18. 案例4:去掉1.sh的其他人的可读权限
  19. chmod 140 1.sh
  20. chmod o-r 1.sh
  21. 案例5:把1.sh加上可执行权限
  22. chmod +x 1.sh
  23. 注:如果不跟用户归属,则默认作用于所有的用户。

7、系统安全优化

1、selinux
    配置文件路径:/etc/selinux/config
    临时禁用:
                setenforce 0
2、filewalld 防火墙
    云主机        ----> 安全组
        filewalld    --- > 防火墙
        iptables    --- > 防火墙
  关闭:systemctl disable --now filewalld
      disable : 禁止开启
            --now   : 立即执行
  开启:systemctl enable --now filewalld
    enable : 开机自启动
        systemctl start filewalld     # 开启
        systemctl stop filewalld      # 关闭
        systemctl status filewalld    # 查看防火墙状态
3、防止系统乱码优化
      en_US.UTF-8    :
        en :英文
        US :美式
        UTF-8 : 指定的编码
      zh_CN.UTF-8
        zh : 中文
        CN :简体中文

    LANG=zh_CN.UTF-8
    持久化保存字符编码:/etc/locale.conf
    通过命令的方式修改字符集编码
    [root@localhost ~]# localectl set-locale LANG=en_US.utf8

8、查找文件

1、查找文件
2、按照创建的日期查找文件
3、查询出所有的目录或文件夹
4、查询出权限为644的文件有哪些
5、查询出属主为test的文件有哪些

find命令::在linux系统中按照我们的要求去查询文件的。
    格式:
        find 【查询的路径】 【匹配模式】【匹配规则】
    匹配模式:
        -name:按照名字去匹配
            正则匹配:
                *     :匹配任意数量的任意字符(匹配0个或多个任意字符)
                ?    :匹配任意一个字符
        -type:按照文件的类型匹配
            常用的文件类型:
                f    :普通文件
                d    :普通文件夹
                l    :链接文件
                c    :字符设备文件
                b    :块设备文件
                s    :socket文件
        -perm:按照文件的权限来查询
            常见的文件权限:
                755        :文件夹的默认权限
                644        :文件的默认权限
        -user:按照文件的属主来查询 
         -nouser:查询用户被删除了的文件
         -group:按照文件的属组来查询
         -nogroup:查询没有属组的文件
             知识储备:
                 删除用户:userdel
                 删除用户组:groupdel
        -mtime:按照修改文件的时间来查询
            +    :查询某个时间段之前的数据 
            -    :查询某个时间段之内的数据
            知识储备:
                stat:查看文件的各种时间
             -ctime:按照文件的创建时间来查询
             -atime:按照访问时间来查询

         -size:按照文件的大小来查询的
             +    :查询超过n的文件
             -    :查询小于n的文件
        -a    :并且(默认的)
        -o    :或者
删除之前的文件:
    -exec(xargs)    :处理匹配之后的内容
    xargs                       :处理匹配之后的内容
案例1:查询出/etc目录下的hosts文件
    find /etc -name "hosts"
案例2:查询出/etc目录下的以ifcfg开头的文件
    find /etc -name "ifcfg*"
案例3:查询出/etc目录下以.conf结尾的文件 
    find /etc -name "*.conf"
案例4:查询出/etc目录下文件名中包含host的文件有哪些
    find /etc -name "*host*"
案例5:查询出/etc目录下所有的普通文件
    find /etc -type f
案例6:查询出/etc目录下所有的文件夹
    find /etc -type d
案例7:查询出/dev目录中的所有的块设备文件
     find /dev -type b
案例8:查询出/dev目录中所有的字符设备文件
    find /dev -type c
案例9:查询出/etc目录中文件名包含nginx的普通文件
    find /etc -name "*nginx*" -a -type f
案例10:查询出/root目录下权限为755的文件
    find /root -perm 755
案例11:查询出属主为test01的文件
    find /root -user test01
案例12:查询属主被删除了的文件
    find /root -nouser
案例13:查询属组为test的文件 
    find /root -group test
案例14:查询属组被删除了的文件
    find /root -nogroup
案例15:查询两天以前修改过的文件
    find /root -mtime +2
案例16:查询两天以内创建的文件
    find /root -ctime -2
案例17:查询两天内访问过的文件
    find /root -atime -2
案例18:查询大于1M的文件
    find /root -size +1M 
案例19:查询小于1M的文件
    find /root -size -1M
案例20:查询在3天以内创建的文件,并删除
    find /root -ctime -3 -type f -exec rm -rf {} \;
    -exec    :处理查询之后的内容
    {}        :代表的是查询到的内容
    \;        :固定搭配
    find /root -ctime -3 -type f | xargs -I {} rm -rf {}
        知识储备:
            xargs    :将所有的内容格式化成 一行
            -I        :把内容放在{}

9、压缩包

1、gzip
    压缩软件,将文件做成一个压缩包,会删除原来的文件,生成一个新的压缩包文件。 
    格式:
        gizp 【文件路径】
    解压:
        gzip -d 【压缩包路径】
    缺陷:
        gzip不能压缩目录
2、bzip2
    压缩软件,将文件做成一个压缩包,会删除原来的文件,生成一个新的压缩包文件。 
    格式:
        bizp2 【文件路径】
    解压:
        bzip2 -d 【压缩包路径】
    缺陷:
        bzip2不能压缩目录
gzip 比 bzip2压缩率更大        
3、tar
    打包文件,不会删除原文件,也不会压缩文件:tar命令是可以跟gzip或者bzip2共同使用
    格式:
        tar 【参数】 压缩包名称
    参数:
        -f    :指定压缩包名称 
        -c    :打包文件 
        -z    :指定使用gzip压缩,一般使用gzip压缩的文件都以.tar.gz作为扩展名
        -j    :指定使用bzip2压缩,一般使用gzip压缩的文件都以.tar.bz2作为扩展名
        -v    :显示压缩包压缩的过程
        -x    :解压,不需要指定压缩包的类型,它会自动匹配压缩包的类型自行解压
        -P(大写)    :当压缩包中存在根目录时,自动移除根目录
        -t    :查看压缩包中的内容
        -C   :解压至
练习2:将/etc目录中的所有的普通文件压缩成/tmp/etc.tar.gz文件
    tar -czvPf /tmp/etc.tar.gz $(find /etc/ -type f | xargs)
    $()        :相当于数学当中的()
4、zip

10、管道符

用于传输数据的,可以将前一个命令的执行结果,交给管道之后的命令去处理
格式:
    |
案例1:删除/tmp目录下,一天以内创建的文件
    find /tmp/ -ctime -1 -type f | xargs -I {} rm -rf {}
案例2:将/etc中所有的普通文件复制到/tmp目录中
    find /etc -type f | xargs -I {} cp -r {} /tmp

11、进程管理

1、什么是进程,什么是线程
    1、什么是程序
        一般情况下,代码,安装包等全部都是应用程序。
    2、什么是进程
        应用程序运行起来的能够提供某种服务的实例。
  3、什么是线程
        进程中处理具体事务的东西
        一个进程中,至少有一个线程,可以有多个线程(多线程)
2、进程的三种状态
    就绪态:应用程序在等待cpu处理的时候
    阻塞态:当cpu运行完毕之后应用程序随即进入了阻塞态
    运行态:当cpu正在处理应用程序的时候
3、僵尸进程和孤儿进程
    1、僵尸进程
      1、是进程
      2、进程的生命周期已经结束
      3、进程依然占着pid不释放
    0-65535 
      pid的数量可以修改,
      一旦pid被使用完毕,则无法再启动其他进程
    2、孤儿进程
      1、孤儿进程的父进程已经结束了而子进程还在运行
      2、在没有父进程的情况下被操作系统进程(pid = 1    )进程接受

12、ps查看进程

ps是获取当系统进程的命令
参数:
    -a        :显示一个终端的所有程序
    -u        :选择有效的用户id或者是用户名
    -x        :显示没有控制终端的进程,同时显示各个命令的具体路径

    -aux    :一般情况下是一起使用,相同的参数组合还有一个 -ef参数
-ef和-aux之间的区别?
    -ef    :会打印出父级PID
    -aux:会打印出CPU、内存相关的使用

详解:
    [root@localhost opt]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.4  43696  4044 ?        Ss   Oct12   0:02                 /usr/lib/systemd/
        USER        :指的是运行当前进程的用户
        PID            :进程的编号
        %CPU        :cpu的占有率(指在单位时间之内占用cpu的时间比)
        %MEM        :内存的占有率
        VSZ            :应用程序向系统申请的内存(虚拟内存)
        RSS            :应用程序实际上使用的内存大小
        TTY            :应用程序正在使用的终端(?代表后台运行,也就是说不占用什么终端)
                    tty终端        :操作系统的终端
                    pts终端        :虚拟终端
        STAT        :进程的状态
                    R    :正在运行的状态(正在使用cpu)
                    S    :睡眠状态
                    D    :不可中断睡眠,即在睡眠的过程中不可以接收信号唤醒=》执行的io                         操作得不到硬件设备的响应
                    T    :停止的进程
                    Z    :僵尸进程
                    X    :死掉的进程(几乎看不见,因为死了就立刻回收了)
                    <    :标注了<小于号代表优先级比较高的进程
                    N    :代表了比较低的进程
                    s    :包含子进程
                    +    :表示在前台运行的进程(前台运行就是在命令行中运行)
                    l    :代表以线程的方式运行,即多线程
                    |    :管道符号代表多进程
                知识储备:
                    nice设置进程的优先级
                            -n         :设置具体的进程优先级
                            -20 ~ 20 :数字越大优先级越小
        START        :进程开始的时间
        TIME        :进程占用cpu的总时间
        COMMAND        :进程运行的命令

13、top命令

top    :实时查看进程的命令
1、基本参数
        默认情况下,top命令是3秒刷新一次
        -d    :指定刷新率
        -p    :查看指定进程的信息
        -u    :查看指定用户的进程
        -n    :查看指定top次数的信息
2、系统整体统计信息
    top - 11:35:39 up 1 day, 25 min,  3 users,  load average: 0.00, 0.01, 0.05
    Tasks:  91 total,   1 running,  90 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0             si,  0.0 st
    KiB Mem :   995676 total,   796276 free,   109180 used,    90220                 buff/cache
    KiB Swap:  1572860 total,  1572860 free,        0 used.   763052                 avail Mem 

        up                :启动
        down            :停止
        load average     :系统负载
        up                :左边的代表当前的时间
        up                :右边代表运行了多长时间
        load avearage:0.86.056.078        cpu1分钟,5分钟,15分钟平均负载
        us                :用户态进程占用cpu时间的百分比
        sys                :内核态进程占用cpu时间的百分比
        ni                :代表优先被调度的进程占cpu时间的百分比
        id cpu            :空闲的百分比
        wa cpu            :等待io的百分比
        hi                :硬件中断,处理硬件中断所占用cpu的时间
        si                :软件中断,处理软件中断所占用cou的时间
        st                :被偷走的cpu
3、进程信息
        VIRT:virtual memory usage 虚拟内存
            1.进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
            2.假如进程申请100m的内存,但实际只是用了10m,那么它会增长100m,而不是实际                  的使用量
        RES:resident memory usage 常驻内存
             1.进程当前使用的内存大小,但不包括swap out(当某进程向OS请求内存发现不足                  时,OS会把内存中暂时不用的数据交换出去,放在swap分区中,这个过程称为swap               out。当某种进程又需要这些数据且OS发现还有空闲物理内存时,又会把swpa分区                中的数据交换回物理内存中,这个过程成为swap in)
             2.包含其他进程的共享
             3.如果申请100m的内存,实际使用10m,他只增长10m,与VIRT相反
             4.关于库占用内存的情况,它只统计加载的库文件所占内存大小
        SHR: shared memory 共享内存
             1.除了自身进程的共享内存,也包括其他进程的共享内存
             2.虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
             3.计算某个进程所占的物理内存大小公式:RES - SHR
             4.swpa out后,它将会降下来,因为内存充裕了,大家就没必要合租内存了
        DATA: 
             1.数据占用的内存,如果top没有显示,按f键、然后用空格选中DATA项目】然后按q                  则可以显示出来
             2.真正的该程序要求的数据空间,是真正在运行中要使用的。
4、top运行中可以通过top的内部命令对进程的显示方式进行控制
        M    :按照内存的使用排序
        P    :按照cpu使用排序
        N    :以PID的大小排序
        R    :对排序进行反转
        f    :自定义显示字段
        1    :显示所有cpu的负载
        s    :改变画面更新频率
        1    :展开cpu详情
        m    :改变内存的显示样式

        h|?:帮助
        <    :向前
        >    :向后
        z    :彩色
5、进程信号
    1、什么是进程信号
            简而言之,操作系统告诉进程怎么做,做什么的一种沟通方式。
    2、kill命令
kill就是发送信号的命令
[root@localhost ~]# kill -l
1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1    64) SIGRTMAX    
    3、HUP信号
        id    :1
        完整的名字:SIGHUP
        作用:
            1、更新进程的配置
    4、INT、QUIT和TSTP      终止信号
        INT信号就是CTRL + c 停止进程
        QUIT信号就是ctrl + z 终止进程
        TSTP信号就是CTRL + \ 中断信号
    5、KILL和TERM        杀死进程
        KILL     :杀死信号(直接回收内存,强制剥离cpu)
        TERM    :终止信号(优雅的死)
    6、CONT和STOP        恢复和暂停
        CONT    恢复
        STOP    暂停
    知识储备:
        $$    :打印当前进程的PID
    kill -9 pid
    kill -s SLGKILL pid

14、查看网络的状态

[root@tianyun ~]# netstat -tnlp  # 查看正在监听的,且使用tcp协议的进程
        -t   tcp协议
        -u   udp协议
        -l   listen
        -p   PID/Program name
        -n   不反解,不将IP地址解析为主机名,不将端口号解析成协议名(80 ---> http)

15、定时任务

1、什么是定时任务
    类似于日常生活当中的闹钟:主要用于定时执行某些命令,达到定时处理数据的作用
2、定时任务的软件的种类
    1、Linux操作系统自带的软件:crontab
    2、第三方的定时任务软件:atd、anacron
    3、WEB定时任务:PPGo_Job
    4、基于etcd的定时任务系统
3、怎么加定时任务
  1、定时任务加在哪里
      1.定时任务的配置文件
        1.定时目录(需要执行的命令必须放在文件当中,同时也必须加上可执行权限)
          /etc/cron.hourly        :每小时执行一次
          /etc/cron.daily            :每天执行一次
          /etc/cron.weekly        :每周执行一次
          /etc/cron.monthly        :每月执行一次 
        2.定时任务的配置文件
              /etc/crontab
             3.定时任务编写文件
              crontab    -e        :编辑定时任务(用户可以省略,默认是当前用户)
              crontab -l        :查看定时任务的(之查看当前用户的定时任务)

    2、用户定时任务
      1.定时任务的格式
        分钟        小时        日期        月份        星期    (crontab表达式)
        user-name                   :指的是执行这个定时任务的用户
        command to be executeb      :运行的命令
        *     :代表每
        案例1:要求在每天凌晨三点四十五分执行一次
          45 3 * * * 
        案例2:要求在每天凌晨3点45分以/root用户执行/root/1.sh一次
              45 3 * * * root /root/1.sh
          2.定时任务保存的地方
              所有的用户定时任务都保存在:/var/spool/cron目录中,当用户增加定时任务时,会        在根目录中添加以自己名称命名的文件,并将定时任务存在其中。
    3、可能会出现的提示信息
      no crontab for oldboy02                :没有任何定时任务
      crontab: installing new crontab        :新增了一个定时任务
      Do you want to retry the same edit?    : 编辑的定时任务可能会出现错误
4、定时任务的日志
    当定时任务出现错误的时候,需要排查错误,就需要到定时任务日志文件中去查询错误的原因
    /var/log/cron    :可以查看到执行的定时任务
    /var/log/massage:记录系统操作的日志(例如:用户登录)
5、案例
          案例1:要求每分钟执行一次    
                * * * * * 
            案例2:要求每天的凌晨3点执行一次
                0 3 * * *
            案例3:要求每天上午7,9,12点各执行一次
                0 7,9,12 * * *  
            案例4:要求每个季度执行一次
                0 3 1 1,4,7,10 *     
            案例5:要求在每天上午的7点每隔2分钟执行一次(0分钟的时候不执行)
                */7     7 * * * 
                0-59    8    
            案例6:要求每个月的1号的星期一执行一次
                0 0 1 * 1 
            案例7:要求每天的8 - 11点每隔5分钟执行一次
                */5 8,9,10,11 * * *
                */5 8-11 * * *
            案例8:要求每天的21点到凌晨3点,每个5分钟执行一次
                */5 21-3 * * *
                */5 21-23,0-3 * * *
            案例9:要求每天上7点开始,每隔两分钟执行一次
                */2 7-23 * * *    
            案例10:要求每天上7点开始,每隔两小时的两分钟执行一次
                */2 7-23/2 * * *
            案例11:要求工作日(1,5)的7点和下午两点执行一次
                0 7,14 * * 1,2,3,4,5

16、系统优化

1、yum源优化

CentOS  base  epel 
自建yum仓库

使用一个较为稳定源(推荐使用华为源,清华大学源)
wget -O /etc/yum.repos.d/CentOS-Base.repo                             https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo


    [epel]
    name="huawei epel repo"
    baseurl=https://repo.huaweicloud.com/epel/7/x86_64/
    gpgcheck=0

2、系统主机名

1、hotnameectl
2、vim /etc/hostname

3、系统之间的域名解析

vim /etc/hosts
    ip  主机名

4、关闭防火墙和selinux

1、临时关闭
    setenforce 0
2、永久关闭
    vim /etc/selinux/config
3、关闭防火墙
    systemctl disable --now firewalld

5、配置ntp时间同步

1、安装ntp
    yum install ntpdate
2、同步时间
    ntpdata [时间服务器的地址]
        阿里云:ntp.aliyun.com

6、ulimit:设置系统开启的进程或者文件的句柄数

1、临时修改
    -n    :最大文件的句柄数
    -u    :最大进程数
2、永久修改,加大文件描述符与最大打开的进程数  
    1.    cat >>/etc/security/limits.conf<<EOF
        * soft nofile 102400
        * hard nofile 102400
        * soft nproc 102400
        * hard nproc 102400
        EOF
    2.    sysctl -p
    3.    reboot

import os
import time
from threading import Thread

print(os.getpid())

def task(n):
    with open('shanhe%s.txt' %n,mode='wt') as f1:
        time.sleep(1000)

if __name__ == "__main__":
    count=1
    while True:
        Thread(target=task,args=(count,)).start()
        count+=1
        time.sleep(3)

7、设置最大的PID数

    pid数在:/etc/proc/sys/kernel/pid_max
1、临时设置
     echo 4194303 > /proc/sys/kernel/pid_max
2、永久修改
    echo "kernel.pid_max= 4194303" >> /etc/sysctl.conf 
    sysctl -p

8、调整内核参数

cat >>/etc/sysctl.conf<<EOF
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000    65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
net.ipv4.ip_forward = 1                        #打开操作系统网络转发
EOF

9、networkManger

在CentOS系统上,目前有NetworkManager和network两种网络管理工具。如果两种都配置会引起冲突,而且NetworkManager在网络断开的时候,会清理路由,如果一些自定义的路由,没有加入到NetworkManager的配置文件中,路由就被清理掉,网络连接后需要自定义添加上去。
推荐使用:network
禁用networkmanger:systemctl disable --now networkmanger
重启网络:systemctl restart network

10、禁ping

禁止主机被ping:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

11、用户提权sudo

当普通用户临时使用root用户权限时使用
前提:这个用户必须在/etc/sudoers文件中添加权限
    [root@localhost ~]# vim /etc/sudoers
    oldboy01 ALL=(ALL) ALL

    [oldboy01@localhost tmp]$ sudo vim a.txt

12、字符处理

sort命令
    sort是排序的命令,默认使用第一个字符排序。
    -n    :依照数值的大小排序
        cat 1.txt | sort -n
    -r    :以相反的顺序来排序
        cat 1.txt | sort -n -r    
    -k    :以某列进行排序(默认的分割符是空格)
        cat 2.txt | sort -n -k2
    -t    :指定分割符,默认是以空格为分割符
        cat 2.txt | sort -n -k2 -t:
uniq命令(去重,默认情况下去重相邻的数据)
        cat 2.txt | sort -n | uniq
    -c    :在每列旁边显示该行重复出现的次数
        cat 2.txt | sort -n | uniq -c
    -d    :仅显示重复出现的行列
        cat 2.txt | sort -n | uniq -c -d
    -u    :仅显示出现一次的行列
        cat 2.txt | sort -n | uniq -c -u
cut命令(分割字符,默认使用空格分隔)
cut分割有局限性
    -d    :指定字段的分割符,默认的字段分割符为“TAB”
    -f    :显示指定字段的内容
        cut -d: -f1 3.txt 
tr命令(替换字符)
        cat 3.txt | tr "123" "abc"
    -d    :删除字符
        cat 3.txt | tr -d "123"
wc命令(统计字符)
    -c    :统计文件的Byles数
        cat 3.txt | wc -c
    -l    :统计文件的行数
        cat 3.txt | wc -l
    -w    :统计文件中单词的个数,默认以空白字符做为分割符
        cat 3.txt | wc -w

13、时间

案例1:要求打印当前时间 :2021-3-3 00:00:00
        [root@localhost ~]# date +"%Y-%m-%d %H:%M:%S"
        [root@localhost ~]# date +"%F %H:%M:%S"
案例2:设置本机的时间
        date -s ""
cp /usr/share/zoneinfo/America/New_York /etc/localtime