Linux基础2.2

1.统计日志,日志内容 39.96.187.239 - - [11/Nov/2019:10:08:01 +0800] "GET / HTTP/1.1" 302 0 "-" "Zabbix" 211.162.238.91 - - [11/Nov/2019:10:08:02 +0800] "GET /api/v1/course_sub/category/list/?belong=1 HTTP/1.1" 200 363 "https://www.luffycity.com/free" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" 211.162.238.91 - - [11/Nov/2019:10:08:02 +0800] "GET /api/v1/degree_course/ HTTP/1.1" 200 370 "https://www.luffycity.com/free" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" 统计日志的访客ip数量 查看访问最频繁的前10个ip

[root@01 ~]# awk '{print $1}' 500access.log |uniq -c | sort -rn | head -10

2.查看linux的定时任务列表

[root@01 ~]# crontab -l
#*/3 * * * * /usr/bin/echo 'i am root' >> /tmp/tang.txt  2>&1

3.每晚0点整,把站点目录/var/www/html下的内容打包备份到/data目录下

[root@01 ~]# cat back_html.sh 
#! /bin/bash
tar -zcf /data/back_html.tar.gz /var/www/html/*

[root@01 ~]# crontab -l
0 0 * * * /usr/bin/sh /root/back_html.sh >> /dev/null 2>&1

4.每5分钟让服务器进行时间同步

[root@01 ~]# crontab -l
#*/3 * * * * /usr/bin/echo 'i am root' >> /tmp/tang.txt  2>&1
#0 0 * * * /usr/bin/sh /root/back_html.sh >> /dev/null 2>&1
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >> /dev/null 2>&1

5.在每天的10:31开始,每隔2小时重复一次

31 10 * * * /usr/sbin/ntpdate ntp1.aliyun.com >> /dev/null 2>&1

6.每周六凌晨4:00执行

0 4 * * 6 /usr/sbin/ntpdate ntp1.aliyun.com >> /dev/null 2>&1

7.linux对磁盘分区格式化的命令

[root@01 ~]# mkfs.xfs /dev/sdc5 # 格式化成xfs类型的文件系统

[root@01 ~]# mkswap /dev/sdc5 # 格式化成swap类型

8.解释inode与block的含义

inode
     中文名叫索引节点,是存放文件的元信息(文件创建者,日期,大小等,可以通过stat
查看)和文件的实体指针(指向block的位置,这也是inode和block的关系)的区域。
inode 的大小一般为128-256字节,inode节点总数在格式化时就决定了

block
     block就是存放实际文件数据的单元,单个文件占多个block存储,通过inode寻找block
一个block最少4K,也就意味着你创建一个文件至少需要一个block也就是4k

9.格式化分区/dev/sdc1为xfs文件系统(提示:注意格式化分区文件系统前,检查好当前分区是否在用,是否重要,明确后再自己本地虚拟机实验)

mkfs.xfs /dev/sdc1 

10.简述buffers和cache含义及作用

cache
        缓存,cached是给读取数据时加速的
cached是指把读取出来的数据保存在内存中,再次读取,不用读取硬盘而直接从内存中读取,
加速数据读取过程。

buffers
        缓冲
buffers是指写入数据时,把分散的写入操作保存到内存,达到一定程度集中写入硬盘,减少
磁盘碎片,以及反复的寻道时间,加速数据写入。

11.简述raid不同级别的区别

# 部署软raid:http://book.luffycity.com/linux-book/Linux%E7%A3%81%E7%9B%98%E7%AE%A1%E7%90%86%E4%B8%8E%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F/RAID%E6%8A%80%E6%9C%AF.html#%E9%83%A8%E7%BD%B2raid-10

raid 0:
    将两个或以上相同型号,容量的磁盘组合,磁盘阵列的总容量便是多个硬盘的总和,
数据依次写入物理硬盘,理想状态下,硬盘读写性能翻倍,但是任意一块磁盘损坏会导致,
所有数据丢失。raid 0适用于对数据安全性不太关注,追求性能的场景。
raid 1:
    是将两块硬盘以上硬盘绑定,数据写入时,同时写入多个硬盘,因此即使有硬盘故障,
也有数据备份。raid 1的利用率很低,冗余性高。
raid 3:
    通过异或运算:数字相同则为0,数字不同则为1。只要存储异或结果的磁盘不坏,其他
任意坏一块磁盘都可以通过异或运算反推恢复数据,最少三块磁盘,同样浪费一块磁盘。
存放异或运算的磁盘不能损坏。
raid 5:
    需要四块硬盘,也是通过异或运算,但是异或运算的结果是会均匀的放在每一块硬盘上,
如disk 1存放disk 2,3,4的结果,这样任意一块磁盘损坏都能恢复数据了,提高的容错率,
但是也仅仅是只能挂掉一块硬盘。
raid 10:
    raid 10 其实是raid 0 加上raid 1,吸收了raid 0的效率,raid 1的安全性,因此需要四块
硬盘搭建raid 10。
1. 通过raid 1两两镜像复制,保证数据安全性。
2. 针对两个raid 1部署raid 0,进一步提升磁盘读写速度。
3. 只要坏的不是同一组中所有硬盘,那么就算坏掉一半硬盘都不会丢失数据。

12.简述lvm创建流程

LVM相关命令参数:

1. pv
    pvcreate :     创建物理卷
    pvscan:        查看物理卷信息
    pvremove:    删除物理卷
    pvdisplay:     查看各个物理卷的详细参数

2. vg
    vgcreate:      创建卷组
    vgscan:        查看卷组信息
    vgdisplay:     查看卷组的详细参数
    vgreduce:     缩小卷组,把物理卷从卷组中删除
    vgextend:     扩张卷组,把某个物理卷加入卷组
    vgremove:    删除卷组
3. lv
    lvcreate:            创建逻辑卷
    lvscan:              查看逻辑卷信息
    lvdisplay:           查看逻辑卷详细参数
    lvreduce:            缩小逻辑卷大小(xfs不能缩小只能增大)
    lvextend:            增大逻辑卷大小
    lvremove:            删除逻辑卷
1. 物理分区阶段:将物理磁盘 fdisk 格式化修改Sytem ID 为LVM标记(8e)
2. PV 阶段:通过pvcreate,pvdisplay 将 Linux 分区处理为物理卷PV
3. VG 阶段:接下来通过 vgcreate, vgdisplay 将创建好的物理卷PV处理为VG
4. LV 阶段:通过lvcreate将卷组分成若干个逻辑卷LV。
5. 开始使用:通过mkfs对LV格式化,最后挂载LV使用。

[root@01 ~]# pvcreate /dev/sdd /dev/sde 
WARNING: xfs signature detected on /dev/sde at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/sde.
  Physical volume "/dev/sdd" successfully created.
  Physical volume "/dev/sde" successfully created.

[root@01 ~]# vgcreate storage /dev/sdd /dev/sde 
  Volume group "storage" successfully created

[root@01 ~]# lvcreate -n lv1 -L 200M storage
  Logical volume "lv1" created.

[root@01 ~]# mkfs.xfs /dev/storage/lv1 
meta-data=/dev/storage/lv1       isize=512    agcount=4, agsize=12800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=51200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@01 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 476M     0  476M   0% /dev
tmpfs                    487M     0  487M   0% /dev/shm
tmpfs                    487M   14M  473M   3% /run
tmpfs                    487M     0  487M   0% /sys/fs/cgroup
/dev/sda3                 20G  2.2G   17G  12% /
/dev/sda1                197M  110M   88M  56% /boot
tmpfs                     98M     0   98M   0% /run/user/0
/dev/mapper/storage-lv1  197M   11M  187M   6% /mnt

13.简述lvm动态扩容流程

[root@01 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 476M     0  476M   0% /dev
tmpfs                    487M     0  487M   0% /dev/shm
tmpfs                    487M   14M  473M   3% /run
tmpfs                    487M     0  487M   0% /sys/fs/cgroup
/dev/sda3                 20G  2.2G   17G  12% /
/dev/sda1                197M  110M   88M  56% /boot
tmpfs                     98M     0   98M   0% /run/user/0
/dev/mapper/storage-lv1  197M   11M  187M   6% /mnt

[root@01 ~]# pvcreate /dev/sdf 
  Physical volume "/dev/sdf" successfully created.

[root@01 ~]# vgextend storage /dev/sdf 
  Volume group "storage" successfully extended

[root@01 ~]# lvextend /dev/storage/lv1 -L 500M 
  Size of logical volume storage/lv1 changed from 200.00 MiB (50 extents) to 500.00 MiB (125 extents).
  Logical volume storage/lv1 successfully resized.

[root@01 ~]# xfs_growfs /dev/storage/lv1 
meta-data=/dev/mapper/storage-lv1 isize=512    agcount=4, agsize=12800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=51200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 51200 to 128000
[root@01 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 476M     0  476M   0% /dev
tmpfs                    487M     0  487M   0% /dev/shm
tmpfs                    487M   14M  473M   3% /run
tmpfs                    487M     0  487M   0% /sys/fs/cgroup
/dev/sda3                 20G  2.2G   17G  12% /
/dev/sda1                197M  110M   88M  56% /boot
tmpfs                     98M     0   98M   0% /run/user/0
/dev/mapper/storage-lv1  497M   11M  487M   3% /mnt

14.如何配置yum源,能够下载诸多第三方软件?

 # 首先设置yum配置文件

/etc/yum.conf  #为所有仓库提供公共配置

[root@chaogelinux yum.repos.d]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0                                    #本地缓存是否保留,0否,1是
debuglevel=2                                #调试日志级别
logfile=/var/log/yum.log        #日志路径
exactarch=1                                    #精确系统平台版本匹配
obsoletes=1            
gpgcheck=1                                    #检查软件包的合法性
plugins=1                
installonly_limit=5                    #同时安装几个工具包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release        


#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

#请放置你的仓库在这里,并且命名为*.repo类型
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

  

/etc/yum.repos.d/*.repo #提供仓库的地址文件

CentOS-Base.repo
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com        #仓库文件的说明
failovermethod=priority    #存在多个url的时候,按顺序来连接,如果是roundrobin,意为随机挑选
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/    #指定仓库的网站地址
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1    #是否检测秘钥
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7      #公钥文件存放路径

#released updates  指定rpm包需要升级的地址,此处可以去网页上寻找对应的包
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7


epel.conf
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
failovermethod=priority
enabled=1        #是否启用此仓库
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

  

1.备份现有repo仓库
2.下载新的repo文件
CentOS 6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3.清空旧yum缓存,生成新的缓存
yum clean all
yum makecache

4.针对阿里云镜像,可能出现无法解析地址的异常
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

5.配置epel源
epel(RHEL 7)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
epel(RHEL 6)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
epel(RHEL 5)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-5.repo

  https://developer.aliyun.com/mirror/

15.简述源代码编译安装nginx的步骤

#前提条件:准备好开发工具以及开发环境
开发工具:gcc make等
开发组件:
yum groupinstall "Development Tools"
yum groupinstall "Server Platform Development"

1.准备编译环境
yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel 
openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel 
db4-devel libpcap-devel xz-devel openssl openssl-devel -y

2.获取nginx源代码
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz

3.解压缩nginx源代码
tar -zxvf nginx-1.12.0.tar.gz

4.进入源码目录
cd nginx-1.12.0

5.开始编译三部曲
./configure --prefix=/opt/nginx112/  --with-http_ssl_module --with-http_stub_status_module 

6.执行make指令,调用gcc等编译工具
make

7.开始安装
make install

8.安装后启动nginx软件,找到二进制程序,以绝对路径执行
/opt/ngx112/sbin/nginx

9.检查环境变量,需要手动配置nginx的PATH路径,否则必须绝对路径才能找到
编辑文件/etc/profile.d/nginx.sh
写入export PATH=/opt/ngx112/sbin:$PATH

10.退出回话,重新登录机器
logout

11.检查环境变量
[root@chaogelinux ngx112]# cat /etc/profile.d/nginx.sh
export PATH=/opt/ngx112/sbin:$PATH

12.启动nginx,可以访问页面

  

16.linux有哪些系统资源监控的命令?

http://book.luffycity.com/linux-book/Linux%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86/Linux%E8%BF%9B%E7%A8%8B.html#top%E5%91%BD%E4%BB%A4

# top 命令

前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。
其内容如下:


01:06:48                        当前时间
up 1:22                            系统运行时间,格式为时:分
1 user                            当前登录用户数
load average: 0.06, 0.60, 0.48    系统负载,即任务队列的平均长度。

三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 29 total        进程总数
1 running            正在运行的进程数
28 sleeping            睡眠的进程数
0 stopped            停止的进程数
0 zombie            僵尸进程数
Cpu(s): 0.3% us        用户空间占用CPU百分比
1.0% sy                内核空间占用CPU百分比
0.0% ni                用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id            空闲CPU百分比
0.0% wa                等待输入输出的CPU时间百分比
0.0% hi     
0.0% si     

最后两行为内存信息。内容如下:

Mem: 191272k total        物理内存总量
173656k used            使用的物理内存总量
17616k free                空闲内存总量
22052k buffers            用作内核缓存的内存量
Swap: 192772k total        交换区总量
0k used                    使用的交换区总量
192772k free            空闲交换区总量
123988k cached            缓冲的交换区总量。

内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。

 

PID              进程id
PPID              父进程id
RUSER              Real
UID              进程所有者的用户id
USER              进程所有者的用户名
GROUP              进程所有者的组名
TTY              启动进程的终端名。不是从终端启动的进程则显示为
PR              优先级
NI              nice值。负值表示高优先级,正值表示低优先级
P              最后使用的CPU,仅在多CPU环境下有意义
%CPU              上次更新到现在的CPU时间占用百分比
TIME              进程使用的CPU时间总计,单位秒
TIME+              进程使用的CPU时间总计,单位1/100秒
%MEM              进程使用的物理内存百分比
VIRT              进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP              进程使用的虚拟内存中,被换出的大小,单位kb。
RES              进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE              可执行代码占用的物理内存大小,单位kb
DATA              可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR              共享内存大小,单位kb
nFLT              页面错误次数
nDRT              最后一次写入到现在,被修改过的页面数。
S              进程状态。
-              D=不可中断的睡眠状态
-              R=运行
-              S=睡眠
-              T=跟踪/停止
-              Z=僵尸进程
COMMAND              命令名/命令行
WCHAN              若该进程在睡眠,则显示睡眠中的系统函数名
Flags              任务标志,参考

  

# 输入top 按1显示逻辑cpu的个数
top - 16:48:42 up 790 days, 34 min,  1 user,  load average: 0.07, 0.05, 0.05
Tasks:  98 total,   1 running,  97 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.3 us,  0.3 sy,  0.0 ni, 99.0 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881920 total,   158848 free,  1387584 used,  2335488 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2172544 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
29472 root      10 -10  130908   8596   5592 S   1.3  0.2 440:45.25 AliYunDun

  

#htop

http://book.luffycity.com/linux-book/Linux%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86/Linux%E8%BF%9B%E7%A8%8B.html#htop%E5%91%BD%E4%BB%A4

# glances

http://book.luffycity.com/linux-book/Linux%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86/Linux%E8%BF%9B%E7%A8%8B.html#glances%E5%91%BD%E4%BB%A4

 

posted @ 2020-12-13 01:18  时间的侵蚀  阅读(434)  评论(0编辑  收藏  举报