Linux内核,GNU工具组件,图形化桌面环境,应用软件
内核,必要时分配硬件,有需要时执行软件
内核负责,系统内存管理,软件程序管理,硬件设备管理,文件系统管理
1.系统内存管理
cat /proc/meminfo
来查看Linux系统上虚拟内存的当前状态
运行在Linux系统上的每个进程都有各自的内存页面,进程不能访问其他进程正在使用的内存页面
内核维护着它自己的内存区域,用户进程不能访问内核进程使用的内存
共享内存页面,多个进程在同一块公用内存区域进行读取和写入操作。
ipcs -m
查看系统的当前共享内存页面
2.软件程序管理
运行中的程序为进程,前台运行和后台运行
内核创建第一个进程,init进程,启动系统上所有其他进程
内核在启动任何其他进程的时候,都会在虚拟内存中给新进程分配一个专有区域来存储该进程用到的数据和代码。
Linux操作系统有5个启动运行级
1级 基本系统进程会启动,还有唯一一个控制台终端进程,单用户模式
3级 标准启动运行级
5级 图形化,XWindow系统```
ps命令查看当前运行在Linux系统上的进程
`ps ax`
第一列是进程号
第三列是进程状态,S表示睡眠,SW表示睡眠和等待,R表示运行
####3.硬件设备管理
Linux内核中两种方法插入设备驱动代码
编译进内核的设备驱动代码
可插入内核的设备驱动模块
Linux将硬件设备当成特殊文件,成为设备文件
字符型设备文件 c
块设备文件 b
网络设备文件```
Linux为系统上每个设备都创建一种特殊文件,称为节点
设备节点有唯一的标识号,设备文件
4.文件系统管理
Linux内核采用虚拟文件系统作为和每个文件系统交互的接口
每个文件系统被挂载和使用时候,VFS信息都缓存在内存中
GNU工具链
GNU's not UNIX OSS 开源软件
5.SHELL
浏览文件系统
Linux文件系统
Linux将文件存储在单个目录结构中,这个目录称为虚拟目录,包含了PC上所有存储设备的文件路径,并且将其并入到一个目录结构中。
根目录的基础目录
/划分目录,,\表示转义,因此在行尾的时候,\加enter就可以换行
Linux虚拟目录中比较复杂的是如何来协调管理各个存储设备,Linux下安装的第一块硬盘为根驱动器,包含了虚拟目录的核心,其他目录都是从哪里开始构建的。
根驱动器中创建一些特别的目录,称为挂载点,是虚拟目录中用于分配额外存储设备的目录
虚拟目录会让文件和目录出现在挂载点目录中,但是实际上是存储在另外一个驱动器中。
通常系统文件在根驱动器中,用户文件在另外一个驱动器中。
/dev设备目录,在这里创建设备节点
/etc 系统配置文件目录
/media 可移动设备挂载点
/mnt 挂载目录
/boot 启动目录,存放启动文件```
####6.遍历目录
cd destination
绝对路径和相对路径
####基本列表功能ls
ls -F 加上文件类型标识符 可执行文件后面加上星号,目录后面加上 /
-R参数会列出当前目录下包含的目录中的文件,遍历目录
ls -F -R
-l 产生长列表格式的输出
时间是文件的上次修改时间
-t 按文件的修改时间排序输出
-d 列出目录条目,不跟踪符号链接
-S 按文件大小排序输出
过滤输出列表
ls -l myprog 这个过滤器就是进行简单文本匹配的字符串
ls可以识别标准通配符
?表示一个字符
表示0个或者多个字符
ls -l mypro?
ls -l mypro```
处理文件touch
touch test1
创建空文件
touch还可以改变已有文件的访问时间和修改时间,不改变文件内容
访问时间 -a (access)
修改时间 -m (modify)
-t参数加上指定的时间来修改
touch -t 201112251200 test1```
####复制文件
cp source destination
-a保留他们现在有的属性
-f 强制覆盖不提示
-l 创建文件连接
-r 递归复制文件
-R 递归复制目录```
链接
系统上维护同一文件,可以保存多个单独的物理文件副本,也可以保存物理文件副本和多个虚拟副本。虚拟副本称为链接。
符号链接 硬链接
硬链接创建一个独立文件,包含了源文件的信息以及位置,引用硬链接等同于引用源文件
cp -l test1 test4
但是只能在同一个存储戒指上创建硬链接
软连接 -s参数
cp -s test1 test5
test5作为单独的文件,只需要存储源文件的信息。
使用ln代替cp 但是软连接还要加-s参数
可以创建指向同一文件的多个链接```
####移动文件
移动文件会改变文件名但是保持同样的索引节点号和时间戳,所以移动一个有软连接指向的文件会很麻烦。
可以重命名
####删除文件
rm -r -f
####创建目录
mkdir
-p创建多层目录
####删除目录
rmdir dir3
只删除空目录
rm -r dir2 递归的删除目录以及下面的文件
rm -rf dir2
####查看文件内容
stat查看文件系统上某个文件的所有状态信息
stat test10 显示了所有你想知道的关于被检查文件的信息
####file查看文件类型
文本文件
可执行文件
数据文件
查看整个文件
####cat命令
-n参数会给所有行加上行号,检查脚本的时候会很有用
-b只给有文本的行加上行号
-s将多个空白行压缩到单个空白行```
more命令
显示文本文件内容,但是在每页后停下来
enter 显示下一行
q 退出
space 下一页 f 下一屏
b 上一屏
/expression 匹配
n 下一处匹配的地方
!cmd执行shell命令
v启动vi编辑器
= 显示当前行所在的行号```
####less命令
less命令可以显示文件内容,而不是读取整个文件
基本的命令和more一样,可以识别上下键以及上下翻页键
很好```
tail命令
默认显示文件末尾10行
-n lines
-f 如果有新的内容文件末尾就显示出来```
####head命令
默认前10行,支持-n参数
###7.系统管理命令
####监测程序ps命令
ps -ef
-e显示所有进程
-f显示完整格式的输出
-H显示成树状的层级格式
ps -aux
-a表示不与terminal有关的所有进程
-u表示有效用户有关的进程
-x表示详细完整信息```
top命令
实时监测进程
top在启动后按照%CPU来排序
q退出命令
F选择一列将进程排序,进入后选择```
结束进程
进程之间通过信号来通信,信号就是预定义好的一个消息
进程能够识别它并决定忽略还是做出反应
####kill命令
kill 加上PID名
kill -9 3940 (-9表示无条件终止)可能会造成文件损坏
或者kill -15 3940 (-15表示尽可能终止)
killall命令
支持通过进程名来结束进程,也支持通配符
killall http*```
监测磁盘空间
Linux将所有磁盘都挂载到一个虚拟目录下,在使用新存储媒体之前,需要把它放到虚拟目录下,称为挂载。
mount命令
挂载媒体的命令 mount
mount输出当前系统上挂载的设备列表
vfat文件系统类型说明是在windows机器上被格式化的
手动挂载媒体设备
mount -t type device directory
type指定了磁盘被格式化的文件系统类型
大部分U盘vfat 数据CD iso9660
device定义了存储设备的设备文件位置
dir定义了挂载点在虚拟目录中的位置
mount -t vfat /dev/sdb1 /media/disk
将u盘/dev/sdb1 挂载到/media/disk
挂载到虚拟目录后,root就有了对该设备的所有访问权限
可以通过目录权限指定给用户对设备的访问权限
-o loop只挂载一个文件,挂载iso文件到虚拟目录里
mount -t iso9660 -o loop MEPIS-KDE4.iso mnt
mount命令会将CD镜像.iso文件当做真实CD来挂载,用户就可以访问它的文件系统```
###umount命令
先卸载这个可移动设备
umount [dir | device]
通过设备文件或者是挂载点来指定要卸载的设备
提示符移动到该镜像文件的文件系统,umount就可以成功卸载该镜像文件了
当然可以使用lsof命令获得使用它的进程信息,停止即可
lsof /path/to/device/node```
df命令
查看所有已挂载磁盘的使用情况
df会显示每个有数据的已挂载文件系统
df -h
有可能系统运行的进程创建或者删除了某个文件,但是没有释放,不会计算进闲置空间```
####du命令
可以显示某个特定目录的磁盘使用情况
默认显示当前目录下的所有文件,目录子目录的磁盘使用情况
单位是磁盘块数
单独文件和目录占用了多大磁盘空间
du -c显示所有已列出文件的总的大小,在最后一行
du -h
du -s 显示每个参数的总计```
处理数据文件
排序数据,sort
sort -n file2 将file2里面内容识别为数字而不是字符,并且按值排序
sort -M表示按月排序,Linux的日志文件,在起始位置有一个时间戳
-r表示反向排序
du -sh * | sort -nr```
####搜索数据grep命令
在大文件里找一行数据,grep pattern file
grep three file1
-v反向搜索
grep -v t file1
显示匹配的行号,-n
grep -n t file1
指定多个匹配模式 -e
grep -e t -e f file1
多少行含有匹配模式,-c
grep -c t file1
正则表达式
grep [tf] file1```
压缩命令zip
zip
zip -r test.zip test
#compress better
zip -9r test.zip test
unzip会在新的位置重新构建整个目录结构,所以这个一定的小心,他不会覆盖目录,而是像是追加目录一样```
####归档数据tar命令
tar function [options] obj1 obj2
-c新建打包文件
tar -cvf test.tar test/ test2/
创建一个归档文件
tar -xvf test.tar
提取内容
tar -jcvf filename.tar.bz2 目录
使用bzip2来压缩打包
tar -jxvf filename.tar.bz2 -C 要解压缩的目录
tar -zcvf filename.tar.gz 目录
gzip压缩
tar -zxvf filename.tar.gz ```