Linux内存管理、进程管理、RPM包安装管理及源码安装软件
一、交换分区
交换分区其实就相当于Windows系统下的虚拟内存的概念,当物理内存不够用的时候,由操作系统将硬盘的一块区域划分出来作为内存使用。具体使用方法如下:
[root@bogon ~]# fdisk -l
磁盘 /dev/sdb:16.1 GB, 16106127360 字节,31457280 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@bogon ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x61afdd31 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-31457279,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-31457279,默认为 31457279):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):b
There is no *BSD partition on (null).
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
分区号 (2-4,默认 2):
起始 扇区 (10487808-31457279,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-31457279,默认为 31457279):
将使用默认值 31457279
分区 2 已设置为 Extended 类型,大小设为 10 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (10489856-31457279,默认为 10489856):
将使用默认值 10489856
Last 扇区, +扇区 or +size{K,M,G} (10489856-31457279,默认为 31457279):+5G
分区 5 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):w #保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@bogon ~]# mkfs.ext3 /dev/sdb1 #格式化主分区为ext3格式
[root@bogon ~]# swapon -s #查看交换设备的使用情况
文件名类型大小已用权限
/dev/dm-1 partition 2097148140-1
[root@bogon ~]# mkswap /dev/sdb5 #将sdb5分区设置为交换分区
正在设置交换空间版本 1,大小 = 5242876 KiB
无标签,UUID=e394c7fd-3d3f-42b8-a396-ea4980250391
[root@bogon ~]# swapon -a /dev/sdb5
[root@bogon ~]# swapon -s
文件名类型大小已用权限
/dev/dm-1 partition2097148136-1
/dev/sdb5 partition52428760-2
二、内存管理
指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。
查看内存使用情况命令:free
[root@bogon ~]# free
total used free shared buff/cache available
Mem: 999936 516024 197684 8696 286228 279348
Swap: 7340024 132 7339892
buffers与cached都是内存操作,用来保存系统曾经打开过的文件以及文件属性信息,这样当操作系统需要读取某些文件时,会首先在buffers与cached内存区查找,如果找到,直接读出传送给应用程序,如果没有找到需要数据,才从磁盘读取,这就是操作系统的缓存机制,通过缓存,大大提高了操作系统的性能。但buffers与cached缓冲的内容却是不同的。buffers是用来缓冲块设备做的,它只记录文件系统的元数据(metadata)以及 tracking in-flight pages,而cached是用来给文件做缓冲。更通俗一点说buffers主要用来存放目录里面有什么内容,文件的属性以及权限等等。而cached直接用来记忆我们打开过的文件和程序。
buffer:还没有被使用的缓冲区域
cache:已经被使用的内存空间,即已经有缓存内容的区域
由上面的数值可以看出total=used+free+buff/cache
内存使用率=(used+buff/cache)/total=80%
三、测试硬盘速度
dd命令的作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
可以用来备份数据,测试硬盘读写速度,修复磁盘等
[root@bogon ~]# dd if=/dev/zero of=/test.txt bs=1G count=1
记录了1+0 的读入
记录了1+0 的写出
1073741824字节(1.1 GB)已复制,21.9436 秒,48.9 MB/秒
四、进程管理
进程是具有一定独立功能的程序关于一个数据集合的一次运行活动。
进程具有以下主要特性:
(1)并发性:可以与其它进程一道在宏观上同时向前推进。
(2)动态性:进程是执行中的程序。此外进程的动态性还体现在如下两个方面:首先,进程是动态产生、动态消亡的;其次,在进程的生存期内,其状态处于经常性的动态变化之中。
(3)独立性:进程是调度的基本单位,它可以获得处理机并参与并发执行。
(4)交往性:进程在运行过程中可能会与其它进程发生直接或间接的相互作用。
(5)异步性:每个进程都以其相对独立、不可预知的速度向前推进。
(6)结构性:每个进程有一个控制块PCB。进程和程序的相同点:程序是构成进程的组成部分之一,一个进程存在的目的就是执行其所对应的程序,如果没有程序,进程就失去了其存在的意义。
Linux查询进程状态命令:ps aux
查询firewall进程的信息并且将其杀死:
[root@bogon ~]# systemctl start firewalld #启动防火墙服务
[root@bogon ~]# ps aux |grep firewall #查询防火墙进程信息
root 6115 1.8 2.6 327392 26904 ? Ssl 16:39 0:00 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
root 6240 0.0 0.0 112664 976 pts/0 R+ 16:40 0:00 grep --color=auto firewall
[root@bogon ~]# kill -9 6115 #-9表示强制杀死进程 也可用pkill+进程名
[root@bogon ~]# ps aux |grep firewall
root 6347 0.0 0.0 112664 976 pts/0 R+ 16:45 0:00 grep --color=auto firewall
[root@bogon ~]#
五、RPM软件包管理
RedHat Package Manager即红帽软件包管理器,起源于RedHat,但是现在大多数Linux也在使用包括CentOS
命令格式:rpm -ivh 需要安装的软件包 i表示安装 v表示详细信息 h表示进度条
rpm -qa |grep *** 查询当前系统已经安装的软件包
rpm -ql 软件包名 查询软件包安装位置即软件包所有文件
rpm -e 软件包名 卸载已经安装的软件包
rpm -qi 软件包名 查询需要安装的软件包信息
rpm -qf 文件名 查询一个文件属于哪个软件包
查看系统是否安装dhcp软件包:
[root@bogon Packages]# rpm -qa|grep dhcp
dhcp-libs-4.2.5-47.el7.centos.x86_64
dhcp-common-4.2.5-47.el7.centos.x86_64
安装dhcp软件:
[root@bogon Packages]# rpm -ivh dhcp-4.2.5-47.el7.centos.x86_64.rpm
警告:dhcp-4.2.5-47.el7.centos.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f 4a80eb5: NOKEY
准备中... (1################################# [100%]
正在升级/安装...
:dhcp-12:4.2.5-47.el7.centos ################################ [100%]
查看dhcp软件包中所包含的所有文件:
[root@bogon Packages]# rpm -ql dhcp
/etc/NetworkManager
/etc/NetworkManager/dispatcher.d
/etc/NetworkManager/dispatcher.d/12-dhcpd
/etc/dhcp
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/usr/bin/omshell
/usr/lib/systemd/system/dhcpd.service
/usr/lib/systemd/system/dhcpd6.service
/usr/lib/systemd/system/dhcrelay.service
/usr/sbin/dhcpd
/usr/sbin/dhcrelay
/usr/share/doc/dhcp-4.2.5
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
/usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example
/usr/share/doc/dhcp-4.2.5/ldap
/usr/share/doc/dhcp-4.2.5/ldap/README.ldap
/usr/share/doc/dhcp-4.2.5/ldap/dhcp.schema
/usr/share/doc/dhcp-4.2.5/ldap/dhcpd-conf-to-ldap
/usr/share/man/man1/omshell.1.gz
/usr/share/man/man5/dhcpd.conf.5.gz
/usr/share/man/man5/dhcpd.leases.5.gz
/usr/share/man/man8/dhcpd.8.gz
/usr/share/man/man8/dhcrelay.8.gz
/usr/share/systemtap/tapset/dhcpd.stp
/var/lib/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases
查看/bin/ls文件是由哪个软件包产生:
[root@bogon Packages]# rpm -qf /bin/ls
coreutils-8.22-18.el7.x86_64
[root@bogon Packages]#
卸载dhcp软件包:
[root@bogon Packages]# rpm -e dhcp
[root@bogon Packages]# rpm -qa |grep dhcp
dhcp-libs-4.2.5-47.el7.centos.x86_64
dhcp-common-4.2.5-47.el7.centos.x86_64
六、YUM
为了方便的安装与更新系统软件包,可以使用yum工具,可以配置自己的yum库,自己的依赖关系库,最好配置自己的yum安装源,并将安装文件下载到自己的yum库,这样有助于软件版本控制及其他管理工作。
(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum的命令形式一般是如下:yum [options] [command] [package ...]
其中的[options]是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。[command]为所要进行的操作,[package ...]是操作的对象。
概括了部分常用的命令包括:
自动搜索最快镜像插件: yum install yum-fastestmirror
安装yum图形窗口插件: yum install yumex
查看可能批量安装的列表: yum grouplist
1 安装
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall group1 安装程序组group1
2 更新和升级
yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包package1
yum groupupdate group1 升级程序组group1
3 查找和显示
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包
4 删除程序
yum remove | erase package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况
5 清除缓存
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers
比如,要安装游戏程序组,首先进行查找:
#:yum grouplist
可以发现,可安装的游戏程序包名字是”Games and Entertainment“,这样就可以进行安装:
#:yum groupinstall "Games and Entertainment"
所 有的游戏程序包就自动安装了。在这里Games and Entertainment的名字必须用双引号选定,因为linux下面遇到空格会认为文件名结束了,因此必须告诉系统安装的程序包的名字是“Games and Entertainment”而不是“Games"。
此外,还可以修改配置文件/etc/yum.conf选择安装源。可见yum进行配置程序有多方便了吧。
自定义YUM库实操截图:
七、源码安装Python3.6