一、编写脚本,接收二个位置参数,magedu和/www,判断系统是否有magedu,如果没有则自动创建magedu用户,并自动设置家目录为/www

[root@centos7 data]# cat user.sh
#!/bin/bash user=$ [ $# -ne ] && echo "Usage: $0 user homedir" && exit if [[ $ =~ ^(\/.*) ]];then
homedir=$
else
echo "The homedir must be a directory"
exit
fi if id $user &> /dev/null ; then
echo "$user is exist"
exit
else
useradd -m -d $homedir $user
[ $? -eq ] && echo "$user create success"
fi
[root@centos7 data]# bash user.sh
Usage: user.sh user homedir
[root@centos7 data]# bash user.sh magedu www
The homedir must be a directory
[root@centos7 data]# bash user.sh magedu /www
magedu create success

二、使用expect实现自动登录系统

[root@centos7 data]# cat expect.sh
#!/bin/bash ip=$
user=$
password=$ expect << EOF
set timeout
spawn ssh $user@$ip
expect {
"yes/no" {send "yes\n";exp_continue}
"password" {send "$password\n"}
}
expect "]#" {send "ls\n"}
expect "]#" {send "exit\n"}
expect eof
EOF
[root@centos7 data]# bash expect.sh 192.168.214.27 root root
spawn ssh root@192.168.214.27
root@192.168.214.27's password:
Last login: Tue Dec :: from 192.168.214.17
[root@centos7- ~]# ls
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos
[root@centos7- ~]# exit
logout
Connection to 192.168.214.27 closed.

三、简述linux操作系统启动流程

1. 计算机加电自检

 当给计算机通电后,其主板上的COMS芯片会执行BIOS(Basic Input and Output System)上的程序,程序会对其硬件信息去检查是否存在以及是否能够正常工作,最后初始化硬件。

2. 加载bootloader

 根据启动顺序找到第一个可以启动的磁盘,加载其MBR中的BootLoader,MBR共有512个字节,前446个字节为bootloader主程序,中间64个字节为分区表,最后2个字节为硬盘有效标志(55AA),此时又分为三个阶段:

 stage1: 加载Bootloader的主程序用于加载stage 1.5的代码;

 stage1.5:由于stage1识别不了文件系统,也就无法加载内核,stage1_5作为stage1和stage2中间的桥梁,stage1_5有识别文件系统的能力,让statge1中的bootloader能够识别stage2所在的分区文件系统;

 stage2:当stage2被载入内存执行时,它首先会去解析grub的配置文件/boot/grub/grub.conf中的Kernel的信息,然后将Kernel加载到内存中运行,当Kernel程序被检测并在加载到内存中,GRUB就将控制权交接给了Kernel程序。

3. 内核初始化

 此阶段主要是探测可识别的硬件,加载硬件驱动,切换根分区(挂载rootfs),运行系统第一个进程init进程初始化系统

4. 系统初始化

 此阶段主要是初始化软件运行环境,它会读取配置文件/init/inittab (centos5和6) 或者 systemd (centos7) 读取默认运行级别,然后运行该默认级别下的脚本,启停默认级别下定义的服务 (centos7采用systemd来启停服务,centos6是采用init进程来启停服务),最后登录终端。

四、破解centos7密码

1. 启动时按任意键暂停启动

2. 按 e 键进入编辑模式,将光标移至linux16开始的行,添加内核参数 rd.break

3. 按 Ctrl+x 启动,进入紧急模式

4. 以读写方式重新挂载/sysroot,mount -o remount,rw /sysroot

5. 切换根,chroot /sysroot

6. 修改root密码

7. 创建安全标签,touch /.autorelabel(SELinux需要,如已禁用,可不操作)

8. 退出根,exit ,并重启系统,reboot

第九周作业—N42-虚怀若谷的更多相关文章

  1. 2018-2019-1 20189221 《Linux内核原理与分析》第九周作业

    2018-2019-1 20189221 <Linux内核原理与分析>第九周作业 实验八 理理解进程调度时机跟踪分析进程调度与进程切换的过程 进程调度 进度调度时机: 1.中断处理过程(包 ...

  2. 2017-2018-1 20179205《Linux内核原理与设计》第九周作业

    <Linux内核原理与设计>第九周作业 视频学习及代码分析 一.进程调度时机与进程的切换 不同类型的进程有不同的调度需求,第一种分类:I/O-bound 会频繁的进程I/O,通常会花费很多 ...

  3. 2019-2020-1 20199325《Linux内核原理与分析》第九周作业

    第九周作业要求: 理解Linux系统中进程调度的时机,可以在内核代码中搜索schedule()函数,看都是哪里调用了schedule(),判断我们课程内容中的总结是否准确: 使用gdb跟踪分析一个sc ...

  4. 2019-2020-1 20199329《Linux内核原理与分析》第九周作业

    <Linux内核原理与分析>第九周作业 一.本周内容概述: 阐释linux操作系统的整体构架 理解linux系统的一般执行过程和进程调度的时机 理解linux系统的中断和进程上下文切换 二 ...

  5. 2020-2021-1 20209307 《Linux内核原理与分析》第九周作业

    这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第九周作业> 这个作业的目标 & ...

  6. 2017-2018-2 1723《程序设计与数据结构》第九周作业 & 第二周结对编程 总结

    作业地址 第九次作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1878 (作业界面已评分,可随时查看,如果对自己的评分有意 ...

  7. 20169207《Linux内核原理与分析》第九周作业

    第九周的实验依旧和往常的一样,主要包括两部分.一是1.阅读学习教材「Linux内核设计与实现 (Linux Kernel Development)」第教材第13,14章.二是学习MOOC「Linux内 ...

  8. 201621123062《java程序设计》第九周作业总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 思维导图1:(对集合部分做了一些改动和细化) 思维导图2:(泛型) 1.2 选做:收集你认为有用的代码片段 代 ...

  9. 2019春第九周作业Compile Summarize

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 这里 我在这个课程的目标是 能更加进一步的够熟练掌握指针的用法 这个作业在那个具体方面帮助我实现目标 能解更多的题 参考文献与网址 C语言 ...

  10. 2019-2020-1 20199301《Linux内核原理与分析》第九周作业

    第八章 进程的切换和系统的一般执行过程 进程的调度实际与进程的切换 ntel定义的中断类型 硬中断:就是CPU的两根引脚(可屏蔽中断和不可屏蔽中断) 软中断/异常:包括除零错误.系统调用.调试断点等在 ...

随机推荐

  1. ssh端口转发功能

    一.SSH 端口转发能够提供两大功能: 1.加密SSH Client 端至SSH Server 端之间的通讯数据 2.突破防火墙的限制完成一些之前无法建立的TCP 连接  (隧道功能) 二:SSH端口 ...

  2. C++ 结构体重载运算符

    听说这个东西有很多种写法什么的,来不及了(要退役了),先整一个之前用到的,可能用到的频率比较高的东西上来. struct node{ ll x,y; }; bool operator < (co ...

  3. mysql——视图——概念

    二.视图 视图是一种虚拟的表,是从数据库中的一个或者多个表中导出来的表. 视图还可以从已经存在的视图的基础上定义. 数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据存放在原来的表中. 使用 ...

  4. Mycat+Mysql主从复制实现双机热备

    Mycat+Mysql主从复制实现双机热备 一.mysql主从配置原理 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据 ...

  5. P1398 [NOI2013]书法家

    传送门 就是个普及组 $dp$ 合集,把 $NOI$ 从左到右拆成 $9$ 个部分,每个部分都可以分别 $dp$ 除了 $N$ 的中间部分比较恶心以外其他都还好,自己推一下然后就知道转移,就 $N$ ...

  6. JAVA重写不需要@override

    一,如下代码, package com.boot.enable.bootenable; import org.springframework.scheduling.annotation.Async; ...

  7. Js和Jquery实现ajax长轮询

    众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,从而源源不段地获取信息. 一直以来的方式 ...

  8. Day03-jS

    javaScript概述 什么是javaScript:javaScript是一种直译式脚本语言.直接解释执行的语言. 什么是脚本语言? . java源代码--->编译成.class文件 ---& ...

  9. ajax异步 —— javascript

    目录 ajax是什么 原生ajax jquery ajax ajax跨域 ajax是什么 作用:不必重新加载整个页面,更新部分页面内容. 大概使用过程:通过后台提供的数据接口,ajax获取数据,动态修 ...

  10. node.js安装后输入“node -v”提示'node' 不是内部或外部命令,也不是可运行的程序的解决方法

    换个电脑,重新搭配环境的时候遇到的问题.node.js已经在官网进行下载安装了,但是VScode里面显示不是内部的命令,也不是可运行的程序 但是在cmd控制台还是能查到的 借助网上的方法进行了测试和调 ...