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