#!/bin/bash if [ $# -ne 2 ]; then echo "You must input two args" exit fi id magedu &> /dev/null if [ $? -ne 0 ]; then useradd -d $2 $1 echo "Create user $1 successful,his home directory is $2" else echo "User $1 has been exist" fi
脚本login.exp以下linux
#/usr/bin/expect set ip "192.168.0.12" set user "root" set password "oplk1234" set timeout 30 spawn ssh $user@$ip expect { "yes/no" {exp_send "yes\n"; exp_continue} "*password*" {send "$password\n"} } interact
执行脚本centos
expect login.exp
根据init程序的不一样,Linux不一样发行版的启动流程存在一些不一样之处
CentoS6系统的init程序是Upstart,启动流程以下:bash
- 开机后加载BIOS的硬件信息,获取第一个启动设备
- 读取第一个启动设备MBR的引导加载程序(grub)的启动信息
- 加载内核,解压缩vmlinuz文件,并尝试驱动全部的硬件设备
- 内核执行init程序Upstart,进入默认的运行级别
- init程序执行/etc/rc.d/rc.sysinit文件,以可读写的方式从新挂载根文件系统
- 加载内核的外部模块
- init启动设置为开启启动的服务
- init执行/etc/rc.d/rc.local文件里的命令
- 执行/bin/login程序,等待用户登陆
- 用户登陆系统以后开始以Shell控制主机
CentOS7及以后的CentOS8系统的init程序是systemd,启动流程和CentOS6不同服务器
- 进行UEFI或BIOS初始化,运行POST开机自检
- 选择启动设备
- 引导装载程序grub2加载装载程序的配置文件
- 加载initramfs驱动模块
- 加载内核选项
- 内核初始化,centos7使用systemd代替Upstart
- 执行initrd.target全部单元,包括挂载/etc/fstab
- 从initramfs根文件系统切换到磁盘根目录
- systemd执行默认target配置,配置文件/etc/systemd/system/default.target
- systemd执行sysinit.target初始化系统及basic.target准备操做系统
- systemd启动multi-user.target下的本机与服务器服务
- systemd执行multi-user.target下的/etc/rc.d/rc.local
- Systemd执行multi-user.target下的getty.target及登陆服务
- 若是系统被设置为开机进入图形界面,systemd还要启动graphical.target须要的服务
一、开机后在选择内核的界面按任意键打断倒计时 二、按e键进入编辑模式 三、将光标移动到linux开头的行,在这一行的末尾添加参数rd.break 四、按Ctrl + X启动系统 五、执行`mount -o remout,rw /sysroot`命令,从新挂载系统 六、执行`chroot /sysroot`命令,切换根路径为系统的根目录 七、执行`passwd root`命令,修改root密码 八、CentOS7系统默认启用了Selinux功能。若是没有禁用Selinux,须要额外执行`touch /.autorelabel`命令 九、执行`exit`命令,退出登陆 十、执行`reboot`命令,重启系统
一、开机后在选择内核的界面按任意键打断倒计时 二、按e键进入编辑模式 三、将光标移动到linux开头的行,在这一行里的“ro”修改成“rw init=/sysroot/bin/sh” 四、按Ctrl + X启动系统 六、执行`chroot /sysroot`命令,切换根路径为系统的根目录 七、执行`passwd root`命令,修改root密码 八、若是没有禁用Selinux,须要额外执行`touch /.autorelabel`命令 九、执行`exit`命令,退出登陆 十、执行`reboot`命令,重启系统