系统调用 :高层调用接口:(库)
Application Program Interface(API)
内核通过 SCI 提供了一个应用程序编程接口(API)来创建一个新进程(fork、exec 或 Portable Operating System Interface [POSIX] 函数),停止进程(kill、exit),并在它们之间进行通信和同步(signal 或者 POSIX 机制)。
操作系统启动后,已经具备了运行环境
后台启动和 按需启动(shell 相当于壳,交互程序
GUI:图形用户界面
CLI:命令行界面 )
引用程序
库:被动调用library:API
kernel : 内核(跟硬件打交道的,并监控程序)
应用程序和内核隔离开的机制
四个级别:
同心圆最内层为0级别 特权模式(只用内核才能运行)
中间2层没有
最外层:其他程序设备的运行不能访问到特权模式
CPU和内存紧密相连的,CPU的0级别会映射到内存当中的某一段被保护的空间里面
内存碎片
内核的功能: 进程管理、内存管理、文件系统、网络功能、硬件驱动、安全机制
type : 显示指定属于那种类型
date : 时间管理
Linux : rtc 实时时钟
硬件时钟 :hwclock 看的
系统时钟 :date 看的
ntp : 网络时间协议
获得命令的使用帮助:
内部命令:
help COMMAND
外部命令:
COMMAN --help
命令手册:manual
whatis command 查看命令在哪个章节中
man number COMMAND
分章节:共8章节
1:用户命令(/bin 、/usr/bin 、 /usr/local/bin )
2:系统调用
3: 库用户调用
4:特殊文件(设备文件)
在磁盘上真正数据区里面没有存储任何内容,只是作为设备的访问入口存在
5:文件格式 ( 配置文件的语法)
就是解释某一个命令对应的配置文件的语法
man 5 passwd
6:游戏
7:杂项 ( Miscellaneous)
8:管理命令(/sbin 、/usr/sbin 、 /usr/local/sbin)
Bill Joy :BSRG系统
Sun MicroSystem :(BSD)
Sun OS ------> Solaris
CSH
Xerox : 复印机
PARK
FreeBSD :专注于PC机 苹果unix
OpenBSD : 专注于安全
NetBSD :专注于服务
windows NT ----->内核是vms 不再是DOS
GNC : GNU is Not Unix
GPL :General Public License
LGPL :Lesser
Lmacs :文本编辑器
gcc :GNC C Complier
GPLv2
GPLv3
BSD
Apache
源代码 : c ----->编译成二进制(交叉编译)
ABI :Application Binary Interface
RedMat
SLS
Debian: 高级
SUSE -------> Novell (Netware), OpenSUSE
Ubuntu :基于Debian , Mint
CentOS : Community ENTerprise OS
二、linux的基本原则:
1、由目的单一的小程序组成;组合小程序完成复杂任务
2、一切皆文件
3、尽量避免捕获用户接口
4、配置文件保存为纯文本格式
GUI:图形界面
Gnome : C
KDE : C++
XFace : 嵌入式
CLI接口:命令提示符prompt (可以输入命令了)
# :root
$ : 普通用户
sh
bash :默认shell
csh
xsh
ksh
tcsh
命令的动作:shell 送到内核,由内核来判断该条命令是否具有权限以及能否执行,任何命令想要执行必须要有执行入口
命令格式:
命令 选项 参数
选项:修改命令的执行特性
短选项: -
多个选项可以组合:-a -b = -ab
长选项: – (必须分开写)
参数:指定命令作用的对象
使用凭证:验证用户的身份
严格区分大小写
默认用户:root 密码 :redhat
终端terminal :ctrl + alt F1~F6
su:switch user
su 用户名 : 半切换
#su - l 用户名 :全切换
#passwd 修改密码
密码复杂性规则:
1、使用4种类别字符中至少3种
2、足够长,大于7位
3、使用随机字符串
4、定期更换
5、循环周期足够大
IDE:开发环境
DLL文件:动态链接库 Dynamic Link Library
.so :shared object
prompt 命令提示符
magic number:魔数 标志着二进制程序的格式
shebang:
内核管理着进程
进程管理、内存管理,文件系统 、驱动程序
#!/bin/bash
目录 :文件,路径映射
路径:从指定起始点到目的地所经过位置
认证机制:Authentication
授权:Authorization
审计:Audition(日志)
文件系统:file system
三、ls
-l :长格式
文件类型:
- :普通文件 ( f )
d :目录文件
b : 块设备文件 (block)
c : 字条设备文件( characer )
l :符号链接文件(symbolic link file )
p: 命令管道文件( pipe )
s:套接字文件( socket )
文件权限:9位,每3位一组,每一组 :rxw( 读、写、执行)
文件硬链接数的次数
文件的属主( own )
文件的属组( group )
文件的大小(size)单位字节
时间戳 (timestamp):
访问 :access
修改 : modify
改变 :change 属性数据也叫元数据metadata
-h : 单位转换
-a : 显示以 . 开头的隐藏文件
. 表示当前目录
… 表示父(上级)目录
-A :
-d : 显示目录自身属性
-i :index node , inode 节点号
-r :逆序显示
-R :递归(recursive)显示
cd :change directory
家目录 ,主目录,home directory
cd ~ 用户名 :进入指定用户的家目录 (root权限)
cd - :在当前目录和前一次所在的目录之间切换
命令类型:
内置命令(shell内置)
外部命令:在文件系统的某个路径下有一个命令名称相应的可执行文件
环境变量 :命令的内存空间
变量赋值
NAME=Jerry
查看环境:printenv
PATH :使用冒号分割的路劲
hash :内置缓存记录所用的命令
o( 1 )
:显示指定属于那种类型
< > :必选
[ ] :可选
…:多选一
():分组
MAN:
name :命令名称及功能简要说明
SYNOPSIS :用法说明,包括可用的选项
DESCRIPTION :命令功能的详尽说明,可能包括每一个选项的意义
OPTIONS :说明每一个选项的意义
FILES : 此命令相关的配置文件
BUGS:
EXAMPLES:使用示例
see also : 另外参照
翻屏:
向后翻一屏:Space
向前翻一屏 : b
向后翻一行:Entert
向后翻一行:k
查找:
/ keyword :向后
n: 下一个
N:前一个
? keyword :向前
n: 下一个
N:前一个
q 退出
hwclock:
以系统 为准把硬件改为系统时间
hwclock -w 把系统时间同步到硬件中去
hwclock -s 把硬件时间同步到系统中去
cal :calendar 查日历
在线文档:
info COMMAND
文档:/usr/share/doc
google
apache, hadoop
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
该命令的一般格式为: echo [ -n ] 字符串
其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。
功能说明:显示文字。
语 法:echo [-ne][字符串]或 echo [–help][–version]
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
参 数:-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
echo 是内部命令还是外部命令?
type echo
其作用
man echo
help echo
如何换行显示?
- e 逃逸字符 \n 转义字符
echo -e " \n"
printf :
文本排序:sort (ASIC码表的升序 )+ 文件名
-n : 数值排序
- r : 降序排序
-t : 字段分隔符
-k : 以哪个字段为关键字进行排序
-u : 排序后相同的行只显示一次
-f : 排序时忽略字符大小写
uniq : (报告的重复行) + 文件名
相邻且重复的行才认为为重复行
如果两个行不相邻就算是一模一样也认为也不是重复的
-d 只显示重复的行
-D 显示所有的重复行
-c 显示某一行重复的次数
文本统计:wc (word count)+路径
空格键也算字符
-l 显示总共有多少行
-w 显示多少个字节
-c :显示多少个字节
-m : 显示多少个字符
-L 最长的字包含多少个字节
字符处理命令: tr ------转换或删除字符
四、文件系统 :
rootfs : 根目录
FHS( Filesystem Hierarchy Standard 中文:文件系统层次结构标准):linux
/boot : 系统启动相关的文件,如内核、initrd以及grub( bootloader )
/dev : 设备文件
块设备: 随机访问 数据块 (硬盘 磁盘)
字符设备:线性访问 按字符为单位(有序的访问例如 键盘打字)
鼠标 和显示器
设备号:主设备号(major)和次设备号(minor)
/etc : (系统和服务的)配置文件
/home :用户的家目录,每一个用户的家目录通常默认为/home/USERNAME
/root : 管理员的家目录
/lib :函数库目录
/lib/modules : 内核模块文件
静态库 : .a
动态库: .dll .so (shared object)
共享对象 库被用来调用的功能
第一程序启动后 用到某个库直接载入内存中去,第二程序也需要改库时,直接访问内存直接用 就不需要重新载入内存了。存储一次就可以了
/media : 挂载点目录,移动设备(光驱等)
挂载点 : 把某个设备 关联到当前整个文件系统某个树上的某个节点上
挂载 : 把某个设备 跟当前文件系统上某一个目录建立相关联
/mnt :额外的临时文件系统系统加载文件系统时的常用挂载点
当机器突然断电的情况下,文件没有输入属主并没有来得及保存。
/misc :杂项归类 (默认空目录)
/opt : 可选目录 (早期安装第三方程序安装目录)
/proc :伪文件系统 (没有任何内容,这个目录其实是空的,系统启动后就不是空的了)
内核映射文件
/sys : 伪文件系统 跟硬件设备相关的属性映射文件
总线 、设备、固件、 文件系统 、内核、模块、电源
/tmp : 临时文件 (公共文件,一个月没有访问就自动删除)
/var : 可变化的文件
/bin : 可执行文件 常用的用户命令
/sbin : 系统管理命令
自身启动相关的命令或可执行程序
/usr : shared , read-only 全局下的只读文件
/usr/bin
/usr/sbin
/usr/lib
系统自身启动后方便运行所提供的正常基本功能所具备的命令或可执行的程序
/usr/local : 第三方的程序
/usr/local/bin
/usr/local/sbin
/usr/local/lib
命名规则:
1、长度不能超过255个字符
2、不能使用/当文件名
3、严格区分大小写
文件管理
ls
cd
pwd
mkdir : 创建空目录
-p : 父目录
-v : 详细信息
mkdir -pv /mnt/test/{x/m, y}
命令行展开 : 花括号自动展开
tree + 目录 : 查看目录树
删除目录 :remdir
删除空目录
rm -rf :递归删除不用提示
文件创建和删除
目录管理
touch : 用来修改时间戳
文件和目录不能重名
touch
-a :改变访问时间
-m :改变修改时间
-t :指定时间替代
-c:不创建文件
stat
创建文件 ,可以使用文件编辑器
ASCII :标准信息交换代码 纯文本
nano:
删除文件 : rm
-i :交互式,提示是否要删除
-f :不提示直接删除
-r : 递归删除所有目录
复制和移动文件
cp : copy ( 默认不复制目录 )
mv SRC (源) DEST(目标)
一个文件到一个文件
多个文件到一个目录(多个原文件,最后一个一定是目录)
cp /etc/passwd /tmp/ : 把etc下的文passwd 复制到目录tmp 下并保存文件名
cp /etc/passwd /tmp/ test : 把etc下的文passwd 复制到目录tmp下并重名
-r : 递归复制目录到目标目录下
-f : 强行复制,目标存在强行覆盖
-i : 交互式 提示是否覆盖(普通用户不存在提示 )
-p : 复制时保留原有的属主、属组权限和时间戳 ( 属性列表一样)
-a : 归档存放 (备份常用的) 比-p保留跟多
-d :保持链接属性当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
对于链接文件 cp 默认复制的是文件,不是链接本身
-L:链接指向的文件
-P : 保持链接
mv :move 移动文件( 不会覆盖目录 )
mv SRC DEST
mv /tmp/hello /var/tmp/abc 把hello复制到abc目录下
源目标和目标文件 路径一样仅仅文件名不一样 就相当于重命名
-i : 交互式 提示是否覆盖
-f : 强行复制,目标存在强行覆盖
-t : 指定目标
mv - t DEST SRC
install SRC DEST ( 文件)
-d: 用于创建指定目录
-m : 指定权限
- 描述GPL,BSD,Apache 三个开源协定的大体联系及区别
自由软件
开源协议:版权描述 - 如何获取linux当前最新的内核版本号?
www.kernel.org
3.列出你所了解的linux发行版,并说明其跟linux内核的关系
linux GNU :GNU/linux ,源代码
发行版 :Fedora 、RedHat (CentOS) 、SUSE、Debian (Ubuntu、Mint)、Gentoo 、LFS(Linux From Scratch)从零构建LINUX
查看文本:
cat :连接并显示 从首行 显示到末行
-n :显示行号(显示的号码)
-E : 显示每一行行尾 (行结束符 :
)
t
a
c
:
从
末
行
显
示
到
首
行
c
a
t
主
要
有
三
大
功
能
:
1.
一
次
显
示
整
个
文
件
。
) tac:从末行显示到首行 cat主要有三大功能: 1.一次显示整个文件。
)tac:从末行显示到首行cat主要有三大功能:1.一次显示整个文件。 cat filename
2.从键盘创建一个文件。$ cat > filename
只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件: $cat file1 file2 > file
分屏显示 : more、less
head:查看前N行
tail:查看后n行 默认 N= 10
- n 指定显示几行
tail -f : 查看文件尾部 后并不退出 ,而是等待其它进程向里面输入新内容,并立即用于显示的
文本处理
cut 剪开 -d: -f1 /etc/passwd
-d( 指定字段分隔符 ) : 默认是空格
-f (显示要显示的字段)
-f 1,3 离散 显示第一个和第三字段
-f 1-3 连续
join 合并
sed
awk :报告生成命令
grep : 文本查找命令
database : 数据库
数据要想有意义:对数据库而已通常要定义表述属性到底是否
关系型数据库 :
表:行和列(可以没有行但不能没有列)
文本文件 :检索繁琐
文本排序:
sort (并不影响源文件,仅仅是针对输出显示的内容)
默认升序排列、默认ASCII 字符大小排序的
-n :数值排序
-r : 降序
-t : 指定字段分隔符
-k :以哪个字段为关键字进行排序
-u : 排序后相同的行只显示一次
-f : 排序时忽略字符大小写
uniq:报告重复的行,或略过重复行
重复且相邻的行被略过
-d : 只显示重复的行
-c : 显示文件中行重复的次数
文本统计:
wc (work count) : 行 单词数 字符
-l :行
-w :单词数
-m : 字符数
-c : 字节数
-L :最长一行显示有多少字符
字符处理命令 :tr --------用于转换或删除字符
tr [OPTION]… SET1 [SET2] (逐个字符比较)
tr ab AB :把对应的小写换成大写
文件中的内容直接替换,后面不能有文件 需要重定向才能替换文件中的内容
tr ab AB < /etc/passwd
tr -d ab: 删除出现在字符集中的ab所有字符OC](这里写自定义目录标题)