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库实操截图:

    

wKiom1jLzsGTeJPsAAAMvQA_X2M408.png-wh_50

wKioL1jLzsLSn8mRAAB0XEW-H5w228.png-wh_50

wKiom1jLzsLSv8DCAABvv7DuBGo313.png-wh_50

wKioL1jLzsKSx60NAAAq-ssqo0M779.png-wh_50

wKiom1jLzsOxWGNGAABbv2LAusg686.png-wh_50

七、源码安装Python3.6

    wKiom1jL0ACSxgEDAADQxwEmZZs082.png-wh_50

wKioL1jL0BLR2sa8AAAsZ48eZE4256.png-wh_50

wKiom1jL0BOgpqxrAADiaYpLEZE191.png-wh_50

wKioL1jL0BXhqP5PAAD3pwRfTCA704.png-wh_50

wKiom1jL0BeTV1qTAADT5wYXboo652.png-wh_50

wKiom1jL0Bfyi3uaAAA8FeLTwDY016.png-wh_50

wKioL1jL0BeD6t8mAAA_lvrQ3gU709.png-wh_50