开启Linux操作系统,要求以root用户登录GNOME图形界面,语言支持选择为汉语
使用快捷键切换到虚拟终端2,使用普通用户身份登录,查看系统提示符
使用命令退出虚拟终端2上登录的用户
使用快捷键切换到虚拟终端5,使用管理员身份登录,查看系统提示符
使用命令退出虚拟终端5上登录的用户
切回图形界面,右单击桌面打开终端,输入关闭系统的命令
查看哪些用户在系统上工作
修改当前时间为2018年8月26号11:28
查看2015年10月份日历
使用两种方法查看ls命令的使用说明
ls –help
man ls
清除屏幕 Crtl+L
使用“useradd tom”命令新建tom用户,为tom用户设置密码“123”
切换当前用户为tom
查看当前登陆Linux系统所使用的用户名
开启Linux操作系统,要求以root用户登录GNOME图形界面
右击桌面打开终端,使用“useradd lucy”命令创建lucy用户
使用鼠标点击的方法进入根目录
点击进入root用户的家目录
点击进入lucy用户的家目录
点击进入用来存放常用的可执行文件的目录
点击进入用来存放系统的可执行文件的目录
点击进入设备文件目录
点击进入配置文件目录
创建目录wg
使用绝对路径的方法在wg目录下新建文件a.txt
进入wg目录
使用相对路径的方法在当前目录下新建wg01目录和b.txt文件
以长列表格式列出当前目录下的内容
删除空目录wg01
进入上一级工作目录
强制删除非空目录wg
复制/etc/passwd到当前目录,名为file1
不停的以只读的方式查看file1文件的内容
查看file1文件的前3行内容
查看file1文件的后2行内容
以百分比的方式分页查看file1文件的内容
以上下翻页的方法分页查看file1文件的内容 less file1
创建如下目录结构
sh-3.2# tree /FtpServer/
/FtpServer/
├── bin
│ ├── register.py
│ └── start.py
├── conf
│ └── settings.py
├── core
│ └── server.py
├── db
│ └── user.db
├── lib
│ └── common.py
└── log
└── access.log
1:切换到路径/tmp下,以追加的方式往start.py内写入内容
2:查看当前所在的路径
3:切换到log目录下,新建目录access,然后把access.log移动到该目录下。
4:切换到core目录下,然后在该路径下新建auth.py文件
5. 开启两个终端,一个终端往access.log文件中追加内容,然后在另外一个终端动态查看access.log新增的内容。
6. 关闭上述的终端,然后以覆盖的方式往access.log中写入内容
7: 删除/FtpServer目录
作业一:
1) 新建用户natasha,uid为1000,gid为555,备注信息为“master”
2) 修改natasha用户的家目录为/Natasha
3) 查看用户信息配置文件的最后一行
4) 为natasha用户设置密码“123”
5) 查看用户密码配置文件的最后一行
6) 将natasha用户账户锁定
7) 将natasha用户账户解锁
8) 新建组police,gid为999
9) 查看组配置文件的最后一行
10) 将natasha用户加入police组
11) 修改police组的组名为jingcha
12) 删除natasha用户,连家目录和邮箱一起删除
13) 删除jingcha组
作业二:
1) 在用户的主目录下创建目录test,进入test创建空文件file1
2) 以长格式形式显示文件信息,注意文件的权限和所属用户和组
3) 为文件file1设置权限,使其他用户可以对此文件进行写操作。
4) 查看设置结果,
5) 取消同组用户对文件file1的读取权限,并查看设置结果。
6) 用数字表示法为文件file设置权限,所有者可读、可写、可执行,所属组用户和其他用户只具有读和执行的权限。设置完成后查看设置。
7) 用数字形式更改文件file1的权限,使所有者只能读取此文件。其他任何用户都没有权限。查看设置结果。
8) 回到上层目录,查看test的权限
9) 为其他用户添加对此目录的写权限
作业三:
以操作文件的方式,新建一个用户alex
作业四:
1) 新建目录/test/dir,属主为tom,数组为group1,/test目录的权限为777
2) 新建用户jack,切换到jack用户下,验证jack用户对dir目录的rwx权限(开启另外一个终端,依次修改dir目录的others权限)
3)将jack加入group1组,验证jack用户对dir目录的rwx权限(开启另外一个终端,依次修改dir目录的group权限)
4)切换到tom用户,验证tom用户对dir目录的rwx权限(开启另外一个终端,依次修改dir目录的user权限)
5)在dir目录内新建文件tom.txt,属主为tom,属组为group1,/test目录的权限为777
6)新建用户rose,切换到rose用户下,验证rose用户对tom.txt的rwx权限(开启另外一个终端,依次修改tom.txt的others权限来配合验证过程)
作业一:
1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖)
cat /etc/passwd /etc/group > /1.txt
2) 将用户信息数据库文件和用户密码数据库文件纵向合并为一个文件/2.txt(追加)
cat /etc/passwd /etc/shadow >> /2.txt
3) 将/1.txt、/2.txt两个文件打包为/1.tar
tar cvf /1.tar /1.txt /2.txt
4) 使用gzip命令压缩1.txt文件名为1.txt.gz
gzip /1.txt
5) 解压缩1.txt.gz
gunzip /1.txt.gz
6) 使用bzip2压缩1.txt压缩后文件名为1.txt.bz2
bzip2 /1.txt
7) 解压缩1.txt.bz2
bunzip2 /1.txt.bz2
8) 解包1.tar,解包后文件存放到/tmp目录下
tar xvf /1.bar -C /tmp
9) 使用tar命令打包并且压缩/1.txt、/2.txt,得到的文件名为1.tar.gz
tar cvzf 1.tar.gz /1.txt /2.txt
10) 解包1.tar.gz,解包后文件存放到/tmp目录下
tar xvzf /1.tar.gz -C /tmp
作业二:
1) 使用vi编辑器编辑文件/1.txt进入编辑模式写入内容“hello world”
vim /1.txt 按a—》进入编辑模式 输入hello world
2) 进入命令行模式复制改行内容,在下方粘贴80行
按Ese进去命令行模式 yy复制当前行 80p在下方粘贴80行
3) 快速移动光标到文件的最后一行
shift+g光标移动到最后一行
4) 快速移动光标到当前屏幕的中间一行
shift+m
5) 快速移动光标到文件的第五行
5gg
6) 在下方插入新的一行内容“welcome to beijing”
按o—》输入welcome to beijing
7) 删除刚插入的一行
按Esc进去命令行模式,按dd
8) 撤销上一步的操作
按u
9) 进入扩展模式,执行文件的保存退出操作
按shift+:进入扩展模式 输入wq回车保存退出
作业三:
1) 单用户模式破解root密码
方法一:①开机看到内核条目时候,按e开始编辑。见到如下界面。
②在kernel中找到ro,并改为rw bin=/sysroot/bin/sh。按Ctrl+x重启系统。
③输入chroot /sysroot运行,然后改密码,可以用passwd命令也可以进入/etc/passwd将需要修改的用户的密码占位符删除保存退出(此时该用户没有密码)。
④为了保证一些文件受到selinux上下文的影响,所以必须执行下面的命令:
touch /.autorelabel。可以强制重启。
⑤普通进入系统,可以密码进入修改密码的用户,也可以无密码进入密码被删除的用户。
方法二:①开机看到内核条目时候,按e开始编辑。在kernel中的最后加上init=/bin/sh,同时去掉rhgb和 quiet参数,按Ctrl+x启动系统。
②输入mount -o remount,rw /运行以rw的方式重新挂载/(否则没有写权限),然后改密码,可以用passwd命令也可以进入/etc/passwd将需要修改的用户的密码占位符删除保存退出(此时该用户没有密码)。
③为了保证一些文件受到selinux上下文的影响,所以必须执行下面的命令:
touch /.autorelabel。此时不能强制重启。
④需要输入exec /sbin/init 初始化和重启系统。初始化完毕后可正常用密码的用户或者无密码的用户进入系统。
2) 救援模式破解root密码
1、开机按F2进去BIOS,选择启动项为CD-ROM Drive,保存并重启。
2、重启进去光盘启动,选择troubleshooting选项,再选择Rescue a CentOS system选项。
3、点击Continue,不能选Skip。
4、一直点击OK进入如下界面。
5、输入chroot /mnt/sysimage,接着使用命令修改用户密码后重启。
6、重启后还要进去BISO中修改启动项为Hard Drive。保存后重启。
7、正常进去系统输入密码进入。
附件1 linux系统启动流程
最初始阶段
当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序。这一程序通常知道一些直接连接在主板上的硬件(硬盘,网络接口,键盘,串口,并口)。现在大部分的BIOS允许你从软盘、光盘或者硬盘中选择一个来启动计算机。
下一步,计算机将从你所选择的存储设备中读取起始的512 bytes(比如光盘一开是的512 bytes,如果我们从光盘启动的话)。这512 bytes叫做主引导记录MBR (master boot record)。MBR会告诉电脑从该设备的某一个分区(partition)来装载引导加载程序(boot loader)。Boot loader储存有操作系统(OS)的相关信息,比如操作系统名称,操作系统内核 (kernel)所在位置等。常用的boot loader有GRUB和LILO。
随后,boot loader会帮助我们加载kernel。kernel实际上是一个用来操作计算机的程序,它是计算机操作系统的内核,主要的任务是管理计算机的硬件资源,充当软件和硬件的接口。操作系统上的任何操作都要通过kernel传达给硬件。Windows和Linux各自有自己kernel。狭义的操作系统就是指kernel,广义的操作系统包括kernel以及kernel之上的各种应用。
(Linus Torvalds与其说是Linux之父,不如说是Linux kernel之父。他依然负责Linux kernel的开发和维护。至于Ubuntu, Red Hat, 它们都是基于相同的kernel之上,囊括了不同的应用和界面构成的一个更加完整的操作系统版本。)
实际上,我们可以在多个分区安装boot loader,每个boot loader对应不同的操作系统,在读取MBR的时候选择我们想要启动的boot loader。这就是多操作系统的原理。
小结:BIOS -> MBR -> boot loader -> kernel
kernel
如果我们加载的是Linux kernel,Linux kernel开始工作。kernel会首先预留自己运行所需的内存空间,然后通过驱动程序(driver)检测计算机硬件。这样,操作系统就可以知道自己有哪些硬件可用。随后,kernel会启动一个init进程。它是Linux系统中的1号进程(Linux系统没有0号进程)。到此,kernel就完成了在计算机启动阶段的工作,交接给init来管理。
小结: kernel -> init process
init process
(根据boot loader的选项,Linux此时可以进入单用户模式(single user mode)。在此模式下,初始脚本还没有开始执行,我们可以检测并修复计算机可能存在的错误)
随后,init会运行一系列的初始脚本(startup scripts),这些脚本是Linux中常见的shell scripts。这些脚本执行如下功能:
设置计算机名称,时区,检测文件系统,挂载硬盘,清空临时文件,设置网络……
当这些初始脚本,操作系统已经完全准备好了,只是,还没有人可以登录!!!init会给出登录(login)对话框,或者是图形化的登录界面。
输入用户名(比如说vamei)和密码,DONE!
在此后的过程中,你将以用户(user)vamei的身份操作电脑。此外,根据你创建用户时的设定,Linux还会将你归到某个组(group)中,比如可以是stupid组,或者是vamei组。
所以你将是用户vamei, 同时是vamei组的组员。(注意,组vamei和用户vamei只是重名而已,就好想你可以叫Dell, 同时还是Dell公司的老板一样。你完全也可以是用户vamei,同时为stupid组的组员)
总结
BIOS -> MBR -> boot loader -> kernel -> init process -> login用户,组
作业一:
1)开启Linux系统前添加一块大小为15G的SCSI硬盘
2)开启系统,右击桌面,打开终端
3)为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区,大小为5G
4)格式化主分区为ext3系统
5)将逻辑分区设置为交换分区
6)启用上一步的交换分区
7)查看交换分区的状态
作业二:
free命令查看内存
整理buffer与cache的作用
buffer是指被将输出到硬盘的数据占用
cache是指从被硬盘中读取出来的数据占用
计算真实的内存使用率
实际使用率=751420/1003432*100%=74.88%
作业三:dd命令测试硬盘速度
作业四:查找一个名为ssh的进程,并且将其强制杀死
作业结果,截图发到crm平台,会有老师为大家打分给成绩,其中作业四不算考核
作业一:rpm命令
1) 挂载光盘文件到/media目录
mount /dev/sr0 /media
2) 进去/media目录下的Packages目录
3) 查看系统已安装的所有rpm包
rpm -qa
4) 查看系统是否安装dhcp软件包
rpm -q dhcp* 查看所有以dhcp开头的染软件包
5) 安装dhcp软件包
rpm -ivh dhcp-4.2+Tab键
6) 查看dhcp软件包的信息
rpm -qi dhcp
7) 查看dhcp软件包中所包含的所有文件
rpm -ql dhcp
8) 查看/bin/ls文件是由哪个软件包产生
rpm -qf /bin/ls
9) 卸载dhcp软件包
rpm -evh dhcp
作业二:yum命令
1) 自定义yum仓库:createrepo
1、先创建/createrepo的文件夹mkdir /createrepo
2、将光盘里的软件包里有关http的软件包复制到自己的库里
/cp /media/Packages/http* /createrepo
3、再创建库的配置文件 createrepo /createrepo生成repodata文件,就完成创建自己的库
2) 自定义repo文件
1、进去到repo配置文件的目录下cd /etc/yum.repos.d/
2、新建一个自己.repo文件touch myrepo.repo
3、编辑myrepo.repo的内容,我复制了其中已经配好的文件再进去编辑,编辑内容如下下图。
4、把其他的配置文件都放到一个文件夹中备份,保证自己的文件能够生效。
5、使用yum clean all,显示的是在清理我配置好的软件源,说明配置生效了。
3) 使用yum命令安装httpd软件包
yum install httpd -y安装httpd软件包
安装过程中我出现了有依赖关系的包找不到的情况。我就把配置文件换成原来的,在网上下载需要的软件包,安装完成换成自己的repo文件,再装httpd的软件包。
4) 卸载httpd软件包:yum –y remove 软件名
yum -y remove httpd
5) 使用yum安装组件'KDE 桌面':yum –y groupinstall 组件名
1、自己的软件包里肯定没有这些组安装包,把自己的repo配置文件的源改成了光盘,那要装的时候就能找到了。
2、使用yum grouplist查看下有没有要安装的包
3、yum -y groupinstall kde plasma workapaces
6) 掌握使用yum删除组件‘KDE 桌面’:yum –y groupremove 组件名
yum -y groupremove kde plasma workapaces
7) 掌握清除yum缓存:yum clean all
8) 使用yum查找软件包:yum search 软件包名
yum search httpd
作业三:源码安装python
1、到Python官网上下载最新的源码:
https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
2、将打包文件放入虚拟机中查看一下。将压缩包解压到/local/python/中
tar xvf Python-3.6.1.tgz -C /local/python/
3、进去/local/python/Python/Python-3.6.1中可以查看解压出来的文件
4、执行configure文件进行编译前的配置,将装到/local/python下。
./configure --prefix=/local/python
5、make 开始编译过程,将C语言编译成计算机可以识别的汇编语言。编制以前要装开发工具。yum groupinstall开发工具
编译过程中出现错误,zlib不可用。
把和zlib的所有的包都装一下,看到只是少了zlib-devel的包。
装完之后接着make install完成安装。
6、进去安装的目录/local/python查看发现有bin目录。进去bin目录执行./python3.6就可以使用python了。print(‘hello world’),显示‘hello word’字符串。使用 exit() 或者Ctrl-D退出。
Python的源码安装就完成了。
作业一:部署samba
每个用户有自己的目录,可以浏览内容,也可以删除
所有的用户共享一个目录,只能浏览内容,不能删
1、关闭防火墙、改变SELinux的运行状态
2、安装samba服务
3、使用默认配置smb.conf。
4、添加系统用户,增加smb密码。
5、映射网络文件夹,填写文件路径,用户和密码。
6、可以正常使用网盘。其他用户可以相应建自己的用户密码使用网盘。
7、建共享文件夹,进入smb.conf配置文件进行配置/home/share为共享文件夹,写权限开启。
8、在/home目录下建立share文件夹,文件夹权限默认组用户和其他人没有写权限,只能看,不能删除。给加上写权限就可操作。
作业二:nginx服务
二进制安装nginx包
作为web服务修改配置文件
让配置生效,验证配置
1、准备装环境。
2、先装扩展包
再装nginx服务
3、打开编辑配置文件保存。# vim /etc/nginx/nginx.conf
/etc/nginx
/usr/share/nginx/html
启动服务,查看进程,开了4个进程。
在浏览器输入192.168.16.147,可看出内容。
作业三:nginx反向代理三台web
实现基于轮询的方式调度三台web,并验证结果
实现基于权重的方式调度三台web,并验证结果
实现基于hash的方式调用三台web,并验证结果
一、在一台虚拟机上开1台代理,3台web服务
1、在根目录下创建nginx_con文件夹,里面放4个配置文件。
先配置代理的配置文件,配置如下。
配置web服务的配置文件,改端口和网页文件的根目录。
2、只启动代理服务,还没启动web服务,输入ip看不到结果。
3、开启3台web服务,查看进程,共有8个有关Nginx的进程。查看端口情况。80、8080、8081、8082都开启处于监听状态。
4、查看效果。分别输入8080、8081、8082结果如下。
只输入192.168.31.136,刷新网页轮训出现web1、web2、web3。三种结果。
二、修改代理配置文件。
Web1的权重为3,web2的权重是2,web3的权重默认为1。
验证刷新的效果是web1-> web2-> web3-> web1-> web1-> web2然后循环。一次循环中web1出现3次,web2出现2次,web3出现1次。
三、修改代理配置文件。
验证效果是输入地址显示出web2的内容,再刷新也一直是出web2的内容。
作业一:
nginx反向代理三台web服务器,实现负载均衡
所有的web服务共享一台nfs的存储
1、 环境准备
2、 安装nfs。
3、做文件系统。新添加一块5G的盘,做成文件系统。
4、创建一个共享的文件夹share,将sdb挂载在share下。
5、打开/etc/exports进行配置保存。
6、将/share的权限放开,让客户端可读可写。
7、为rpcbind和nfs做开机启动,先启动rpcbind服务,再启动nfs。查看启动状态。
8、给web服务器装nfs。设置开机启动服务,再启动服务。将共享的目录挂载到/opt下。
这样就可以在/opt下读写文件,创建一个index.html的网页文件。在/share文件下就可以看到。
9、nfs服务弄好了就需要将3台web服务都配置到nfs服务器下的网页根目录。先将web1的配置文件更改一下,将server的root文件改为/opt。开启web1的nginx服务,看一下效果。成功!继续配置web2和web3的配置文件。
配置完后,启动nginx代理和web2和web2服务。
10、可以成功看到效果了。
在nfs服务端更改index.html的内容。再刷新页面,会看到相同的结果。这么一来再任意一个nginx服务端修改文件都会修改nfs的文件,而且是唯一的。这样的内容就统一起来。
作业一:grep作业(正则表达式及字符处理)
目标文件/etc/passwd,使用grep命令或egrep
1. 显示出所有含有root的行:
# grep 'root' /etc/passwd
2. 输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容:
# grep -C 2 'bash' /etc/passwd
3. 显示出有多少行含有nologin。
# grep -c 'nologin' /etc/passwd
4.显示出那些行含有root,并将行号一块输出。
# grep -n 'root' /etc/passwd
5.新建用户
abominable
abominate
anomie
atomize
编写正则表达式,将他们匹配出来
# egrep 'a.omi(.){0,4}e' /etc/passwd
6.建四个用户
Alex213sb
Wpq2222b
yH438PIG
egon666
过滤出用户名组成是字母+数字+字母的行
(1)# egrep '([a-Z]){2,4}([0-9]){3,4}([a-Z]){1,3}' /etc/passwd
(2)# egrep '^[a-Z]+[0-9]+[a-Z]+' /etc/passwd
7.显示出/etc目录下所有包含root的文件名
# grep -rl 'root' /etc
8. 过滤掉/etc/ssh/sshd_config内所有注释和所有空行
其中有一行是前面不是注释,后面带注释。如下:
# egrep -v '^$|^#' /etc/ssh/sshd_config这条命令过滤掉空行和开头是注释的行
egrep -v '^$|#' /etc/ssh/sshd_config这条命令过滤掉空行和带#的所有行
作业二:
linux下源码安装python,并设置PATH
1、 下载Python源码包放到root的根目录下
https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
2、 tar -xvf Python-3.6.1.tgz -C /usr/local/python3.6
3、进入/usr/local/python3.6/Python-3.6.1/查看文件
4、安装开发工具,为编译做准备。
yum -y groupinstall 开发工具
5、进行编译前配置。
./configure --prefix=/usr/local/python3.6/
6、执行make && make install
出现错误
安装zlib有关的软件包后,继续make && make install
7、安装完毕。查看安装目录出现bin、include、lib、share等目录。执行bin/python3.6可以运行python了。
8、设置PATH。要设置成登录shell下可生效的PATH,所以将路径写入/etc/profile。
9、需要登录一下才能生效。在任意目录下输入python3或者python3.6都可以。环境变量就设置完成。
windows下安装python,并设置PATH
1、下载安装包进行安装。选中红框中自动配置PATH。我们不选,自己设置。
2、安装完成后进入cmd,直接打Python,不会启动Python3.6,输入完整路径才行。
3、进入电脑高级属性将Python的路径加入到PATH中。保存退出。
4、重启cmd。输入python,便可直接打开Python3.6.
选做题:开发脚本自动部署及监控
1.编写脚本自动部署反向代理、web、nfs;
要求:
I、部署nginx反向代理三个web服务,调度算法使用加权轮询;
II、所有web服务使用共享存储nfs,保证所有web都对其有读写权限,保证数据一致性;
2.编写监控脚本,监控集群内所有服务存活状态,内存、磁盘剩余率检测,异常则发送报警邮件
3.编写计划任务,定时运行监控脚本,完成监控操作