- Linux内核主要负责四个基本功能:
- 系统内存管理
- 软件程序管理
- 硬件设备管理
- 文件系统管理
- 内核不仅可以管理物理内存也可以创建和管理虚拟内存,内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换控件(swap space), 内核不断的在交换空间和实际的物理内存之间反复交换虚拟内存存储单元中的内容,这使得系统以为他拥有比物理内存更多的可用内存。
[esunny@esunny9 ~]$ cat /proc/meminfo
MemTotal: 8104156 kB //所有可用RAM大小(物理内存减去一些预留位和内核的二进制代码大小)
MemFree: 5449768 kB //LowFree与HighFree的总和
Buffers: 90336 kB 用来给块设备做的缓冲大小(只记录文件系统的metadata以及 tracking in-flight pages,就是说 buffers是用来存储,目录里面有什么内容,权限等等。)
Cached: 587508 kB 用来给文件做缓冲大小(直接用来记忆我们打开的文件). 它不包括SwapCached
SwapCached: 0 kB 已经被交换出来的内存,但仍然被存放在swapfile中。用来在需要的时候很快的被替换而不需要再次打开I/O端口。
Active: 1830328 kB 最近经常被使用的内存,除非非常必要否则不会被移作他用.
Inactive: 573040 kB 最近不经常被使用的内存,非常用可能被用于其他途径.
Active(anon): 1725812 kB
Inactive(anon): 48392 kB
Active(file): 104516 kB
Inactive(file): 524648 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 8110072 kB //交换空间的总大小
SwapFree: 8110072 kB //未被使用交换空间的大小
Dirty: 56 kB //等待被写回到磁盘的内存大小。
Writeback: 0 kB //正在被写回到磁盘的内存大小。
AnonPages: 1725824 kB //未映射页的内存大小
Mapped: 49496 kB //设备和文件等映射的大小
Shmem: 48684 kB
Slab: 143068 kB //内核数据结构缓存
SReclaimable: 70484 kB
SUnreclaim: 72584 kB
KernelStack: 3704 kB
PageTables: 25292 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 12162148 kB
Committed_AS: 3178132 kB
VmallocTotal: 34359738367 kB //可以vmalloc虚拟内存大小
VmallocUsed: 367464 kB //已经被使用的虚拟内存大小。
VmallocChunk: 34359366712 kB
HardwareCorrupted: 0 kB
AnonHugePages: 1581056 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 8192 kB
DirectMap2M: 8296448 kB
- linux操作系统的init系统采用了运行级别,运行级别决定了init进程运行/etc/inittab文件或/etc/rcX.d目录中定义好的特定的进程。linux系统支持的运行级别可以在/ect/inittab文件中查看
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 所有进程将被终止,机器将有序的停止,关机时系统处于这个运行级别,只有一个用户可以登录系统
# 1 - Single user mode
# 单用户模式,用于系统维护,只有少数进程运行,同时所有服务也不启动
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 多用户模式,和运行级别3一样,只是网络文件系统NFS服务没有启动
# 3 - Full multiuser mode
# 多用户模式,允许多用户登录,是系统的默认启动级别,
# 4 - unused
# 留给用户的自定义运行级别
# 5 - X11
# 多用户模式,启动图形化窗口
# 6 - reboot (Do NOT set initdefault to this)
# 所有进程被种植,系统将重新启动
id:5:initdefault:
id:5:initdefault:设置默认的运行界别,这里默认的运行级别为5, 临时切换运行级别可以使用
init
运行级别即可 例如init 2
, 查看当前系统的运行即可别使用runlevel
即可在使用ps查看进程状态时,我们市场会看到command那一列有些进程名字使用[]包含起来的,这些进程表明由于不活动而被从内存中换出到磁盘交换控件中的进程。
进程状态
S sleep 休眠
SW Sleep Wait 休眠和等待,
R Running 运行中
D Uninterruptible 不可中断
T 停止或被追踪
Z 僵尸进程
W 进入内存交换
X 死掉的进程
L 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O) 暂时不知道这个到底是什么意思????????
< 高优先级
n 低优先级
s 包含子进程
+ 位于后台的进程组
[king@esunny9 ~]$ echo $PS1
[\u@\h \W]\$
[king@esunny9 ~]$ echo $PS2
>
更改shell提示符只需要更改这个环境变量即可,在当前用户的工作目录下更改.bashrc文件 增加
export PS1='[\u@\h \W]\$'
指定PS1格式即可
http://www.linuxidc.com/Linux/2014-10/108195.htm 具体设置参考这个网址
设置之后需要重新载入配置文件 使用source 配置文件即可
ls 显示当前目录下的文件和文件夹,ls的默认排序方式是字母序,但是其排序规则是按列排序而不是按行排序
使用cat输出时可以执行行号 使用-b参数即可, cat -b 文件名,cat时可以将多个空行压缩成单个空行使用-s参数
cat -b -s 文件名
ps默认只显示进程信息,可以指定-L参数显示进程中的线程, ps可以自定义显示的信息 使用-o参数
ps -eo user,pid,ppid,pcpu,pmem,rss,ucmd
统计文件夹大小需要使用du 命令 du -h, 查看某一个文件的大小也可以使用du命令 du 文件名
du -h /home 会输出每一个文件以及目录的大小,有时间我们不想获得输出信息,住需要得到/home目录的总大小,可以使用-s参数
[esunny@esunny9 ~]$du -h -s /home/esunny/bin/
122M /home/esunny/bin/
- 当使用sort对文件进行排序时如果文件是数据则sort可能得不到期待的结果
1
21
32
43
54
2
4
5
3
1
sort aaa.txt
1
1
2
21
3
32
4
43
5
54
sort命令会把数字当作字符而执行标准的字符排序,产生的输出可能根本就不是想要的结果,使用-n参数告诉sort不要把数字当成字符
sort -n aaa.txt
, sort -b参数忽略排序起始地空格, -f忽略大小写,默认情况下大写字母会排在前面,使用这个参数之后会忽略大小写grep -n 显示匹配行的行号 -v 输出不匹配该模式的行
如果要知道多少行包含匹配的模式 使用-c 参数
[esunny@esunny9 ~]$cat esunny.tap | grep -c esunny.
16
grep -e 可以指定多个匹配模式
cat esunny.tap | grep -e in -e mock
grep 也可以使用正则表达式
grep [avb]*