magedu pro 第七周作业

1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;

脚本内容如下:

#!/usr/bin/env bash

loginshell=$(cat /etc/passwd|cut -d: -f7);

loginct=0;
nologinct=0;

for i in $loginshell;do
  if [[ "$i" == "/sbin/nologin" ]]; then
    let nologinct+=1;
  else
    let loginct+=1;
  fi
done

echo "可登录的用户数为:$loginct";
echo "不可登录的用户数为:$nologinct";

执行结果如下:

[hzz@magedu ~]$ bash test.sh 
可登录的用户数为:5
不可登录的用户数为:20
[hzz@magedu ~]$

Continue reading

magedu pro 第六周作业

1、请详细描述 CentOS 系统的启动流程(详细到每个过程系统做了哪些事情)。

由于篇幅过长,已单独写成一篇博客,详见:《CentOS 系统启动流程

2、为运行于虚拟机上的 CentOS 6 添加一块新硬件,提供两个主分区。

  • (1)为硬盘新建两个主分区;并为其安装 grub 。
  • (2)为硬盘的第一个主分区提供内核和 ramdisk 文件;为第二个分区提供 rootfs 。
  • (3)为 rootfs 提供 bash 、 ls 、 cat 程序及所依赖的库文件。
  • (4)为 grub 提供配置文件。
  • (5)将新的硬盘设置为第一启动项并能够正常启动目标主机。

Continue reading

magedu pro 第五周作业

1. 请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。

网桥

连接不同子网,使其透明通信,它们工作在链路层。它们处理的是链路层数据,一般来说就是以太
网帧格式的数据,缺点是无法避免“广播风暴”,交换机就是网桥的集合。

集线器

集线器的基本功能是信息分发,它把一个端口接收的所有信号向所有端口分发出去。一些集线器
在分发之前将弱信号重新生成,一些集线器整理信号的时序以提供所有端口间的同步数据通信,
工作在物理层,集线器只是把各个终端互相连接起来而已,处理的是信号。

Continue reading

magedu pro 第四周作业

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

(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;
(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;

# 创建分区

[hzz@magedu ~]$ sudo fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x9cfbcaa9 创建新的 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-31457279,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-31457279,默认为 31457279):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[hzz@magedu ~]$

# 格式化分区并按要求创建 ext4 文件系统

[hzz@magedu ~]$ sudo mkfs.ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=MYDATA
OS type: Linux
块大小=2048 (log=1)
分块大小=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 5242880 blocks
104857 blocks (2.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=273678336
320 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
        16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 
        2048000, 3981312

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成   

[hzz@magedu ~]$ 

# 确认默认挂载属性(Default mount options)

[hzz@magedu ~]$ sudo tune2fs -l /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   MYDATA
Last mounted on:          <not available>
Filesystem UUID:          d857478c-911f-4888-a4ee-2fbbf22671a1
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              655360
Block count:              5242880
Reserved block count:     104857
Free blocks:              5121266
Free inodes:              655349
First block:              0
Block size:               2048
Fragment size:            2048
Group descriptor size:    64
Reserved GDT blocks:      512
Blocks per group:         16384
Fragments per group:      16384
Inodes per group:         2048
Inode blocks per group:   256
Flex block group size:    16
Filesystem created:       Thu Jul 27 20:49:22 2017
Last mount time:          n/a
Last write time:          Thu Jul 27 20:49:22 2017
Mount count:              0
Maximum mount count:      -1
Last checked:             Thu Jul 27 20:49:22 2017
Check interval:           0 (<none>)
Lifetime writes:          65 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      cb8604c6-6cfd-4aae-9734-0c775d88a2c1
Journal backup:           inode blocks
[hzz@magedu ~]$ 

# 如默认存在 acl ,则去掉另配(练习操作)

[hzz@magedu ~]$ sudo tune2fs -o ^acl /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
[hzz@magedu ~]$ sudo tune2fs -l /dev/sdb1     
tune2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   MYDATA
Last mounted on:          <not available>
Filesystem UUID:          d857478c-911f-4888-a4ee-2fbbf22671a1
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              655360
Block count:              5242880
Reserved block count:     104857
Free blocks:              5121266
Free inodes:              655349
First block:              0
Block size:               2048
Fragment size:            2048
Group descriptor size:    64
Reserved GDT blocks:      512
Blocks per group:         16384
Fragments per group:      16384
Inodes per group:         2048
Inode blocks per group:   256
Flex block group size:    16
Filesystem created:       Thu Jul 27 20:49:22 2017
Last mount time:          n/a
Last write time:          Thu Jul 27 20:53:33 2017
Mount count:              0
Maximum mount count:      -1
Last checked:             Thu Jul 27 20:49:22 2017
Check interval:           0 (<none>)
Lifetime writes:          65 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      cb8604c6-6cfd-4aae-9734-0c775d88a2c1
Journal backup:           inode blocks
[hzz@magedu ~]$ 

[hzz@magedu ~]$ sudo tune2fs -o acl /dev/sdb1 
tune2fs 1.42.9 (28-Dec-2013)
[hzz@magedu ~]$ sudo tune2fs -l /dev/sdb1    
tune2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   MYDATA
Last mounted on:          <not available>
Filesystem UUID:          d857478c-911f-4888-a4ee-2fbbf22671a1
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              655360
Block count:              5242880
Reserved block count:     104857
Free blocks:              5121266
Free inodes:              655349
First block:              0
Block size:               2048
Fragment size:            2048
Group descriptor size:    64
Reserved GDT blocks:      512
Blocks per group:         16384
Fragments per group:      16384
Inodes per group:         2048
Inode blocks per group:   256
Flex block group size:    16
Filesystem created:       Thu Jul 27 20:49:22 2017
Last mount time:          n/a
Last write time:          Thu Jul 27 20:54:15 2017
Mount count:              0
Maximum mount count:      -1
Last checked:             Thu Jul 27 20:49:22 2017
Check interval:           0 (<none>)
Lifetime writes:          65 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      cb8604c6-6cfd-4aae-9734-0c775d88a2c1
Journal backup:           inode blocks
[hzz@magedu ~]$ 

# 按要求挂载分区

[hzz@magedu ~]$ sudo mkdir -p /data/mydata
[hzz@magedu ~]$ sudo mount -o noexec,noatime /dev/sdb1 /data/mydata   
[hzz@magedu ~]$ mount | grep mydata
/dev/sdb1 on /data/mydata type ext4 (rw,noexec,noatime,seclabel,data=ordered)
[hzz@magedu ~]$

Continue reading

magedu pro 第三周作业

1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。

# 新建用于筛选的文件和目录
[hzz@huangzz6 ~]$ sudo touch /var/lkkk123kkk
[hzz@huangzz6 ~]$ sudo touch /var/lkkk123kkk123
[hzz@huangzz6 ~]$ sudo mkdir /var/lkkk123kkk123kkk
[hzz@huangzz6 ~]$ sudo mkdir /var/lkkk123kkk123kkk123
[hzz@huangzz6 ~]$

# 使用ls进行查找
[hzz@huangzz6 ~]$ sudo ls -d /var/l*[[:digit:]]*[[:lower:]]
/var/lkkk123kkk  /var/lkkk123kkk123kkk
[hzz@huangzz6 ~]$

# 使用find进行查找
[hzz@huangzz6 ~]$ sudo find /var -maxdepth 1 -name "l*[[:digit:]]*[[:lower:]]"
/var/lkkk123kkk
/var/lkkk123kkk123kkk
[hzz@huangzz6 ~]$

# 使用ls+egrep进行查找
[hzz@huangzz6 ~]$ sudo ls -A /var/|egrep "^l.*[[:digit:]].*[[:lower:]]$"
lkkk123kkk
lkkk123kkk123kkk
[hzz@huangzz6 ~]$ 

Continue reading

magedu pro 第二周作业

1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。

# 常用的文件管理类命令有:cp,mv,rm

# cp是一个拷贝命令,常用参数:
# -i # 交互式
# -r # 递归
# -a # 全属性复制(包含-dR --preserve=all)
# 示例:

[hzz@e25f88eebde1 ~]$ cp -i test.txt /tmp/
cp: overwrite '/tmp/test.txt'? y
[hzz@e25f88eebde1 ~]$

[hzz@e25f88eebde1 ~]$ ls -ld test
drwxrwxr-x 2 hzz hzz 6 Dec  9 08:09 test
[hzz@e25f88eebde1 ~]$ cp -r test /tmp/    
[hzz@e25f88eebde1 ~]$ ls -ld /tmp/test
drwxrwxr-x 3 hzz hzz 17 Dec  9 08:11 /tmp/test
[hzz@e25f88eebde1 ~]$

[hzz@e25f88eebde1 ~]$ ln -s test.txt test123
[hzz@e25f88eebde1 ~]$ cp -a test123 /tmp/test
[hzz@e25f88eebde1 ~]$ ls -l /tmp/test
total 0
lrwxrwxrwx 1 hzz hzz 8 Dec  9 08:17 test123 -> test.txt
[hzz@e25f88eebde1 ~]$

# mv命令相当于windows下的剪切粘贴,可用于移动文件或文件夹,也可用户给文件或文件夹重命名。
# 常用参数有-i和-f,参数功能和cp命令的类似。
# 使用示例:

[hzz@e25f88eebde1 ~]$ touch 123
[hzz@e25f88eebde1 ~]$ mkdir 123dir
[hzz@e25f88eebde1 ~]$ ls
123  123dir

# 移动文件
[hzz@e25f88eebde1 ~]$ mv 123 123dir/
[hzz@e25f88eebde1 ~]$ tree
.
`-- 123dir
    `-- 123

1 directory, 1 file
[hzz@e25f88eebde1 ~]$ 

# 重命名
[hzz@e25f88eebde1 ~]$ mv 123dir 456dir
[hzz@e25f88eebde1 ~]$ tree
.
`-- 456dir
    `-- 123

1 directory, 1 file
[hzz@e25f88eebde1 ~]$

# rm命令用于删除文件和文件夹,常用的参数有-i,-r和-f,参数功能和cp命令的类似。
# 人为操作尽量使用-i选项,避免使用-f选项,除非是删除含有大量文件的文件夹并进行反复确认。
# 使用示例:

[hzz@e25f88eebde1 ~]$ rm -ir 456dir/
rm: descend into directory '456dir/'? y
rm: remove regular empty file '456dir/123'? y
rm: remove directory '456dir/'? y
[hzz@e25f88eebde1 ~]$

Continue reading

magedu pro 第一周作业

1、描述计算机的组成及其功能。

计算机由运算器,控制器,存储器,输入装置和输出装置五大部件组成。

  1. 运算器:运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
  2. 存储器:主要功能是存储程序和各种数据信息,并能在计算机运行过程中高速、自动地完成程序或数据的存取。
  3. 控制器:是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
  4. 输入设备:用来向计算机输入各种原始数据和程序的设备叫输入设备。常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
  5. 输出设备:从计算机输出各类数据的设备叫做输出设备。常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。

Continue reading

magedu basic 第三次作业

1、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello()。

# 使用egrep扩展正则表达式
# [:alpha:] # 表示任意大小写字母
# + # 表示匹配前面字符至少一次
# 由于centos7中/etc/rc.d/init.d/functions不存在,故创建本地文件进行测试

[hzz@8eff5a75ccba ~]$ cat > functions << EOF
> hello()
> hi
> 123
> 456()
> EOF
[hzz@8eff5a75ccba ~]$ egrep -o '[[:alpha:]]+\(\)' functions
hello()
[hzz@8eff5a75ccba ~]$

Continue reading

magedu basic 第一次作业

1、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。

Linux的主流发行版本分为:slackware、debian及redhat。

其中很多发行商通过以上三个版本的开源代码进行二次开发甚至于三次开发,得出的主流版本结构图如下:

slackware

    suse

        sles:suse的企业级发行版

        opensuse:suse的开源发行版



debian:唯一一个由社区组织维护的发行版

    ubuntu:debian的二次发行版,也是迄今为止最能被用户接受的linux桌面系统。

        mint:ubuntu的二次发行版,debian的三次发行版,有多种桌面版本供用户选择。

    deepinos:由深之度(深度)公司开发的一款切合国人使用习惯的桌面linux系统,起先基于ubuntu,现基于debian。



redhat

    rhel:redhat的企业版

    fedora:redhat的社区维护版,目的用于测试最新的软件和驱动。

    centos:由redhat开源代码用完全兼容rhel的格式重新编译而成,后被redhat招安,成为官方开源版本。

Continue reading