介绍课程:
中级:
初级:系统基础
中级:系统管理、服务安全及服务管理、Shell脚本;
高级:
MySQL数据库;
cache & storage
集群:
Cluster
lb:
4layer
7layer
ha:
分布式:
zookeeper
分布式文件系统
虚拟化技术:
xen
kvm
Openstack:IAAS云;
运维工具:
ansible
puppet(ruby), saltstack(python)
监控工具:
zabbix
大数据处理:
hadoop
spark, storm
elk: elasticsearch, logstash, kibana
docker:
Python:
一万小时定律:
认证:
RedHat:
RHCSA
RHCE
RHCA
培训:
加速知识获取过程;
有人监督,有环境;
纪律:
1、迟到
1分钟:2个;
请假一晌:60个;
2、教室使用
全天开放;
拒绝玩游戏:
3、上课期间
手机铃声关闭;
一次:30个;
作业和考试:
作业:
课前提问
博客作业
5w1h:
what, why, when, where, who
how
考试:
机试、笔试
及格:80分
一分:5个
上课环境:
172.16.0.0/16
Windows: 172.16.250.X
Linux: 172.16.249.X
X: 1-254
网关:172.16.0.1
DNS: 172.16.0.1
每位同学:172.16.Y.1-254
172.16.100+Y.1-254
Server: 172.16.0.1, 192.168.0.254, 192.168.1.254
允许核心转发;
DHCP、ftp、http、cobbler
VMware Workstation的使用:
现代计算机设备的组成部分:
运算器、控制器、存储器、输入设备、输出设备
CPU
bus:总线
memory: 编址存储设备
read ahead
IO: 与外部部件交互
磁盘:
网卡:
虚拟机:虚拟计算机
CPU:运算器、控制器
CPU指令,指令集;
特权指令:OS运行特权指令;
普通指令:
程序员:
OS: Operating System
软件程序
通用目的
硬件驱动
进程管理
内存管理
网络管理
安全管理
System Call
Syscall:系统调用
编程层次:
硬件规格:hardware specifiacation
系统调用:
库调用:library call
UI:
GUI: Graphic User Interface
CLI: Command Line Interface
ABI: Application Binary Interface
API:Application Programming Interface
CPU架构类型:
x86
x64
arm
m68000, m68k
power
powerpc
ultrasparc
alpha
安腾
Windows
Linux:
Linus --> Linux
GNU/Linux
Unix:
System (Bell Lab)
AIX (IBM)
Solaris (SUN)
HP-UX (HP)
BSD: (BSRG)Berkeley System Distribution
NetBSD
OpenBSD
FreeBSD
MIT:Richard Stallman
GNU: GNU is Not Unix;
GPL:General Public License
计算机的基础知识:
CPU, memory, I/O
程序运行模式:
用户空间:user space, us
内核空间:system space
POS: Portable Operating System
POSIX
API: 编程接口;
运行程序格式:
Windows: EXE, dll(dynamic link library)
Linux: ELF, so(shared object)
程序:指令+数据
指令:只读
数据:读写
程序:算法+数据结构
库调用,系统调用:允许被调用的程序;
malloc(), free()
编程语言:
汇编语言:微码编程
系统中某些与硬件相关的特有代码、驱动程序开发;
高级语言C, C++:
系统级应用、驱动程序
高级应用java, python, php:
应用程序
unix-like
## Linux系统基础:
Linux的发行版:
slackware:
suse
opensuse
debian:
ubuntu
mint
redhat:
rhel: redhat enterprise linux
每18个月发行一个新版本
CentOS:兼容rhel的格式
fedora:每6个月发行一个新版本
ArchLinux
Gentoo
LFS: Linux From scratch
Android: kernel+busybox+java虚拟机
GNU: GPLv2, GPLv3, LGPL(lesser)
Apache: apache
BSD: bsd
A: 1000, GPL,
B: 20000, 20
问题1:CentOS和Linux是什么关系?CentOS和RHEL是什么关系?
问题2:各种开源协议的具体细节?
GPL, LGPL, Apache, BSD
程序包管理器:
rpm:
RHEL, Fedora, S.u.S.E, CentOS
dpt:
Debian, Ubuntu
自由软件:
自由使用;自由学习和修改;自由分发;自由创建衍生版;
Linux的哲学思想:
1、一切皆文件;
把几乎所有资源,包括硬件设备都组织为文件格式;
2、由众多单一目的小程序组成;一个程序只实现一个功能,而且要做好;
组合小程序完成复杂任务;
3、尽量避免跟用户交互;
目标:实现脚本编程,以自动完成某些功能;
4、使用纯文本文件保存配置信息;
目标:一款使用的文本编程器即能完成系统配置工作;
如何获取CentOS的发行版:
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
登录:
root/mageedu
# startx &
终端:
用户与主机交互,必然用到的设备;
物理终端:直接接入本机的显示器和键盘设备;/dev/console
虚拟终端:附加在物理终端之上的以软件方式虚拟实现的终端,CentOS 6默认启动6个虚拟终端
Ctrl+Alt+F#: [1,6]
图形终端:附加在物理终端之上的以软件方式虚拟实现的终端,但额外会提供桌面环境;
设备文件路径:/dev/tty#
模拟终端:
图形界面下打开的命令行接口(图形桌面打开命令行 像Windows的DOS命令行一样),
基于ssh协议或telnet协议等远程打开的界面(在图形桌面通过XManager和XShell输入账号密码打开的命令行)
设备文件:/dev/pts/# [0,oo无穷大)
查看当前的终端设备:tty
交互式接口:启动终端后,在终端设备附加一个交互式应用程序
GUI:
X protocol, window manager, desktop
Desktop:
GNOME (C, gtk)
KDE (C++, qt)
XFCE (轻量级桌面)
CLI:
shell程序:
sh (bourn)
csh
tcsh
ksh (korn)
bash (bourn again shell), GPL
zsh
显示当前使用的shell:
# echo ${SHELL}
显示当前系统使用的所有shell:
# cat /etc/shells
命令提示符:prompt
[root@localhost ~]#
[root@localhost ~]:PS1
prompt:
管理员:#
普通用户:$
命令:
输入命令,回车:
提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来;
表现为一个或多个进程;
在shell中可执行的命令有两类:
内建命令:由shell自带的,而且通过某命令形式提供;
外部命令:在当前系统的某文件系统路径下有对应的可执行程序文件;
which,whereis
区别内部或外部命令:
# type COMMAND
运行命令:
命令格式:
COMMAND [OPTIONS...] [ARGUMENTS...]
选项:用于启用或关闭命令的某个或某些功能;
短选项:-c, 例如:-l, -h
多个短选项可命令使用,例如-l -h, 可写作-lh;
长选项:--word,例如:--long, --human-readable
参数:命令的作用对象
向命令提供数据(目标);
注意:
1、多选项,以及多参数和命令之间都应该使用空白字符分隔
2、取消命令执行:Ctrl+c
文件系统:
C:\Program files\office11\word\word.exe
/etc/sysconfig/network-scripts/ifcfg-eth0
文件有两类数据:
元数据:metadata(比如文件的上下关系)
数据:data
1、文件名严格区分字符大小写;file1, File1, FILE1是不同的文件;
2、文件名可使用除/以外的任意字符,不建议使用特殊字符;
/: 根目录,路径分隔符;
3、文件名长度最长不能超过255个字符;
4、所以.开头的文件,均为隐藏文件;
路径:
绝对路径:从根目录起始的路径;
相对路径:对当前位置起始的路径;
当前位置的表示方式:
(1) ./: ./sysconfig/network-scripts
(2) 省略上述符号: sysconfig/network-scripts
..:表示当前目录的上一级目录
当前目录:current directory, 也称作working directory;
pwd: printing working directory
LSB: Linux Standard Base(标准库)
命令总结:ls, cd, type, tty, cat, which, whereis, pwd, echo
命令:
(1) 文件系统相关:
目录管理
文件管理
文件查看
文件编辑
(2) 系统管理相关:
Linux命令帮助的获取
外部命令:都有一个可执行程序,位于文件系统某目录下;
which, whereis
shell程序搜寻可执行程序文件的路径定义在PATH环境变量中;
# echo $PATH
注意:自左至右
格式:COMMAND [OPTIONS...] [ARGUMENTS...]
内部命令:
# help COMMAND
外部命令:
(1) # COMMAND --help
# COMMAND -h
(2) 使用手册(manual)
# man COMMAND
(3) 信息页
# info COMMAND
(4) 程序自身的帮助文档
README
INSTALL
ChangeLog
(5) 程序官方文档
官方站点:Documentation
(6) 发行版的官方文档
(7) Google
内部命令帮助:
# help COMMAND
hash命令:
shell搜寻到的外部命令的路径结果会缓存至kv(key-value)存储中;
history命令:
作用是什么?相关的环境变量是什么?有用的选项?
管理命令历史;
登录shell时,会读取命令历史文件中记录下的命令:~/.bash_history
登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中;
history:
-a: 追加本次会话新执行的命令历史列表至历史文件中;
-d: 删除历史中指定的命令;
-c: 清空命令历史;
快捷操作:
!#: 调用历史中第#条命令;
!string:调用历史中最近一个以string类型如man等开头的命令;
!!: 上一条命令
外部命令帮助获取:
(2) man COMMAND
手册页:/usr/share/man
man1 ... man8
man1: 用户命令
man2: 系统调用
man3: C库调用
man4: 设备文件及特殊文件
man5: 配置文件格式
man6: 游戏
man7: 杂项
man8: 管理类的命令
注意:有些关键在不止一个章节中存在帮助手册;
要查看指定章节中的手册:man # COMMAND
man命令的配置文件:/etc/man.config
MANPATH /PATH/TO/SOMEWHERE: 指明新的手册文件搜索位置
# man -M /PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手册页并显示之;
帮助手册中的段落说明:
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
EXAMPLES
AUTHOR
REPORTING BUGS
SEE ALSO
SYNOPSIS:
[]:可选内容
<>: 必选内容
a|b:二选一
...: 同一内容可出现多次
man命令的操作方法:
Space, ^V, ^f, ^F: 向文件尾翻屏;
b, ^B: 向文件首部翻屏;
d, ^D: 向文件尾部翻半屏;
u, ^U: 向文件首部翻半屏;
RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行;
y or ^Y or ^P or k or ^K:向文件首部翻一行;
q: 退出;
#:跳转至第#行;
1G: 回到文件首部
G:翻至文件尾部
文本搜索:
/KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写;
n: 下一个
N:上一个
?KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写;
n: 跟搜索命令同方向,下一个
N:跟搜索命令反方向,上一个
练习:date命令
显示今天为周几?
设定当前系统时间?
显示今天的日期,形如:08/15/15?
显示当前的时间,形如: 16:01:21?
(3) info
info COMMAND
(4) 程序自身的帮助文档
/usr/share/doc/COMMAND-VERSION
(5) 程序官方文档
(6) 发行版的官方文档
http://www.redhat.com/docs
(7) Google
(8) slideshare
http://www.slideshare.net/