Linux学习(1)——基础知识
来源:互联网 发布:社交网络mp4 编辑:程序博客网 时间:2024/06/15 02:21
北桥--高速总线控制器--连接内存(早期)
南桥--低速总线控制器--大量的I/O设备--汇总后连接到北桥
通过缓存来平衡CPU和内存的速度差。
程序的局部性原理:时间和空间的局部性。刚访问的数据最近可能再访问。访问一个数据,离这个数据近的其他数据
可能会马上被访问到。
API: 不同cpu编写出来的具有相同功能的接口程序。使两种不同硬件抽象出相同的软件环境。
硬件架构:ARM
X86
X64
安腾(Intel从HP收购的64位架构)
alpha(HP)
UltraSparc
Power(IBM)
M68000--M68K
PowerPC
OS:
Windows
Linux
Unix
HP-UX
Solaris
SCO UNIX
Unixware
OS/2
CPU:
slice时间片
5ms
5ms
内存:分段机制。
虚拟地址空间
进程
库:一堆的程序。无执行入口。可被其他程序调用执行。只提供了调用接口。
system call 系统调用 (操作系统的功能)
越底层就越能够让上层有更多选择。
将底层系统调用封装起来的更为高级的程序就是“库”。
shell :人机交互接口
操作系统基础
系统调用--->库(调用)API
后台服务:随系统启动,实现操作系统的一些基本功能
内核识别不同进程,并将执行结果转交给应用程序。
将应用程序与内核隔离开来, Windows的保护模式
内存中 BIOS映射的空间 + kernel space + 应用程序
这样划分容易产生内存碎片。
shell :接收用户指令,传递给kernel来启动相应程序。
图形用户界面GUI -- Linux上 Gnome,KDA, xface
命令行界面 CLI --Windows DOS
Linux bash shell 等等
交互式接口与应用程序相关联。
内核功能:
进程管理
内存管理
文件系统
网络功能
硬件驱动
安全机制
批处理系统:jobs1$$$$$jobs2
MainFrame 大型机
Multics 多用途,多用户的计算机系统
DEC:数字设备公司
PDP-11 ,PDP-7
Ken--Unics--->Unix 基于汇编开发
B语言(脚本语言)---引入变量、指针等特性--->C语言
VAX -->vms系统
Bill Joy : BSRG
BSD:Berkeley System Distribution
1981 Microsoft成立。 Xenix
CP/M-->DOS
Xerox:复印件
PARK
FreeBSD--第一个在PC机上运行的
OpenBSD--安全
NetBSD--服务
Sun MicroSystem 生产workstation
Sun OS --->Solaris 正统的Unix
CSH:兼容C 语言的shell
基于vms的新一代系统 Windows NT Server
Andrew: Minix 基于Unix开发
Linus:Linux只是内核 glibc(库),gcc
Stallman,Freedom
GNU:GUN is Not Unix
GPL:General Public License 通用公共许可证
LGPL:Lesser GPL
GPLv2
GPLv3
BSD
Apache
自由获取、自由修改、自由学习
Emacs:文本编辑器
gcc: GUN C Complier C编译器
bash:
GNU/Linux 完整的操作系统
源代码: c开发的程序 --->编译成二进制(交叉编译实现跨平台)
ABI: Application Binary Interface
发行商:release。将源代码格式编译成通用格式包装发行。
RedHat
SLS
Debian 唯一不受商业公司维护。
SUSE (基于SLS) -->被Novell收购(Netware)OpenSUSE
Debian---dpt
RedHat---rpm
CentOS:Community ENTerprise OS (社区版RedHat)
Fedora:RedHat个人版。为企业级提供测试。
Mandriva 桌面
Ubuntu(基于Debian二次发行)
Mint(基于Ubuntu二次发行)
Linux(kernel): 0.1, 1.0, 2.0, 2.2, 2.6, 3.0, 3.7
RHEL: 3.0, 4.0, 5.0, 6.0
Linux的基本原则:
1、目的单一的小程序组成;组合小程序完成复杂任务
2、一切皆文件
3、尽量避免捕获用户接口
4、配置文件保存为纯文本格式
GUI接口:
CLI接口:
命令提示符,pormpt,bash(shell)
#:root
$:普通用户
命令:
命令格式:
命令 选项 (可以有多个) 参数(命令的作用对象)
短选项:-character
多个选项可以组合: -a -b = -ab
长选项:--word
参数:可以有多个。
使用凭证:用户
Linux严格区分大小写
Ctrl+alt + F1/F2/F3--F6 虚拟终端(terminal):模拟多用户
startx & 启动图形界面(Ctrl+alt + F7) 可以启动多个图形界面。
图形化下启动 terminal (模拟终端)
GUI:Graphic User Interface
X-Window 图形显示协议
Gnome:C
KDE: C++
XFace:轻量级
CLI:Command Line Interface
sh
bash
csh
zsh
ksh
tcsh
三种用户:root,student,vistor
切换用户
su :switch user
# su [-l] 用户名 []表示可省略 -l表示完全切换
使用exit 退回原用户
#passwd 修改当前用户密码
普通用户需满足密码复杂性规则
IDE:集成开发环境
.so :shared object (类似dll)
login:
用户名:用户ID
认证机制:鉴别用户就是他所声称的那个人。
授权:Authorization
审计:Audition(日志)
prompt,命令提示符:
命令:
magic number:魔数。
标记程序执行的格式
shebang
#!/bin/bash
# command options... arguments....
选项:修改命令的执行特性。有些选项可以带参数(选项的参数)
短选项
长选项
参数:指定命令的作用对象
list:ls
列出、列表
目录:是文件,路径映射
路径:从指定起始点到目的地所经过的位置。
文件系统:File system 层次化管理的机制
指定路径下的文件
倒置树状目录结构。
绝对路径:从根目录开始定位
相对路径:相对于当前所处位置的目录。在从根到目标的路径节点上。
working directory;current directory
pwd:printing working directory
ls -l 长格式
drwx------ 3 root root 4096 03-25 06:15 gconfd-root
文件类型:
- :普通文件(f)
d :目录文件
b :块设备文件(block)
c :字符设备文件(character)
l :符号链接文件(symbolic link file ) 软链接文件
p :命令管道(pipe)
s :套接字文件(socket)
文件权限:9位。每3位一组。每组:rwx(读、写、执行)
文件硬链接的次数
文件的属主(owner)
文件的属组(group)
文件的大小(size),单位:字节
时间戳:(timestamp) 最近一次被修改
三个时间戳最近一次被访问(access),被修改(modify),被改变(change)
metadata:元数据。文件的属性数据就是一种元数据。
文件名
-h:human readable。做单位转换。
-rw------- 1 root root 1.6K 03-25 06:09 anaconda-ks.cfg
-a: all。显示以 . 开头的隐藏文件
. :当前目录 .. :当前目录的父目录
-A:不显示 . 和 .. 的其他隐藏文件
-d: 显示目录自身属性
-i :显示文件的索引节点号
文件的数字标识符:index node = inode
-r :逆序显示文件
-R:递归显示。文件子目录。
cd:change directory
cd 切换到家目录,主目录。Home directory。 用“~”标识家目录
cd ~username:进入指定用户的家目录
cd - : 在当前目录和前一个目录来回切换
命令类型:
内置命令:shell 内置。 builtin
外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件。
环境变量:变量是命名的内存空间。
printenv
PATH:一堆使用冒号分隔的路径。需要注意次序。第一次执行会去查找,之后会把命令及对应路径缓存。
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@beny /]# hash (一种缓存)
hits command
1 /usr/bin/printenv
25 /bin/ls
1 /usr/bin/clear
hits command
1 /usr/bin/printenv
25 /bin/ls
1 /usr/bin/clear
O(1): hash列表无论队列多长,查找所用时间是不变的。
type:显示指定命令的命令类型。
date:时间管理。看到的是系统时间,通过clock或hwclock来显示硬件时间。
RTC —— 实时时钟
NTP 网络时间协议
Linux通过rtc读取时间,然后内核通过软件模拟振荡器来即使
硬件时钟
系统时钟
获得命令使用帮助:
内部命令:
help COMMAND 获取一个特定命令的帮助信息
外部命令:
COMMAND --help 获取一个外部命令的简要帮助信息
命令手册:manual
在线文档:
info COMMAND 命令的历史
文档:/usr/share/doc
man COMMAND 打开一个命令使用手册。通常是一个压缩存档的文本文档。
man date “[]”表示可省略。 “|” 表示多选一 "<>" 必须给出的内容 “...” 可以出现多次 “{}” 分组,无特殊意义
SYNOPSIS
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
MAN:
NAME : 命令名称及功能简要说明
SYNOPSIS : 用法说明,包括可用的选项
DESCRIPTION : 功能的详细说明,包括每个选项的意义
OPTIONS : 说明每个选项的意义
FILES: 此命令相关配置文件
BUGS:
EXAMPLES: 使用示例
SEE ALSO : 另外参照
翻屏:
向后翻一屏 :SPACE
向前翻一屏 : b
向后翻一行 : ENTER
向前翻一行 : k
查找:
/KEYWORD : 向后
n: 下一个
N: 前一个
?KEYWORD :向前
n: 下一个
N: 前一个
[root@beny ~]# date +"This year is %Y. %nToday is %d"
This year is 2016.
Today is 06
This year is 2016.
Today is 06
[root@beny ~]# date +%H:%M
21:52
21:52
[root@beny ~]# date +%s 时间戳 1970-01-01 00:00:00 UTC
1459950782
1459950782
hwclock -w 同步系统时间到硬件时间
hwclock -s 同步硬件时间到系统时间
cal: calendar 日历
whatis COMMAND 显示命令在哪个章节
分章节:
1:用户命令(/bin, /usr/bin, /usr/local/bin)
2:系统调用
3:库调用
4:特殊文件 (设备文件)
TTY(4) Linux Programmer’s Manual TTY(4)
NAME
tty - controlling terminal
DESCRIPTION
The file /dev/tty is a character file with major number 5 and minor
number 0, usually of mode 0666 and owner.group root.tty. It is a
synonym for the controlling terminal of a process, if any.
In addition to the ioctl() requests supported by the device that tty
NAME
tty - controlling terminal
DESCRIPTION
The file /dev/tty is a character file with major number 5 and minor
number 0, usually of mode 0666 and owner.group root.tty. It is a
synonym for the controlling terminal of a process, if any.
In addition to the ioctl() requests supported by the device that tty
5:文件格式(配置文件的语法)
6:GAMES游戏
7:杂项 Miscellaneous
8:管理命令(/sbin,/usr/sbin/,/usr/local/sbin)管理员使用
练习:
echo是内部还是外部命令?
[root@beny doc]# type echo
echo is a shell builtin
echo is a shell builtin
作用?
echo - display a line of text
如何换行显示?
[root@beny doc]# echo -e "This year is 2016. \nToday is 6"
This year is 2016.
Today is 6
This year is 2016.
Today is 6
转义,逃逸。
[root@beny doc]# type printf
printf is a shell builtin
printf is a shell builtin
[root@beny doc]# printf "This year is 2016."
This year is 2016.[root@beny doc]#
This year is 2016.[root@beny doc]#
[root@beny doc]# printf "This year is 2016.\n"
This year is 2016.
This year is 2016.
0 0
- Linux学习(1)——基础知识
- Linux 基础知识(1)—学习路线
- Linux学习总结(44)——Linux操作系统基础知识
- 学习笔记(十一)——Linux Shell 基础知识
- Linux入门学习——网络基础知识
- Linux学习笔记1:基础知识
- Linux设备驱动程序——内存和I/O基础知识学习:(1)内核中相关基础知识学习
- Linux学习之基础知识——Linux文件系统简介
- java基础知识(二)——基础知识的学习
- linux基础知识—shell
- Linux基础知识(1)
- Linux基础知识(1)
- Linux——学习shell脚本之前的基础知识
- Linux学习之——网络的基础知识
- Linux学习之基础知识——httpd编译安装
- Linux Shell 脚本编程(1)—Shell脚本基础知识
- Linux基础知识(4)——vim
- Linux 基础知识(2)—shell 简介
- 【USACO题库】2.3.2 Cow Pedigrees奶牛家谱 题解
- 第六届CCF 第三题 画图
- Ubuntu命令学习(二)
- IT行业导览-引言
- Problem H
- Linux学习(1)——基础知识
- bzoj1076: [SCOI2008]奖励关
- 地图2大头针
- 康拓展开模板
- 按键————————朱老师物联网大课堂
- hdu5137
- 归并排序(递归)
- java泛型举例
- Window系统下gvim编码中文乱码解决办法