作业04

1、创建一个10G分区,并格式为ext4文件系统;

(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;

(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;

答:

① 分区

fdisk-l /dev/sdb      //查看准备硬盘

fdisk/dev/sdb

 

② 格式化

mke2fs-t ext4 -L ‘MYDATA‘ -b 2048 -m 2 /dev/sdb1

③ 挂载

echo"/dev/sdb1 /data/mydata ext4 defaults,acl 0 0" >> /etc/fstab

  mount -o noatime,noexec /dev/sdb1 /data/mydata/

2、创建一个大小为1G的swap分区,并创建好文件系统,并启用之;

答:

①   分区

  fdisk /dev/sdb

②   格式化

 mkswap /dev/sdb2

③   激活所有swap分区

 swapon -a

3、写一个脚本

(1)、获取并列出当前系统上的所有磁盘设备;

(2)、显示每个磁盘设备上每个分区相关的空间使用信息;

答:

#!/bin/bash

for disk in $(fdisk -l | grep -o"^Disk /dev/sd[a-z]" | cut -d‘ ‘ -f2);do

   echo $disk

   declare -i i=1

   while [ $i -le $( fdisk -l $disk | grep "^/dev/sd[a-z][0-9]" |wc -l) ];do

       df -Th ${disk}${i} | tail -1 | awk ‘{print $1,$6}‘

       let i++

   done

   echo

done

4、总结RAID的各个级别及其组合方式和性能的不同;

答:

常用RAID级别:

RAID1: 硬盘镜像,至少2块硬盘,数据会在所有硬盘上保存一份,写入性能下降,读取性能有所提高,只要硬盘没有全部坏,数据就不会丢失

RAID 5: 至少3块硬盘,其中一块硬盘的容量用于做数据校验,因此可用容量为n-1块硬盘,可用允许任意一块硬盘损坏,数据不会丢失。写入性能稍微有些下降,读取性能有所提高

RAID 6: 至少4块硬盘,原理和RAID 5相同,使用2块硬盘容量做数据校验,可用容量为n-2,可允许坏两块硬盘

常用RAID组合:

RAID 1+0: 至少4块硬盘,先两两一组做RAID1,之后在RAID1基础上做RAID0,可以提高读写性能。必须保证各组RAID1里至少有一块硬盘完好,否则所有硬盘的数据会丢失

RAID 5+0: 至少6块硬盘,先每3块一组做RAID5,之后在RAID5基础上做RAID0,每组RAID5中最多只能坏1块硬盘,否则所有硬盘的数据会丢失

5、创建一个大小为10G的RAID1,要求有一个空闲盘,而且CHUNK大小为128k;

答:

①   分区

fdisk /dev/sdb

②   创建RAID1

mdadm -C /dev/md0 -l 1 -a yes -c 128 -n 2 -x 1/dev/sdb{1,2,3}

6、创建一个大小为4G的RAID5设备,chunk大小为256k,格式化ext4文件系统,要求可开机自动挂载至/backup目录,而且不更新访问时间戳,且支持acl功能;

答:

①   准备三个分区

fdisk /dev/sdb

②   创建RAID5

mdadm -C /dev/md1 -l 5 -a yes -c 256 -n 3 /dev/sdb{1,2,3}

③   分区并挂载

mkdir /backup

mkfs.ext4 /dev/md1

echo "/dev/md1 /backup ext4 defaults,acl,noatime 00" >> /etc/fstab

mount -a

7、写一个脚本

(1) 传递两个以上字符串当作用户名;

(2) 创建这些用户;且密码同用户名;

(3) 总结说明共创建了几个用户;

答:

#!/bin/bash

declare -i sum=0

   for user in [email protected];do

   id $user &> /dev/null && continue

   useradd $user && echo "$user" | passwd --stdin $user&> /dev/null

   [ $? -eq 0 ] && let sum++

done

echo "add $sum users success"

8、写一脚本,分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;

答:

#!/bin/bash

for file in /etc/rc.d/rc.sysinit/etc/rc.d/init.d/functions /etc/fstab; do

   sum=$(grep "^#" $file | wc -l)

   space=$(grep "^[[:space:]]*$" $file | wc -l)

   let totalSum+=$sum

   let totalSpace+=$space

done

echo "#开头的行一共有$totalSum,空白行一共有$totalSpace"

9、写一个脚本,显示当前系统上所有,拥有附加组的用户的用户名;并说明共有多少个此类用户;

答:

#!/bin/bash

declare -a userWithExgroup

for user in $(cut -d: -f 1 /etc/passwd);do

   if id $user | cut -d‘ ‘ -f3 | grep "," &> /dev/null;then

       userWithExgroup[${#userWithExgroup[@]}]=$user

   fi

done

for user in ${userWithExgroup[@]};do

   echo $user

done

echo "Total is${#userWithExgroup[@]}"

10、创建一个由至少两个物理卷组成的大小为20G的卷组;要求,PE大小为8M;而在卷组中创建一个大小为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至/users目录,支持acl;

答:

①   创建两个分区,标识为8e

fdisk /dev/sdb

②   创建PV

pvcreate /dev/sdb{1,2}

③   创建VG

vgcreate -s 8MB vg0 /dev/sdb{1,2}

④   创建LV

lvcreate -L 5G -n mylv1 vg0

⑤   格式化并挂载

mkfs.ext4 /dev/vg0/mylv1

mkdir /users

echo "/dev/vg0/mylv1 /users ext4 defaults,acl 00" >> /etc/fstab

mount -a

11、扩展mylv1至9G,确保扩展完成后原有数据完全可用;

答:

①   准备数据

cp /etc/fstab /users/

②   扩展LV

lvextend -L +4G /dev/vg0/mylv1

③   调整分区容量

resize2fs /dev/vg0/mylv1

④   验证

12、缩减mylv1至7G,确保缩减完成后原有数据完全可用;

答:

①   卸载

umount /users/

②   检查分区

e2fsck -f /dev/vg0/mylv1

③   调整分区容量

resize2fs /dev/vg0/mylv1 7G

④   缩减LV大小

lvreduce -L -2G /dev/vg0/mylv1

⑤   重新挂载

mount /dev/vg0/mylv1 /users/

⑥   验证

13、对mylv1创建快照,并通过备份数据;要求保留原有的属主属组等信息;

答:

①   创建快照

lvcreate -s -L 512M -n mylv1-snap -p r /dev/vg0/mylv1

②   挂载快照

mkdir /snap

mount /dev/vg0/mylv1-snap /snap

③   备份数据

mkdir /backup

cp -a /users/ /backup/

14、        如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)

答:

①   给主机分配一个可用的IP地址,如192.168.1.101/24

②   修改网卡配置文件

vim /etc/sysconfig/network-scripts/ifcfg-eth0        //配置文件名和网卡名对应

③   重启网络服务:

service network restart                 //Centos6上的重启命令

systemctl restart network               //Centos 7上的重启命令

15、为Linux主机配置网络信息的方式有哪些,请描述各个过程。

答:

配置IP的命令:

ifconfig

ifconfig -a                         //查看所有网卡信息

ifconfig eth0 up | down             //启用或关闭接口

ifconfig eth0 192.168.1.101/24 up   //给网卡设置IP和掩码并启用该网卡

ifconfig eth0 promisc              //启用混杂模式

ifconfig eth0 -promisc             //取消混杂模式

 

IP

ip link show                   //查看所有网卡的物理属性

ip link show up                    //只显示处于开启状态的网卡信息

ip link set dev eth0 up | down      //启用或关闭接口

 

ip addr                            //查看所有网卡的网络属性

ip addr add 192.168.1.102/24 dev eth0         

//给网卡添加一个ip地址,使用ifconfig无法看到新添加的ip地址

ip addr add 192.168.1.103/24 dev eth0 label "eth0:0"

//添加新ip并标记label,使用ifconfig可以看到eth0:0的ip

ip addr del 192.168.1.103/24 dev eth0           //删除ip

 

setup(Centos 6专用)

 

nmcli

nmcli dev show              //查看所有网卡信息

nmcli dev show eth0          //查看指定网卡信息

nmcli connection modify eth0ipv4.addresses 192.168.1.224/24

//修改网卡的ip地址,该命令直接修改配置文件,修改后需要重启下网络服务才会生效

nmcli connection modify eth0 +ipv4.addresses 192.168.1.234/24

//添加一个ip地址,需要重启网络服务

nmcli connection modify eth0 -ipv4.addresses192.168.1.224/24

//减少一个ip地址,需要重启网络服务

nmcli connection modify eth0 ipv4.gateway 192.168.1.1

nmcli connection modify eth0 ipv4.dns 192.168.1.1

nmcli connection modify eth0 +ipv4.dns 8.8.8.8

//设置网关和dns以及辅助dns,需要重启网络服务

nmtui(Centos7 专用)

配置路由的命令:

route

route -n               //查看路由信息

route add -net 172.16.2.0 netmask 255.255.255.0 gw192.168.1.1 dev eth0

//添加路由信息,目标为172.16.2.0/24网段,网关为192.168.1.1,使用eth0接口

 

route add -host 172.16.3.2 gw 192.168.1.1       //目标为单一的主机

 

route del -host 172.16.3.2 gw 192.168.1.1

route del -net 172.16.2.0 netmask 255.255.255.0 gw192.168.1.1

//删除相应的路由条目

route add default gw 192.168.1.1         //设置默认路由

IP

ip route list               //查看路由表

ip route add 172.16.4.0/24 via 192.168.1.1       //添加路由条目

ip route del 172.16.4.0/24 via 192.168.1.1       //删除路由条目

ip route add default via 192.168.1.1            //添加默认路由

 

netstat

netstat -rn         //查看内核路由表,以数字格式显示

 

直接修改配置文件(需要重启网络服务)

vim /etc/sysconfig/network-scripts/route-eth0   //指定相应的接口,需要重启网络服务

查看端口的命令:

netstat和 ss(效率比netstat高)

-t     //tcp协议的端口

-u     //udp协议的端口

-w    //rawsocket相关的端口

-l     //处于listen的端口

-a     //显示所有状态的端口

-n     //以数字格式显示ip和端口

-e     //以扩展格式显示

-p     //显示相关进程及PID

常用组合:  -tan, -uan,  -tanl,  -uanl, -tanlp, -uanlp

设置dns:

vim /etc/resolv.conf      //需要重启网络服务

 

 

设置主机名

hostname                   //查看主机名

hostname webserver01       //修改主机名

 

vim /etc/sysconfig/network    //Centos6修改配置文件,重启后生效

vim /etc/hostname    //Centos 7修改配置文件

 

 

 

 

16、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;

在线的主机使用绿色显示;

不在线的主使用红色显示;

答:

#!/bin/bash

net=‘172.16.250‘

for i in {1..254};do

   if ping -c 1 -w 1 ${net}.${i} &> /dev/null;then

       echo -e "\033[32m ${net}.${i} is up \033[0m"

   else

       echo -e "\033[31m ${net}.${i} is down \033[0m"

   fi

done

17、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。

答:

ps(查看进程信息)

ps -aux         //查看所有进程信息

VSZ:    虚拟内存集

RSS:   常驻内存集

STAT:

   R:  running

   S:  可中断的睡眠状态

   D:  不可中断的睡眠状态

   T: 停止状态

   Z:   僵死状态(被销毁前的状态)

+:   表示为前台进程

   l:    多线程进程

   N: 低优先级进程

   <:  高优先级进程

   s:  session leader

 

START:  进程启动时间

TIME:  进程占据CPU的累积时长

ps -eFH      //以树状显示进程间的层次关系

 

ps -axo    //自定义需要显示的信息

ps -axo uid,pid,ni,pri,psr,rtprio,cmd | head -2

NI:   nice值

PRI:  优先级

PSR:  显示工作在哪个CPU核心上

rtprio:  实时优先级

pgrep

pgrep -a httpd

pgrep -au root     //根据指定的有效用户查看进程信息

pgrep -aU root        //根据指定的真实用户查看进程信息

 

pgrep -aP 1           //把给定的PID作为父进程的进程列表

pstree            //以树状查看进程信息

 

top (查看进程实时信息)

top -d 3 -b -n 2       //指定刷新时间为3秒,以批次方式显示,显示2批次信息

 

top          //查看实时的动态信息

htop(需要使用epel源安装)

htop -d 3 -u root -s TIME        

//指定刷新时间为3秒,只显示root的进程,根据TIME字段排序

vmstat(报告虚拟内存状态)

vmstat        //显示当前信息的快照

procs:

r: 等待运行的进程的个数

b: 处于不可中断睡眠的进程个数(被阻塞的队列长度)

memory:

swpd:  交换内存的使用总量

free:   空闲物理内存的总量

buffer:  用于buffer内存的总量

cache:  用于cache内存的总量

swap:

si:   数据进入swap中的速率(kb/s)

so:  数据离开swap中的速率(kb/s)

io:

bi:   从块设备读取数据到系统的速率(kb/s)

bo:  保存数据到块设备的速率(kb/s)

system:

  in:  中断速率

cs:  进程切换速率

CPU:

us:  用户使用比例

sy:  内核使用比例

id:  空闲比例

wa:  等待IO完成的比例

st:  被虚拟化技术偷走的比例

 

vmstat 2 5        //每2秒输出一次信息,共输出5次

vmstat -s         //显示内存详细信息

 

 

dstat(用于生成系统资源统计数据,需要安装)

dstat 3         //每3秒更新一行数据

 

dstat -C 0,1       //分别显示相应的CPU核心的数据

 

dstat -D sda      //分别显示相应硬盘的数据

 

dstat -m          //显示内存相关数据

 

dstat -p          //显示进程相关数据

 

dstat -s                    //查看swap相关数据

dstat --tcp               //查看tcp连接相关数据

dstat --udp                        //查看udp连接相关数据

dstat --top-cpu         //查看当前最占用CPU的进程

dstat --top-io           //查看当前最占用IO的进程

dstat --top-mem        //查看当前最占用内存的进程

dstat --top-latency       //查看当前延迟最大的进程

 

 

pmap (查看某一进程的内存映射表)

pmap -x 1            //查看1号pid的内存映射表

glances(需要安装)

glances -t 3     //指定刷新时间为3秒

glances -f . -o <HTML | CSV>     //将报告导出到当前目录,格式可选择HTML或CSV

glances -s -B 192.168.1.203      //作为服务端运行,绑定相应的IP地址

glances -c 192.168.1.203        //可以获取指定服务器上的glances数据

 

 

kill (向进程发送控制信号)

kill [-signal] PID            //向指定PID发送控制信号

signal:

1)SIGHUP: 重新读取配置文件,不会关闭进程

2)SIGINT: 中止正在运行的进程,相当于Ctrl+c

9)  SIGKILL:  杀死正在运行的进程

15)SIGTERM:  安全结束正在运行的进程

18) SIGCONT:  继续运行之前被停止的进程

19) SIGSTOP:   停止一个进程

killall [-signal] NAME         //中止某一名称下的所有进程

18、写一个脚本,完成以下功能

(1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;

(2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;

(3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;

(4) 分别统计S开头和K开头的文件各有多少;

答:

#!/bin/bash

echo "start with K:"

ls /etc/rc.d/rc3.d/ | sed -n‘s/^K.*/& stop/p‘

total1=$(ls /etc/rc.d/rc3.d/ | grep"^K" | wc -l )

echo "Total is  $total1"

echo

echo "start with S:"

ls /etc/rc.d/rc3.d/ | sed -n‘s/^S.*/& start/p‘

total2=$(ls /etc/rc.d/rc3.d/ | grep"^S" | wc -l )

echo "Total is  $total2"

19、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;

答:

#!/bin/bash

net=‘172.16.250‘

for i in {20..100};do

   if ping -c 1 –w 1 ${net}.${i} &> /dev/null;then

       echo "${net}.${i} is up"

   fi

done

20、打印九九乘法表;

答:

#!/bin/bash

for((i=1;i<10;i++));do

   for((j=1;j<=i;j++));do

       echo -n -e "${i}X${j}=$[$i*$j]\t"

   done

   echo

done

时间: 2024-10-16 21:05:07

作业04的相关文章

软件工程课堂作业04

软件工程课堂作业04 源代码: 1 package jian; 2 import java.io.*; 3 import java.util.Scanner; 4 public class Point3D{ 5 public static int Lenght(int list[],int lenght) 6 { 7 int i,max; 8 max=list[0]; 9 for(i=1;i<=(lenght-1);i++) 10 { 11 if(list[i]>max) 12 { 13 ma

第四次作业——04树

第四次作业--树 一.学习总结 树的思维结构图 2.对于树学习总结 ⑴.树结构认识:树是一种非线性结构,每个节点有0个或多个后继节点,有且仅有一个前驱节点(根节点除外).在树中,递归方法可以放在考虑的首要位置 ⑵.学习这个结构遇到的困难:递归调用不会很清晰,代码量大,较难记忆. ⑶.树结构可以解决的问题:并查集问题 哈夫曼编码的问题. 二.6-1 二叉树操作集 1.设计思路 void CreateBTree(BTree &BT,string str){ 创建一个树T 定义一个i来计数 创建一个队

课后作业 04 --DateTime应用,判断多久后生日之类

try { Console.Write("请以年-月-日的形式输入您的生日:"); string strA = Console.ReadLine(); DateTime bir = Convert.ToDateTime(strA); DateTime tod = DateTime.Today; strA = bir.ToString("MM-dd");//将输入生日转换为月 日格式 string strB = tod.ToString("MM-dd&quo

作业04之《大型网站技术架构:核心原理与案例分析》阅读笔记

在这一节课上,我们学习了系统质量属性其中的可用性和易用性.那么质量属性是什么呢,质量属性是高于对系统功能(即对系统能力.服务和行为)的基本的要求的.系统质量属性讲重点放在了可用性.可修改性.性能.安全性.可测试性和易用性.从设计师方面,系统质量属性一般存在三个问题:(1)为属性提供的定义并不是可操作的.(2)重点通常是一个特定的方面属于哪个质量属性.(3)每个属性团队都开发了其自己的词汇. 今天我们就根据<大型网站技术架构:核心原理与案例分析>将重点放在可用性和易用性的学习讨论上以及将其方法和

java作业04(动手动脑)

1.古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报: 请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想.程序流程图.源代码.结果截图. 设计思想:首先用户输入一个字符串,再提示用户选择加密还是解密该字符串,设计程序完成功能,加密是字符串每位向后移三位替代那位字母,解密则向前移三位,最后输出新字符串. 程序流程图: 源代码: 结果截图: 2.请查看String.equals()方法的实现代码,注意学习其实现方法. 答:equals 只是比较值是否相同而==则是比较两个变量

JAVA课程作业04

1 .请查看String.equals()方法的实现代码,注意学习其实现方法. public boolean equals(Object anObject) 将此字符串与指定的对象比较.当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true. 覆盖: 类 Object 中的 equals 参数: anObject - 与此 String 进行比较的对象. 返回: 如果给定对象表示的 String 与此 String 相等,则返回 true:否则返

软件工程个人作业04(求数组最大子数组的和)

题目:返回一个整数数组中最大子数组的和. 要求:输入一个一维整形数组,数组里有正数也有负数.一维数组首尾相接,象个一条首尾相接带子一样.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值. 程序设计思想:程序中使用到一个用来求数组的最大子数组和的函数,这里可以将原数组的前n-1项加到数组的后面,形成一个新的数组,这样就可以求这种首尾相连的数组的最大子数组和了. 源代码: public class zishuzu {     /**     * @param

课堂作业04——读大型网站技术架构后感

结合XXX项目 读大型网站技术架构:核心原理与案例分析 --5,6,7章后感 在阅读大型网站技术架构之前我们学到:可以用六个质量属性衡量系统架构的好坏,所谓上梁不正下梁歪,架构也是获取许多质量属性的基础. 讲到可用性,就像永远没有不变的需求,一个系统的完全可用性永远无法达到的,但可用性是一个系统最重要的属性,不可用的系统是没有意义的.国内的QQ服务99.99%可用,也就是每年只有53分钟的时间是不可用的,而Twitter网站的可用性不足99%,相比较而言,国内在社交软件的可用性要求上还是比较高的

软件工程个人作业04

设计思路: 1.遍历每一个运算符,即在运算的题目答案的时候,使得不出现负数和假分数(若出现就调换数的位置或者改变运算符) 2.添加括号的方法就是列举所有加括号可能的情况,然后在相应的位置输出括号和进行计算 3.因为前面用的都是死方法,所以没有找到较好地方法检查重复 源代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"