1.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于磁盘这种外部设备文件,一般应将其放在(C)目录中。
A./bin
B./etc
C./dev
D./lib
2.当使用mount进行设备或者文件系统挂载的时候,需要用到的设备名称位于(D)目录。?
A./home
B./bin
C./etc
D./dev
3.有/etc/fstab文件中内容如下,介绍该文件每行每一列的内容
UUID=2e7d5aad-dc8c-4d95-9838-4d5e04b33ef3 swap swap defaults 0 0
第一列:设备的UUID
第二列:挂载点
第三列:磁盘文件系统的格式(xfs swap ext4 等等)
第四列:文件系统的参数
第五列:需不需要做备份;通常这个参数的值为0或者1
第六列:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean)
4.如果向磁盘写入数据提示如下错误:No space left on device,但是通过df -h查看磁盘空间,发现没满, 那么可能的原因是什么?
1.1首先查看我们的磁盘剩余情况
df -h #发现磁盘没有满
1.2创建目录测试报错
创建目录报错文件还是正常
查看磁盘inode
最后发现目录backup中inode 满了
1.3解决方案
删除backup目录中不常用的文件数据
由于本文是测试inode满 所以删除所有数据,工作中要注意汇报上级。
5.用电脑自带的画图工具分别画出RAID 0,RAID 1,RAID 5和RAID 10,并说说各自对应的优缺点是什么
6.正常情况下第二块SATA硬盘的设备名应为(hdb),它上面的第三个主分区对应的文件名是(hdb3)
7.df命令和du命令的作用分别是?
du命令:主要查看目录的大小
df命令:主要查看磁盘使用的情况
8.linux系统在创建时,至少创建哪两个分区
根/和swap分区
9.如何将/dev/sdb格式化为xfs文件系统
mkfs.xfs /dev/sdb
10.磁盘空间利用率最大的RAID技术是,哪些RAID具备故障恢复能力?
RAID0
RAID5
11.在各种RAID级别中,磁盘空间利用率最低,但数据安全性最大的是
RAID10
12.8个300G的硬盘做RAID5后的容量为
(8-1)*300=2100
13.8个300G的硬盘做RAID1后的容量为
1200G
14.假设如下容量的磁盘:500G,600G,组成RAID 0,那么RAID 0的容量是多少,如果组成RAID 1,那么RAID 1的容量又是多少
RAID 0 500+600=1100G
RAID 1 500G
15.假设如下容量的磁盘:两块500G,600G磁盘组成RAID 5,那么RAID 5的容量是多少。
1500G
16.假设如下容量的磁盘:四块500G,600G磁盘组成RAID 5,RAID 5的容量是多少。
2500G
基础类
1.编辑一个1.txt文件,内容如下
cat >>1.txt <<EOF
10.0.3.1 00:0F:AF:81:19:1F
10.0.3.2 00:0F:AF:85:6C:25
10.0.3.3 00:0F:AF:85:70:42
10.0.2.20 00:0F:AF:85:55:DE
10.0.2.21 00:0F:AF:85:6C:09
10.0.2.22 00:0F:AF:85:5C:41
10.0.0.151 00:0F:AF:85:6C:F6
10.0.0.152 00:0F:AF:83:1F:65
10.0.0.153 00:0F:AF:85:70:03
10.0.1.10 00:30:15:A2:3B:B6
10.0.1.11 00:30:15:A3:23:B7
10.0.1.12 00:30:15:A2:3A:A1
10.0.1.1 00:0F:AF:81:19:1F
10.0.2.2 00:0F:AF:85:6C:25
10.0.3.3 00:0F:AF:85:70:42
10.0.2.20 00:0F:AF:85:55:DE
10.0.1.21 00:0F:AF:85:6C:09
10.0.2.22 00:0F:AF:85:5C:41
10.0.0.151 00:0F:AF:85:6C:F6
10.0.1.152 00:0F:AF:83:1F:65
10.0.0.153 00:0F:AF:85:70:03
10.0.3.10 00:30:15:A2:3B:B6
10.0.1.11 00:30:15:A3:23:B7
10.0.3.12 00:30:15:A2:3A:A1
EOF
(1)对该文件输出内容进行排序(提示:通过第三列的第一个字符,以及第4列的所有字符进行排序)
[root@chengyinwu ~]# sort -t "." -k3.1,3.1 -n -k4.1,4.3 -n 1.txt
(2)过滤该文件所有的字母,不区分大小写
[root@chengyinwu ~]# grep -i [a-Z] 1.txt
(3)过滤出以数字3结尾的行
[root@chengyinwu ~]# grep '3$' 1.txt
2.将"web3_access.log"上传至你的linux服务器
(1)统计出该文件IP地址出现的次数,并按正序对其进行排序
[root@chengyinwu ~]# awk '{print $1}' access.log |sort -n |uniq -c |sort -n
(2)统计该文件内HTTP状态返回码出现的次数(例如200,404,403,在第九列),并按照倒序进行排序
[root@chengyinwu ~]# awk '{print $9}' access.log |sort -n |uniq -c |sort -nr
(3)过滤出所有状态返回码是200的行,并将这些返回码为200行的全部替换成300
[root@chengyinwu ~]# grep -o '200' access.log |sed 's#200#300#g'
3.匹配/etc/passwd里包含root关键字的行(要求至少两种方法,分别使用awk和grep)
#1.[root@chengyinwu ~]# awk '/root/' /etc/passwd
#2.[root@chengyinwu ~]# grep 'root' /etc/passwd
4.以“:”为分隔符,取出/etc/passwd第一行的最后一列的内容
[root@chengyinwu ~]# awk -F ":" 'NR==1 {print $NF}' /etc/passwd
5.取出以“:”为分隔符,第三列(用户UID)以0结尾的
[root@chengyinwu ~]# awk -F ":" '{print $3}' /etc/passwd |grep '0$'
6.新建用户u1、u2,密码是redhat,属于同一个附加组grp1,用户u2不允许登陆到系统中
[root@chengyinwu ~]# groupadd grp1
[root@chengyinwu ~]# useradd u1 -G grp1
[root@chengyinwu ~]# useradd u2 -G grp1 -s /sbin/nologin
[root@chengyinwu ~]# echo "redhat" |passwd --stdin u1
[root@chengyinwu ~]# echo "redhat" |passwd --stdin u2
7.查看用户u1的uid和gid信息
[root@chengyinwu ~]# id u1
8.创建组distro,其GID为2019
[root@chengyinwu ~]# groupadd distro -g 2019
9.创建用户olddir,其ID号为1005,基本组为distro
[root@chengyinwu ~]# useradd olddir -u 1005 -g distro
10.给用户oldman添加密码,密码为oldboyedu
echo "oldboyedu" |passwd --stdin oldman
进程类
1.使用ps查看进程,解释进程状态中R,S,D,Z,T所代表的含义
[root@chengyinwu ~]# ps aux
R 进程运行 s 进程是控制进程, Ss进程的领导者,父进程
S 可中断睡眠 < 进程运行在高优先级上,S<优先级较高的进程
T 进程被暂停 N 进程运行在低优先级上,SN优先级较低的进程
D 不可中断进程 + 当前进程运行在前台,R+该表示进程在前台运行
Z 僵尸进程 l 进程是多线程的,Sl表示进程是以线程方式运行
2.使用yum安装一个nginx并启动,查看nginx进程的详细信息
[root@chengyinwu ~]# yum install nginx -y
[root@chengyinwu ~]# ps aux |grep nginx
root 32334 0.0 0.0 112708 988 pts/0 R+ 16:13 0:00 grep --color=auto nginx
3.开启两个xshell终端连接同一台虚拟机,一个终端输入命令"yum update" ,一个终端查看yum命令的状态,再开一个终端输入"yum install -y mariadb",然后查看yum命令的状态,当yum命令执行完成以后,再次查看yum命令的状态。
#1:[root@yinwucheng ~]# yum update -y
#2:[root@yinwucheng ~]# ps aux |grep yum
root 1532 17.3 1.2 789044 26176 pts/0 D+ 16:42 0:01 /usr/bin/python /usr/bin/yum update -y
root 1545 0.0 0.0 112708 988 pts/1 R+ 16:42 0:00 grep --color=auto yum
#1:[root@yinwucheng ~]# yum install mariadb -y
#2:[root@yinwucheng ~]# ps aux |grep yum
root 1549 4.3 1.2 804692 24904 pts/0 Sl+ 16:43 0:00 /usr/bin/python /usr/bin/yum install mariadb -y
root 1557 0.0 0.0 112708 988 pts/1 R+ 16:43 0:00 grep --color=auto yum
[root@yinwucheng ~]# ps aux |grep yum
root 1549 8.4 2.9 828432 59968 pts/0 D+ 16:43 0:00 /usr/bin/python /usr/bin/yum install mariadb -y
root 1559 0.0 0.0 112708 984 pts/1 R+ 16:43 0:00 grep --color=auto yum
[root@yinwucheng ~]# ps aux |grep yum
root 1587 0.0 0.0 112708 988 pts/1 R+ 16:44 0:00 grep --color=auto yum
4.使用"vim test.c"编辑代码代码如下
#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
pid_t pid;
pid = fork();
if (pid == 0) {
int iPid = (int)getpid();
fprintf(stderr,"I am child,%d
",iPid);
sleep(1);
fprintf(stderr, "Child exits
");
return EXIT_SUCCESS;
}
int iPid = (int)getpid();
fprintf(stderr,"I am parent,%d
",iPid);
fprintf(stderr, "sleep....
");
sleep(600);
fprintf(stderr, "parent exits
");
return EXIT_SUCCESS;
}
然后使用"gcc test.c"编译这段代码,会在当前目录生成一个a.out的文件,使用"./a.out"执行该文件(如果没有gcc命令,则使用yum进行安装)
(1)新开一个终端,使用top命令查看进程状态,是否存在一个僵尸进程
top
1 zombie 僵尸进程存在
(2)使用ps命令查看该僵尸进程的状态
[root@chengyinwu ~]# ps aux |grep out
root 32608 0.0 0.0 4208 352 pts/0 S+ 16:18 0:00 ./a.out
root 32609 0.0 0.0 0 0 pts/0 Z+ 16:18 0:00 [a.out] <defunct>
root 32698 0.0 0.0 112708 984 pts/1 R+ 16:20 0:00 grep --color=auto out
(3)使用kill 命令尝试终止该僵尸进程(不要使用-9参数强制终止),然后查看该进程的状态,是否能够终止
kill 32609
杀不死
(4)杀死该僵尸进程的父进程,查看该进程是否被终止
kill 32608
死了
5.输入top命令,解释头六行每行每列所代表的含义(不算空行)
top - 16:27:01 up 13 days, 2:09, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 77 total, 1 running, 76 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 : 1014904 total, 143700 free, 160792 used, 710412 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 690872 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
统计信息区
前五行是系统整体的统计信息。第一行是任务队列信息,同 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 缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
进程信息区
统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
序号 列名 含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进程所有者的用户id
e USER 进程所有者的用户名
f GROUP 进程所有者的组名
g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
h PR 优先级
i NI nice值。负值表示高优先级,正值表示低优先级
j P 最后使用的CPU,仅在多CPU环境下有意义
k %CPU 上次更新到现在的CPU时间占用百分比
l TIME 进程使用的CPU时间总计,单位秒
m TIME+ 进程使用的CPU时间总计,单位1/100秒
n %MEM 进程使用的物理内存百分比
o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r CODE 可执行代码占用的物理内存大小,单位kb
s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t SHR 共享内存大小,单位kb
u nFLT 页面错误次数
v nDRT 最后一次写入到现在,被修改过的页面数。
w S 进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
x COMMAND 命令名/命令行
y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
z Flags 任务标志,参考 sched.h
6.开两个终端,在一个终端输入top命令,另一个终端终止该进程,查看效果
#1:[root@yinwucheng ~]# top
#2:[root@yinwucheng ~]# ps aux |grep top
root 1588 0.0 0.1 161880 2208 pts/0 S+ 16:46 0:00 top
root 1590 0.0 0.0 112708 988 pts/1 R+ 16:46 0:00 grep --color=auto top
[root@yinwucheng ~]# kill 1588
7.在linux中输入如下命令"(while :; do uptime; sleep 1; done) &" ,新开一个终端查看该进程的状态,并尝试终止该进程
[root@yinwucheng ~]# pkill -9 -t pts/1 干了