标签:
==========================1========================
计算机 :硬件 +软件
硬件 -----操作系统------应用程序
硬件
中央处理 控制单元 cpu :寄存器 ,缓存 (协调各之间速度不协调而设定的)
存储器 :两段组成:内核空间 用户空间 ( row ram组成地址空间)
row 只读存储器
raw 随机存储器
存储空间寻址能力取决于 cpu的位数 32位 是 2的32次方 64位是2的64次方
cpu通电 首先到rom内执行一些指令 bios
io桥接芯片 :链接到主板,主板所有芯片的线 连入cpu总线 北桥南桥。高速总线 低速总线
离cpu近的是北桥
io 控制器: 外部 键盘等 接入 交给ios桥接芯片
有 轮询poll 和 中断 cpu跟中断控制器
io端口:来的知道是网卡ping或着键盘键输入
系统调用:
将底层细节隐藏起来,将其功能统一起来,封装上,作为中检层, 其跟硬件接触,上面是应用程序来进行交互。 将硬件设备的功能输出输出来 这个输出就叫做系统调用
库:
二次封装的系统调用。 被称作api 也就是库一致 在另一机器系统也能跑。 api一致
库一致规范 POSIX api规范
不同机器编译程序不能跑的原因 : 库的不一致
api也就是库都一样都可以编译,但是能不能执行 : 又涉及到 ABI 比如二进制程序格式 不一样, 比如 WINDOWS exe linux 是elf后缀格式
操作系统启动 没有程序运行,还有很多进程。
windows 是服务进程
linux 是守护进程
因为系统需要运行。
用户需要跟计算机接触的程序 :shell 外壳 ,也是一个程序 。谁来负责启动shell,shell启动找 接口,但是接口也是程序?谁来启动接口,所以就要有开机启动 程序。 所以开机必须要启动shell程序。
内核运行在内核空间 程序运行在用户空间
3 :7
理论上 操作系统 启动后 内核程序应该退出,除非一些特权操作。所以大部分是应用程序在跑
所以内核程序先启动,提供接口, 在启动应用程序
外壳shell 程序 的父进程是谁呢?其不是第一个 init 是生产必要的进程的
内核是上帝的话,init 是上地的使者, 是用户空间的第一个进程。 用户空间进程的祖宗是init
1991年 linxu 内核
linux: unix-like 类unix系统
linux 出现之前
gun : gpl协定 gcc emacs vi 但是就是缺少个核心、所以linux 出现有划时代意义
所以GUN Linux 就结合了。 GUN/linux
GUN/Linux : 是有版本号的
α 内侧 β 公测 rc 发行候选
3.13.2
3 主版本 机制变
13 次版本号 重要更新
2 小漏洞bug
2.6之后 不看奇偶
使用centos 6.4
linux :内核
init 早期是个脚本, 红帽6 用了ubantu的upstart 红帽7 传统linux兼容的 systemd
shell 启动个 外壳 shell: bash
bash版本号 : bash-3.4.1 bash-4.2.2
源码: #前两者都有商业组织, 第三个是民间组织。 真正为技术人员喜欢的是 debian
linux 发行商 :
redhat :比如 为redhat提供测试机制的 fedora ,Centos,Mandriva
假设 不同发行商的版本的编号跟linux 内核没有关系
redhat4 : 2.4 内核 2.1 init 3.1 shell
redhat5 :2.6 new2.3 4.1
suse : SLES (suse企业版) 开放版opensuse
debian :ubantu ---mint
gentoo:提供通常都是iso都需要编译安装,比较难比上面的三个。
LFS :
bt:backtrace
程序包管理器:
Redhat,Suse : RPM
Debian: deb dpkg
安装引导程序 ,是跑在内核上的。接下来是init
硬盘 :
分区 、
格式化 : 其实穿件文件系统 方便管理众多文件
键盘布局
时区
设置用户
发行版大量程序包 只选择自己需要的
安装程序 :
redhat 叫 anaconda 支持自动化配置,提供配置文件可以自动安装。 该文件叫kickstart。cobbler
linux 终端:
物理设备
表现为 /dev/console
串行终端
表现为 /dev/ttyS#
虚拟终端
表现 /dev/tty#
附加在物理终端上,一旦系统启动 就是虚拟了 ctrl+alt+f1-f6
图形终端ctrl+alt+f7 如果要进图形 要先启动图形服务startx ==== gnome kde
startx & 后台运行,释放命令提示符号
伪终端 :模拟终端
表现 /dev/pts/#
也叫模拟终端
1 远程链接终端 2 图形界面的右键打开的命令接口
xshell crt 是伪终端
如何判断呢?
输入命令tty
/dev/pts/0
没有超过缓冲区的我们可以翻屏
shift+pageup/pagedown 翻屏
ctrl+c:终止当前程序
# tty命令 : 显示当前终端对应终端设备文件
# who: 查看当前系统上登陆的所有用户
linux在实现操作系统hi的哲学思想:
1 一切皆文件
open read write close
2 由众多目的单一应用程序组成,一个程序只做一件事,且做好;
3组合目的单一的小程序完成复杂任务
4 尽量避免跟用户交互
5 使用文本文件保存配置信息
6 提供机制,而非策略
一个accic码 是1个字节 byte
自由软件含义:
自由使用
自由学习和修改
自由 分发
自由创建衍生版
shell 外壳两类:
GUI :接口
桌面windows
GNOME
KDE
XFACE
CLI:命令行
bsh csh tcsh ksh bash zsh
任何shell都是有环境的。
各发行版默认使用的 bash
bash :
管理员 提示符#
普通用户 提示符是$
提示符前面的是
环境变量:
变量说白了就是 内存空间,值是内存地址。
ps1 :1级命令提示符 bash 根据这个来确定提示符的前面的内容
#echo 命令
引用一个变量 :${变量名}
\u :当前用户
\h:主机名
\W :工作目录的路径基名
对于linux 来讲 路径分隔符: /
绝对路径:从顶层开始
相对路径:从当前位置 开始的路径
目录是个路径映射符
linux 出了根分区之外的其他分区是不能直接 作为操作系统入口使用的。只有根才可以。
其他分区只能在 根分区下的目录作为入口进入本分区
linux 文件系统结构:
层次化
/:根
用户 :自己所有操作权限的目录,家目录
工作目录: 当前所处的目录
cd :chage directory
cd 目标
basename :取路径基名
dirname:取路径目录名
linux系统特性:
1 文件名 可以使用除/ 以外的任意字符,但总长度不超过255个
2 严格区分大小写 abc ABC
如何获取命令帮助:
bash 中,命令有两种类型
builtin :在shell程序中实现的命令即为内建命令
外部命令 :在文件系统上的某个位置,有一个与命令名称对应的可执行文件
如何判断命令是内部还是外部? type 命令
shell : 事先通过一个变量(PATH)设定好了多个路径,当用户输入命令时,首先在内部找,内部没有,然后在$path内从左向右找。有优先选择
查找到并执行的命令会被保存到一个hash查找边中,可以使用hash命令查看此表
hash查找hash查找表
查看命令或者可执行程序的具体路径:使用which 命令
命令的使用格式:
command options arguments
命令 选项 参数
选项: 修改调整 命令的执行特性的:
选项可以有多个, 有所谓的长选项,短选项 多个选项之间必须以空格分割
短选项: -char
长选项: --world
短选项可以合并 长选项一般不可以合并
有些选项也需要参数;
命令参数 : 命令的作用的对象。命令对谁生效的。
有些命令可以带多个参数,各参数键需要使用空格分隔。
程序基本四部 二进制 配置文件 库文件 帮助文件
获取命令帮助:
内置命令:
#help 命令名】
外置命令:
# 命令 --help
使用手册 :manual
# man 命令 其实是调用了 less命令
使用段落
NAME
SYNOPSIS
EXAMPLES
DESCRIPTION
使用帮助中命令格式中的字符意义:
[]: 可选的部分
{a|b}:分组的 a和b作为一个使用单元,
| :表示只能选其一
<> :表示必须不能少的部分
... : 表示 同类内容中可以出现多个
man的使用机制
翻屏
空格:向下翻一
b: back 往回翻屏
回车:一次向下翻一行
k :向上翻一行
ctrl+d :向文件尾部 翻半
ctrl+u :向首部翻半屏
文本搜索
/keyword 向下搜索
n向下搜索 跟搜索命令相同方向 下一个
N 向上逆着 跟搜索命令相反方向 上一个
?keyword 向上搜索
q:退出
补充: man其实能为命令(普通命令、 管理命令)、 程序的配置文件格式、系统调用、库调用、游戏及其他 不方便归类的文件提供帮助手册
passwd 配置文件 /etc/passwd
MAN 的分段机制:
1-8
1 :用户命令
2 :系统调用
3:库调用
4:设备文件
5: 文件格式
6:游戏
7: 杂项
8 :守护进程
查看某关键字在哪个段落中有使用帮助,可以使用
#whatis Keyword
精确查找
提示: 如果刚装完系统即刻使用,whatis数据库还没有生成,可以使用makewhatis手动进行,执行等待时间比较长
# man -k Keyword
模糊查找
如果我事先不知道命令有几段:用whatis 看 或者man -k
info命令: 获取在线文档帮助命令info
很多应用程序自带的有文档,
/usr/share/doc/
changlog install readme
google :获取 帮助文档
谷歌黑客
linux filetype:pdf
keyword site:magedu.com
redhat 官方文档:
shutdown
reboot
halt
date,hwclock
==================3========================
系统管理命令
# shutdown: [options] .. TIME
-r reboot
-h 安全方式关机并切断电源
-c 取消关机或重启任务
-H
-P
时间格式:
now
+num: 多少份子后
hh:mm
#reboot
# halt -p 切断电源
# poweroff
日期时间管理
#date
date 月日时分年.秒
#date 显示时间
# date MMDDhhmm[CC]YY.ss 设置时间
#hwclok 硬件时钟查看时间命令
linux 有两个时钟:
硬件时钟: linux 刚开机 读的是硬件时钟
软件时钟
总结: man,info,help,date,hwclock,cal,shutdown,reboot,halt,poweroff,type,cd,which,dirname,basename,who,which,whatis,makewhatis,echo,hash,tty
回顾:
只有一个入口
管连到根的分区叫根分区,根分区的系统叫文件系统,rootfs
其他分区要想访问,必须管理到根分区的某个目录,这个过程就是挂载
解除过程叫卸载
文件和目录管理类的命令:
命令行展开:能把一个特殊字符换成一个路径
比如~
{,} 展开为多个条目
x/{a,b} = x/a , x/b
比如 cd ~user 切换到user的家目录
目录:
当前目录叫工作目录,还有家目录
mkdir 创建目录
-p 先创建父目录 递归创建
-v 显示详细过程
x/a , x/b , x/a/m , x/a/n
mkdir -pv x/{a/{m,n},b}
a_c a_d b_c b_d
mkdir -pv {a,b}_{c,d}
练习 一条命令不用空格创建
mkdir -pv /tmp/mylinux/{usr/local/{bin,sbin},etc/{sysconfig,init.d},bin,sbin}
执行输出结果
mkdir: created directory `/tmp/mylinux‘
mkdir: created directory `/tmp/mylinux/usr‘
mkdir: created directory `/tmp/mylinux/usr/local‘
mkdir: created directory `/tmp/mylinux/usr/local/bin‘
mkdir: created directory `/tmp/mylinux/usr/local/sbin‘
mkdir: created directory `/tmp/mylinux/etc‘
mkdir: created directory `/tmp/mylinux/etc/sysconfig‘
mkdir: created directory `/tmp/mylinux/etc/init.d‘
mkdir: created directory `/tmp/mylinux/bin‘
mkdir: created directory `/tmp/mylinux/sbin‘
练习创建 /tmp/a b
shell 中的引用
‘‘ "" ``
mkdir -p /tmp/a\ b
mkdir -p /tmp/‘a b‘
mkdir -p /tmp/"a b"
rmdir 删除空目录
-p 必须是一线单传的目录
上面创建目录 用到 引号
shell 中的引用
‘‘ :强引用,变量替换不会进行
"": 弱引用,能够执行变量替换
`` :命令引用,引用命令的执行结果,命令替换的另一种符号$(命令)
变量替换 :${变量名}
命令总结 : pwd mkdir rmdir
shell 特性之三 : 命令历史
bash 保存过去曾经执行过的命令列表:
当前shell 进程的保存在缓冲区中:
缓冲区中的命令会在shell退出时保存至文件中,凡是以点开通的文件都是隐藏文件 .bash_history
使用上下箭头来看曾经执行过的命令
history 查看命令列表 history
当前shell进程下的记录的
每个伪终端 窗口都是一个单独的进程,会自己记录命令
快捷键 :
!数字:!加数字表示执行该条 对应的命令
!! :表示上一条命令
!-数字:表示执行命令历史列表中的倒数第几条命令
!$ :表示 上一个命令的参数 :ESC . 先按esc 松开再按点
!string : 最近一次以string 开头的命令
选项
-c :清空命令
-d 编号 :删除该编号的命令
-a :追加当前会话的历史命令至历史文件中去;
-n : 把文件历史命令加入到当前 history中
-w : 把当前shell 的history显示的追加到文件中
-r :
查看历史命令值:
HISTSIZE:命令历史中可以保存的命令个数
HISTFILE: 命令历史文件
HISTFILESIZE: 命令历史文件可以保存的个数
HISTCONTROL: 控制命令历史的生成
igoredups : 忽略记录重复的命令,连续相同的命令才叫重复的
ignorespace: 不记录以空格开头的命令
ignoreboth:同时具有上面两种特性
linux 文件系统特性:
凡是以点开通的文件都是隐藏文件 用ls -a查看。
shell 变量的赋值
变量名=值
注意: 变量在赋值时候不能用$
变量名,只能包含字母数字 和下划线,而且不能以数字开头
变量名区别大小写
FHS :
linux系统目录结构 的标准
/bin /sbin 是操作系统 启动就执行的
/usr/bin /usr/sbin 除了系统的基本功能的命令 大部分正常功能都放在 /usr/bin /usr/sbin
/usr/local/bin /usr/local/sbin 用于按安装第三方应用程序
/bin : binary 二进制 可执行程序,所有用户都能用的 超级管理员和普通管理员都能
/sbin : 超级管理员有执行权限的命令
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin
/boot:存放系统引导文件:内核、init ramfs文件、bootloader(grub):
/dev :设备文件存放目录
/etc: 配置文件的存放目录
/etc/sysconfig: 系统的配置信息 网卡等
/etc/init.d : 系统的服务脚本存放目录
/home : 普通用户的默认与其用户名名称相同的家目录
/root : 管理员的家目录
/lib , /lib64 :库文件
64位系统有时候能装32位程序其实是为其提供了32 的库
/media : 专用的挂载位置 通常用来挂载便携式设备
/mnt : 专用挂载设备,挂载额外存储设备
/misc : 备用目录
/opt: 备用目录,但通常用来安装第三方软件 扫描漏洞工具 nesus
/proc:伪文件系统,是一种映射,运行中的内核参数特性的映射。有些是只读,有些可以改,一关机就没了。其显示的文件都不是文件 内核状态参数的 内核的所有参数映射成文件。文件内容就是变量的值。 遵循linux法则一切皆文件
/sys : 伪文件系统,系统级别的用于外围设备特性的参数
/srv:为本机服务提供数据存放位置的 早期
/tmp: 临时文件系统 大家都放,但是只能各自管理自己的。
/usr : 这个目录在装完系统是最大的。
shared 所有可以遵循FHS各系统之间可以移植的 , readonly
必须要有 bin include lib local sbin share
/usr/include: 头文件,包含其他库,对其他库的引用的 编译安装linux时候 必须要接触的
/var :频繁发生变化的文件,
cache #搭建 vanish用到 yum包
lib
local
lock #判断某个服务是否启动了,不让其启动第二次,写服务脚本时候
log
opt
run #一些服务的进程进程号id
spool
tmp
文件管理类的 命令
文件类型
bash 其他特性
shell中的管道和重定向
文本编辑器
正则表达式
文件查找
linux 复习2
标签:
原文地址:http://www.cnblogs.com/liujianzuo888/p/5082657.html