linux 高级篇 通篇学习

linux

linux高级篇

日志管理

  • 简介

    • 日志记录系统的各种活动
    • 记录系统的重大事件的工具
  • 保存位置

    • /var/log/

      image-20220709122054302

  • 常用的日志文件

    • /var/log/boot 系统启动日志

    • /var/log/message 内核消息及各种应用程序的公共日志信息,包括启动、I/O错误、 网络错误、

    • /var/log/cron Crond周期性计划任务产生的时间信息

    • /var/log/dmesg 弓|导过程中的各种时间信息

    • /var/log/ maillog 进入或发出系统的电子邮件活动

    • /var/log/lastlog 每个用户最近的登录事件

    • /var/log/secure 用户认证相关的安全事件信息

    • /var/log/wtmp 每个用户登录注销及系统启动和停机事件

    • /var/log/btmp 失败的、错误的登录尝试及验证事件

      表格形式

      preview

日志管理服务 rsyslogd

  • 查询linux 中的 rsyslogd 服务是否开启

    • ps aux | grep rsyslogd |grep -v grep

      [root@java log]# ps aux | grep rsyslogd |grep -v grep
      root       1256  0.0  0.2 222740  4296 ?        Ssl  08:50   0:01 /usr/sbin/rsyslogd -n
      
  • 查询 rsyslogd 服务的自启动状态

    • systemctl list-unit-files | grep rsyslog

      [root@java log]# systemctl list-unit-files | grep rsyslog
      rsyslog.service                               enabled 
      
      

配置文件 /etc/rsyslog.conf

  • 编辑文件时的格式为: /* ./* 存放日志文件 / :typora转义

    • 其中第一个[]代表日志类型,第二个[]代表日志级别

      • 日志的类型

        • auth pam产生的日志
        • authpriv ssh,ftp等登录信息的验证信息
        • corn 时间任务相关
        • kern 内核
        • lpr 打印
        • mail 右键
        • mark(syslog)-rsyslog 服务内部的信息,时间标识
        • news 新闻组
        • user 用户程序产生的相关信息
        • uucp unix to nuix copy主机之间相关的通信
        • local 1-7 自定义的日志设备
      • 日志的级别

        • debug 有调试信息的,日志通信最多
        • info 一般信息日志,最常用
        • notice 最具有重要性的普通条件的信息
        • warning 警告级别
        • err 错误级别,阻止某个功能或者模块不能正常工作的信息
        • crit 严重级别,阻止整个系统或者整个软件不能正常工作的信息
        • alert 需要立刻修改的信息
        • emerg 内核崩溃等重要的信息
        • none 什么都不记录

        注意: 从上到下,级别从低到高,记录信息越来越少

  • 查看

    #### RULES ####
    
    # Log all kernel messages to the console.
    # Logging much else clutters up the screen.
    #kern.*                                                 /dev/console
    
    # Log anything (except mail) of level info or higher.
    # Don't log private authentication messages!
    *.info;mail.none;authpriv.none;cron.none                /var/log/messages
    
    # The authpriv file has restricted access.
    authpriv.*                                              /var/log/secure
    
    # Log all the mail messages in one place.
    mail.*                                                  -/var/log/maillog
    
    
    # Log cron stuff
    cron.*                                                  /var/log/cron
    
    # Everybody gets emergency messages
    *.emerg                                                 :omusrmsg:*
    
    # Save news errors of level crit and higher in a special file.
    uucp,news.crit                                          /var/log/spooler
    
    # Save boot messages also to boot.log
    local7.*                                                /var/log/boot.log
    ...................
    
  • 日志文件的格式

    • 事件产生的时间

    • 产生事件的服务器的主机名

    • 产生事件的服务名或程序名

    • 事件的具体信息

      • 演示

        查看/var/log/secure日志 记录用户验证和授权方面的信息

        [root@java log]# more secure
        Jul  5 05:45:26 java01 polkitd[672]: Loading rules from directory /etc/polkit-1/rules.d
        Jul  5 05:45:26 java01 polkitd[672]: Loading rules from directory /usr/share/polkit-1/rules.d
        Jul  5 05:45:27 java01 polkitd[672]: Finished loading, compiling and executing 10 rules
        Jul  5 05:45:27 java01 polkitd[672]: Acquired the name org.freedesktop.PolicyKit1 on the system bus
        Jul  5 05:45:32 java01 sshd[1149]: Server listening on 0.0.0.0 port 22.
        Jul  5 05:45:32 java01 sshd[1149]: Server listening on :: port 22.
        
        

自定义日志服务 /var/log/zgw.log

  • 演示

    • 在/etc/rsyslog.conf 中添加一个日志文件/var/log/zgw.log

      当有事件发生时,该文件会接收到信息并保存,演示重启,登录的情况

      /etc/rsyslog.conf中
      #增加自定义的日志
      *.*                                                     /var/log/zgw.log
      
      [root@java ~]# vim /etc/rsyslog.conf
      [root@java ~]# > /var/log/zgw.log
      [root@java ~]# cat /var/log/zgw.log
      [root@java ~]# reboot
      Connection closing...Socket close.
      
      Connection closed by foreign host.
      
      Disconnected from remote host(192.168.200.130) at 13:01:56.
      
      Type `help' to learn how to use Xshell prompt.
      [C:\~]$ 
      
      Connecting to 192.168.200.130:22...
      Connection established.
      To escape to local shell, press 'Ctrl+Alt+]'.
      
      Last login: Sat Jul  9 12:58:44 2022 from gangwan-zhang
      [root@java ~]# cd /var/log
      [root@java log]# ls
      anaconda           btmp       firewalld           maillog     qemu-ga            spooler             vmware-network.1.log  vmware-network.7.log    vmware-vmtoolsd-root.log  Xorg.9.log
      audit              chrony     gdm                 messages    rhsm               sssd                vmware-network.2.log  vmware-network.8.log    vmware-vmusr-root.log     yum.log
      boot.log           cron       glusterfs           mysqld.log  sa                 swtpm               vmware-network.3.log  vmware-network.9.log    wpa_supplicant.log        zgw.log
      boot.log-20220707  cups       grubby_prune_debug  ntpstats    samba              tallylog            vmware-network.4.log  vmware-network.log      wtmp
      boot.log-20220708  dmesg      lastlog             pluto       secure             tuned               vmware-network.5.log  vmware-vgauthsvc.log.0  Xorg.0.log
      boot.log-20220709  dmesg.old  libvirt             ppp         speech-dispatcher  vmware-install.log  vmware-network.6.log  vmware-vmsvc-root.log   Xorg.0.log.old
      [root@java log]# cat zgw.log | grep sshd
      Jul  9 13:02:25 java sshd[1218]: Server listening on 0.0.0.0 port 22.
      Jul  9 13:02:25 java sshd[1218]: Server listening on :: port 22.
      Jul  9 13:02:52 java sshd[2138]: Accepted password for root from 192.168.200.1 port 57108 ssh2
      Jul  9 13:02:52 java sshd[2138]: pam_unix(sshd:session): session opened for user root by (uid=0)
      [root@java log]# rm -rf /var/log/zgw.log
      
      
      
      

日志轮替 logrotate

  • 简介

    • 把旧的日志文件移动并改名,同时建立新的日志文件,当就日志文件超出保存的范围之后,就会进行删除
  • 日志轮替文件命名

    • centos使用logrotate
      • /etc/logrotate.conf配置文件 "dateext"参数
  • logrotate 配置文件介绍

    • /etc/logrotate.conf 为logrotate的全局配置文件

    • /etc/logrotate.d 单独配置日志文件

      # see "man logrotate" for details
      # rotate log files weekly    每周对日志文件进行一次轮替
      weekly
      
      # keep 4 weeks worth of backlogs  共保存4分,当建立新的日志文件是,就的日志文件被删除
      rotate 4
      
      # create new (empty) log files after rotating old ones  创建新的空白日志文件,在日志轮替后
      create
      
      # use date as a suffix of the rotated file  使用日期作为日志轮替的后缀
      dateext
      
      # uncomment this if you want your log files compressed  日志文件是否压缩 如果取消注释,之日志会在转储同时压缩
      #compress
      
      # RPM packages drop log rotation information into this directory
      include /etc/logrotate.d   //可以单独把某个日志文件写到这个文件中
      
      # no packages own wtmp and btmp -- we'll rotate them here
      /var/log/wtmp {
          monthly 每月
          create 0664 root utmp
              minsize 1M
          rotate 1
      }
      
      /var/log/btmp {
          missingok
          monthly
          create 0600 root utmp
          rotate 1 仅仅保留一个日志备份
      }
      
      # system-specific logs may be also be configured here.
      
      
  • logrotate 配置文件

    • 参数的说明

      参数 参数说明
      daily 日志的轮替周期是每天
      weekly 日志的轮替周期是每周
      monthly 日志的轮替周期是每月
      rotate 数字 保留的日志文件的个数, 0指没备份
      compress 日志轮替是,旧的日志进行压缩
      create mode owner gruop 建立新日志,同时指定新日志的权限与所有者和所属组
      mail adress 当日志轮替时,输出内容通过右键发送到指定的右键地址
      rotate 如果日志不存在,则忽略该日志的警告信息
      compress 如果日志为空文件,则不进行日志轮替
      minsize 大小 日志轮替的最小值,日志一定到到最小值才会轮替
      size 大小 日志只有大于指定大小才进行日志轮替,而不是按照时间
      dateext 使用日期作为日志轮替的后缀
      sharedscripts 在此关键字之后的脚本只执行一次
      prerotate/endscript 在日志轮替之前执行的脚本命令
      posrotate/endscript 在日志轮替之后执行的脚本
  • 演示

    • 把自己的日志加入到日志轮替中

      • 第一种方式
        • 直接在/etc/logrotate.conf 配置文件中写入该日志的轮替策略
      • 第二种方式
        • 在/etc/logrotate.d/目录中新建立该日志轮替文件,写策略(被include写入主配置文件)
    • 推荐使用第二种方式

      /etc/logrotate.d/目录

      image-20220709153227958
  • 日志轮替机制原理

    • 日志轮替之所以可以咋指定的时间备份日志,是依赖系统的定时任务,在/etc/cron.daily目录

      就会发现自儿个目录中是有logrotate文件(可执行),logrotate通过这个文件依赖定时任务执行

查看内存日志 journalctl

  • 写到内存中的日志 journal 日志

    • 系统重启会清空
  • 查看内存的指令

    指令 说明
    journalctl 查看全部
    journalctl -n 3 查看最新3条
    journalctl --since 19:00 --until 19:10:10 查看起始时间到结束时间的日志可加日期
    journalctl -p err 报错日志
    journalctl -o verbose 日志详细内容
    journalctl_PID=1234 _COMN=sshd
    或者 journalctl | grep sshd
    查看包含这些参数的日志
  • 演示

    • journalctl | grep sshd

      image-20220709155226336

定制自己的linux系统

  • 简介

    • 通过剪裁现有的linux系统,创建自己的min linux系统
  • linux 的简单启动流程

    • 1,自检,硬件有没有故障
    • 2,如果有多个启动盘,在BIOS中选择启动磁盘
    • 3,启动MBR中的bootloader 引导程序
    • 4,加载内核文件
    • 5,执行所有进程的父进程
    • 6,欢迎界面
  • 在linux 启动流程中的关键文件

    • kernel 内核文件
    • initrd 文件
  • 开始定制

    • 第一步

      • 增加20G的硬盘
        • 将虚拟磁盘存储为单个文件
        • 重启系统
    • 第二步

      • 分区与格式化

        • lsblk 查看硬盘

        • fdisk /dev/sdb 格式化

          [root@java ~]# fdisk /dev/sdb
          欢迎使用 fdisk (util-linux 2.23.2)。
          
          更改将停留在内存中,直到您决定将更改写入磁盘。
          使用写入命令前请三思。
          
          Device does not contain a recognized partition table
          使用磁盘标识符 0xd777d998 创建新的 DOS 磁盘标签。
          命令(输入 m 获取帮助):n
          Partition type:
             p   primary (0 primary, 0 extended, 4 free)
             e   extended
          Select (default p): 
          Using default response p
          分区号 (1-4,默认 1):
          起始 扇区 (2048-41943039,默认为 2048):
          将使用默认值 2048
          Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+500M
          分区 1 已设置为 Linux 类型,大小设为 500 MiB
          
          命令(输入 m 获取帮助):n
          Partition type:
             p   primary (1 primary, 0 extended, 3 free)
             e   extended
          Select (default p): 
          Using default response p
          分区号 (2-4,默认 2):
          起始 扇区 (1026048-41943039,默认为 1026048):
          将使用默认值 1026048
          Last 扇区, +扇区 or +size{K,M,G} (1026048-41943039,默认为 41943039):
          将使用默认值 41943039
          分区 2 已设置为 Linux 类型,大小设为 19.5 GiB
          
          命令(输入 m 获取帮助):W
          The partition table has been altered!
          
          Calling ioctl() to re-read partition table.
          正在同步磁盘。
          [root@java ~]# lsblk
          NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
          sda      8:0    0   20G  0 disk 
          ├─sda1   8:1    0    1G  0 part /boot
          ├─sda2   8:2    0   17G  0 part /
          └─sda3   8:3    0    2G  0 part [SWAP]
          sdb      8:16   0   20G  0 disk 
          ├─sdb1   8:17   0  500M  0 part 
          └─sdb2   8:18   0 19.5G  0 part 
          sr0     11:0    1  4.4G  0 rom  /run/media/root/CentOS 7 x86_64
          [root@java ~]# mkfs.ext4 /dev/sdb1
          mke2fs 1.42.9 (28-Dec-2013)
          文件系统标签=
          OS type: Linux
          块大小=1024 (log=0)
          分块大小=1024 (log=0)
          Stride=0 blocks, Stripe width=0 blocks
          128016 inodes, 512000 blocks
          25600 blocks (5.00%) reserved for the super user
          第一个数据块=1
          Maximum filesystem blocks=34078720
          63 block groups
          8192 blocks per group, 8192 fragments per group
          2032 inodes per group
          Superblock backups stored on blocks: 
          	8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
          
          Allocating group tables: 完成                            
          正在写入inode表: 完成                            
          Creating journal (8192 blocks): 完成
          Writing superblocks and filesystem accounting information: 完成 
          
          [root@java ~]# mkfs.ext4 /dev/sdb2
          mke2fs 1.42.9 (28-Dec-2013)
          文件系统标签=
          OS type: Linux
          块大小=4096 (log=2)
          分块大小=4096 (log=2)
          Stride=0 blocks, Stripe width=0 blocks
          1281120 inodes, 5114624 blocks
          255731 blocks (5.00%) reserved for the super user
          第一个数据块=0
          Maximum filesystem blocks=2153775104
          157 block groups
          32768 blocks per group, 32768 fragments per group
          8160 inodes per group
          Superblock backups stored on blocks: 
          	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
          	4096000
          
          Allocating group tables: 完成                            
          正在写入inode表: 完成                            
          Creating journal (32768 blocks): 完成
          Writing superblocks and filesystem accounting information: 完成 
          
    • 第三步

      • 挂载

        [root@java ~]# mkdir -p /mnt/boot /mnt/sysroot
        [root@java ~]# mount /dev/sdb1 /mnt/boot
        [root@java ~]# mount /dev/sdb2 /mnt/sysroot
        
        
    • 第四步

      • 安装grub2,内核文件拷贝到目标磁盘

        [root@java ~]# grub2-install --root-directory=/mnt /dev/sdb
        Installing for i386-pc platform.
        Installation finished. No error reported
        #开始拷贝
        [root@java ~]# rm -rf /mnt/boot/*
        [root@java ~]# cp -rf /boot/* /mnt/boot/
        
        
    • 第五步

      • 修改grub2/grub.cfg 文件

        [root@java ~]# cd /mnt/boot
        [root@java boot]# ls
        config-3.10.0-1160.el7.x86_64
        efi
        grub
        grub2
        initramfs-0-rescue-0ff1fe8d6a1346beb1915e59a0579bc2.img
        initramfs-3.10.0-1160.el7.x86_64.img
        initramfs-3.10.0-1160.el7.x86_64kdump.img
        lost+found
        symvers-3.10.0-1160.el7.x86_64.gz
        System.map-3.10.0-1160.el7.x86_64
        vmlinuz-0-rescue-0ff1fe8d6a1346beb1915e59a0579bc2
        vmlinuz-3.10.0-1160.el7.x86_64
        [root@java boot]# pwd
        /mnt/boot
        [root@java boot]# cd grub2
        [root@java grub2]# ls
        device.map  fonts  grub.cfg  grubenv  i386-pc  locale
        [root@java grub2]# vim grub.cfg
        
        

        修改 6处

        ​ 添加 selinux=0 init=/bin/bash

        if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' a635dd11-bd62-4765-94cd-d0a1bbac2dc2  #此处修改UUID
                else
                  search --no-floppy --fs-uuid --set=root a635dd11-bd62-4765-94cd-d0a1bbac2dc2 #此处修改UUID
                fi
                linux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=UUID=4e6650cf-aeee-4fd1-8fe6-252f74ccd55a ro crashkernel=auto rhgb quiet LANG=zh_CN.UTF-8 selinux=0 init=/bin/bash  #此处修改UUID 添加最后一句话
                initrd16 /initramfs-3.10.0-1160.el7.x86_64.img
        }
        
        
        
        if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  a635dd11-bd62-4765-94cd-d0a1bbac2dc2 #此处修改UUID
                else
                  search --no-floppy --fs-uuid --set=root a635dd11-bd62-4765-94cd-d0a1bbac2dc2 #此处修改UUID
                fi
                linux16 /vmlinuz-0-rescue-0ff1fe8d6a1346beb1915e59a0579bc2 root=UUID=4e6650cf-aeee-4fd1-8fe6-252f74ccd55a ro crashkernel=auto rhgb quiet selinux=0 init=/bin/bash #此处修改UUID 添加最后一句话
                
        
        
    • 第六步

      • 创建目标文件的根文件系统

        [root@java mnt]# mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,srv,mnt,media,home,root}
        mkdir: 已创建目录 "/mnt/sysroot/etc"
        mkdir: 已创建目录 "/mnt/sysroot/etc/rc.d"
        mkdir: 已创建目录 "/mnt/sysroot/usr"
        mkdir: 已创建目录 "/mnt/sysroot/var"
        mkdir: 已创建目录 "/mnt/sysroot/proc"
        mkdir: 已创建目录 "/mnt/sysroot/sys"
        mkdir: 已创建目录 "/mnt/sysroot/dev"
        mkdir: 已创建目录 "/mnt/sysroot/lib"
        mkdir: 已创建目录 "/mnt/sysroot/lib64"
        mkdir: 已创建目录 "/mnt/sysroot/bin"
        mkdir: 已创建目录 "/mnt/sysroot/sbin"
        mkdir: 已创建目录 "/mnt/sysroot/boot"
        mkdir: 已创建目录 "/mnt/sysroot/srv"
        mkdir: 已创建目录 "/mnt/sysroot/mnt"
        mkdir: 已创建目录 "/mnt/sysroot/media"
        mkdir: 已创建目录 "/mnt/sysroot/home"
        mkdir: 已创建目录 "/mnt/sysroot/root"
        
        
        
    • 第七步

      • 拷贝需要的bash和库文件

        [root@java mnt]# cp /lib64/*.* /mnt/sysroot/lib64/
        cp: 略过目录"/lib64/db4.7.25"
        cp: 略过目录"/lib64/dleyna-1.0"
        cp: 略过目录"/lib64/farstream-0.1"
        cp: 略过目录"/lib64/farstream-0.2"
        cp: 略过目录"/lib64/gdk-pixbuf-2.0"
        cp: 略过目录"/lib64/girepository-1.0"
        cp: 略过目录"/lib64/gnome-settings-daemon-3.0"
        cp: 略过目录"/lib64/goa-1.0"
        cp: 略过目录"/lib64/grilo-0.3"
        cp: 略过目录"/lib64/gstreamer-0.10"
        cp: 略过目录"/lib64/gstreamer-1.0"
        cp: 略过目录"/lib64/gtk-2.0"
        cp: 略过目录"/lib64/gtk-3.0"
        cp: 略过目录"/lib64/libcanberra-0.30"
        cp: 略过目录"/lib64/libpeas-1.0"
        cp: 略过目录"/lib64/mission-control-plugins.0"
        cp: 略过目录"/lib64/pulse-10.0"
        cp: 略过目录"/lib64/python2.7"
        cp: 略过目录"/lib64/tracker-1.0"
        cp: 略过目录"/lib64/vte-2.91"
        cp: 略过目录"/lib64/webkit2gtk-4.0"
        
        [root@java mnt]# cp /bin/bash /mnt/sysroot/bin/
        
        
    • 第八步

      • 创建新的虚拟机,将默认分配的硬盘,移除掉,执行创建的硬盘

        image-20220709171640549

阅读linux内核和源码

  • 加深对liunx的理解
  • 阅读linux内核的源码需要C语言
  • 一般的操作系统
    • 进程管理
    • 内存管理
    • 文件系统
    • 驱动程序
    • 网络
  • 查看目录
目录 说明
drwxr-xr-x. 2 root root 4096 7月 9 17:49 boot 系统引导相关的代码
drwxr-xr-x. 2 root root 4096 7月 9 17:49 fs 存放linux支持的文件系统代码
drwxr-xr-x. 5 root root 4096 7月 9 17:50 include 存放linux核心需要的头文件
drwxr-xr-x. 2 root root 4096 7月 9 17:50 init
drwxr-xr-x. 5 root root 4096 7月 9 17:50 kernel 内核相关的代码
drwxr-xr-x. 2 root root 4096 7月 9 17:50 lib 库文件
-rw-r--r--. 1 root root 8789 7月 9 17:50 Makefile
drwxr-xr-x. 2 root root 4096 7月 9 17:50 mm 内存管理的代码
drwxr-xr-x. 2 root root 4096 7月 9 17:50 tools

liunx内核升级

  • 检测内核版本
    • yum info kernel -q
  • 查看当前内核的版本
    • uname -a
  • 升级内核
    • yum update kernel
  • 查看已经安装的内核
    • yum list kernel -q

linux备份与恢复

备份 dump

  • 第一种方式

    • 把需要的文件用TAR打包,下次需要恢复的时候,再解压覆盖即可
  • 第二种方式

    • 使用dump和restore指令
  • 如果linux上没有dump 和 restore 需要

    • 查看是否有
      • dump
      • restore
    • 安装
      • yum -y install dump
      • yum -y install dump
  • dump支持分卷和增量备份(差异备份)

    • 语法

      • dump -cu -123456789 -f<备份后文件名> -T<日期> 目录或文件系统

        目录只能使用0层级

    • 选项

      选项 说明
      -c 创建新的归档文件,
      -0123456789 备份的层级 0为最完整的备份
      -f<备份后文件名> 指定备份后的文件名
      -T<日期> 指定开始备份的时间和日期
      -j 调用bzlib库压缩备份文件,压缩文件成bz2的格式
      -u 在/etc/dumpdares中记录备份的文件系统,层级,时间和日期等
      -t 指定文件名
      -W 显示需要备份的文件以及租后一次备份的层级,时间,日期
      -w 仅是显示需要备份的文件
  • 演示

    • 将/boot 分区备份到/opt/boot.bak.bz2文件中,层级为0

      dump -0uj -f /opt/boot.bak1.bz2 /boot
      
    • 在/boot目录下增加新的文件,层级为1(只备份上次层级0备份后,新增加的文件)

      dump -1uj -f /opt/boot.bak2.bz2 /boot
      
      • dump结合contab可以实现无人值守备份
    • 显示备份的文件和最后一次备份的层级 ,事件,日期

      dump -W
      
    • 查看备份时间文件

      cat /etc/dumpdates
      
  • 做好备份到其他的服务器中

恢复 restore

  • 可以从dump生成的备份文件中恢复源文件

    • 在所在的目录中恢复
  • 语法

    • restore 模式选项 选项
  • 模式

    模式 说明
    -C 对比模式,将备份文件和已经存在文件对比
    -i 交互模式,还原操作是,询问用户
    -r 进入还原模式
    -t 查看模式
  • 选项

    -f<备份设备> 从指定的文件中读取备份数据,进行还原操作
  • 演示

    • 比较模式 最新的文件和备份文件

      restore -C -f boot.bak1.bz2
      
    • 查看模式

      restore -t -f boot.bak1.bz2
      

liunx可视化管理

webmin和bt运维工具

  • Webmin是功能强大的基于Web的Unix/linux系统管理工具

  • 下载网址

  • 文件上传

  • 解压 rpm 文件

    • rpm -ivh webmin-1.996-1.noarch.rpm --force --nodeps
  • 重置密码

    [root@java webmin]# /usr/libexec/webmin/changepass.pl /etc/webmin root test
    Password for Webmin user root updated successfully
    
    
  • 修改webmin端口 出于安全考虑

    vim /etc/webmin/miniserv.conf
    将port=10000修改为其他端口 如 10001
    
    port=10001
    root=/usr/libexec/webmin
    mimetypes=/usr/libexec/webmin/mime.types
    addtype_cgi=internal/cgi
    realm=Webmin Server
    logfile=/var/webmin/miniserv.log
    errorlog=/var/webmin/miniserv.error
    pidfile=/var/webmin/miniserv.pid
    logtime=168
    ssl=0
    no_ssl2=1
    no_ssl3=1
    no_tls1=1
    no_tls1_1=1
    ssl_honorcipherorder=1
    no_sslcompression=1
    env_WEBMIN_CONFIG=/etc/webmin
    env_WEBMIN_VAR=/var/webmin
    atboot=1
    logout=/etc/webmin/logout-flag
    listen=10001
    
    
  • 重启

    • /etc/webmin/restart 重启
    • /etc/webmin/start 启动
    • /etc/webmin/stop 停止
  • 防火墙开放端口

    #开放端口
    [root@java webmin]# firewall-cmd --zone=public --add-port=10001/tcp --permanent   
    success
    #更新防火墙
    [root@java webmin]# firewall-cmd --reload
    success
    #查看端口号
    [root@java webmin]# firewall-cmd --zone=public --list-ports
    8080/tcp  10001/tcp
    
    
    
  • 登录webmin

webmin的使用

  • 修改语言设置

    image-20220709193936147
  • ip访问控制

  • 查看进程

  • 修改密码

  • 任务调度

  • mysql

bt宝塔

  • 简介

    • bt宝塔linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP

      /集群/监控/网站/FTP/数据库/JAVA等多项服务器管理功能

  • 安装和使用

    yum install -y wget && -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
    
  • 安装成功后控制台会显示登录地址,账户密码,复制浏览器打开

    • 17210是端口
    Complete!
    success
    ==================================================================
    Congratulations! Installed successfully!
    ==================================================================
    外网面板地址: http://183.136.231.49:17210/219ef26e
    内网面板地址: http://192.168.200.130:17210/219ef26e
    username: zrd0h0nx
    password: 72e5c8ba
    If you cannot access the panel,
    release the following panel port [17210] in the security group
    若无法访问面板,请检查防火墙/安全组是否有放行面板[17210]端口
    ==================================================================
    Time consumed: 3 Minute!
    
    
    

bt的使用

  • 登录终端

  • 配置

  • 快捷安装运行环境

  • 快捷安装系统工具

  • 添加任务计划脚本

  • 登录bt

  • 注册的手机号和密码

    手机号 密码
    13665136722 72e5c8baA

Linux面试题

  • 分析日志,将ip地址截取,并t排序

    htp://192.168.200.130/index,html

    cat t.txt | cut -d '/' -f 3 |sort |uniq -c|sort -nr
    

Linux 我亦无他 唯手熟尔

posted @ 2022-11-24 11:33  zhanggw1  阅读(114)  评论(0)    收藏  举报