分类 技术 下的文章

FirewallD 是 CentOS 7 服务器上默认可用的防火墙管理工具。基本上,它是 iptables 的封装,有图形配置工具 firewall-config 和命令行工具 firewall-cmd。使用 iptables 服务,每次改动都要求刷新旧规则,并且从 /etc/sysconfig/iptables 读取新规则,然而 firewalld 只应用改动了的不同部分。

FirewallD 的 区域 zone

FirewallD 使用 服务 service 区域 zone 来代替 iptables 的 规则 rule chain

默认情况下,有以下的 区域 zone 可用:

  • drop – 丢弃所有传入的网络数据包并且无回应,只有传出网络连接可用。
  • block — 拒绝所有传入网络数据包并回应一条主机禁止的 ICMP 消息,只有传出网络连接可用。
  • public — 只接受被选择的传入网络连接,用于公共区域。
  • external — 用于启用了地址伪装的外部网络,只接受选定的传入网络连接。
  • dmz — DMZ 隔离区,外部受限地访问内部网络,只接受选定的传入网络连接。
  • work — 对于处在你工作区域内的计算机,只接受被选择的传入网络连接。
  • home — 对于处在你家庭区域内的计算机,只接受被选择的传入网络连接。
  • internal — 对于处在你内部网络的计算机,只接受被选择的传入网络连接。
  • trusted — 所有网络连接都接受。

要列出所有可用的区域,运行:

# firewall-cmd --get-zones
work drop internal external trusted home dmz public block

列出默认的区域 :

# firewall-cmd --get-default-zone
public

改变默认的区域 :

# firewall-cmd --set-default-zone=dmz
# firewall-cmd --get-default-zone
dmz

FirewallD 服务

FirewallD 服务使用 XML 配置文件,记录了 firewalld 服务信息。

列出所有可用的服务:

# firewall-cmd --get-services
amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

XML 配置文件存储在 /usr/lib/firewalld/services//etc/firewalld/services/ 目录下。

用 FirewallD 配置你的防火墙

作为一个例子,假设你正在运行一个 web 服务器,SSH 服务端口为 7022 ,以及邮件服务,你可以利用 FirewallD 这样配置你的服务器:

首先设置默认区为 dmz。

# firewall-cmd --set-default-zone=dmz
# firewall-cmd --get-default-zone
dmz

为 dmz 区添加持久性的 HTTP 和 HTTPS 规则:

# firewall-cmd --zone=dmz --add-service=http --permanent
# firewall-cmd --zone=dmz --add-service=https --permanent

开启端口 25 (SMTP) 和端口 465 (SMTPS) :

firewall-cmd --zone=dmz --add-service=smtp --permanent
firewall-cmd --zone=dmz --add-service=smtps --permanent

开启 IMAP、IMAPS、POP3 和 POP3S 端口:

firewall-cmd --zone=dmz --add-service=imap --permanent
firewall-cmd --zone=dmz --add-service=imaps --permanent
firewall-cmd --zone=dmz --add-service=pop3 --permanent
firewall-cmd --zone=dmz --add-service=pop3s --permanent

因为将 SSH 端口改到了 7022,所以要移除 ssh 服务(端口 22),开启端口 7022:

firewall-cmd --remove-service=ssh --permanent
firewall-cmd --add-port=7022/tcp --permanent

要应用这些更改,我们需要重新加载防火墙:

firewall-cmd --reload

最后可以列出这些规则:

# firewall-cmd –list-all
dmz
target: default
icmp-block-inversion: no
interfaces:
sources:
services: http https imap imaps pop3 pop3s smtp smtps
ports: 7022/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:

PS. 如果你喜欢这篇文章,请在下面留下一个回复。谢谢。


via: https://www.rosehosting.com/blog/set-up-and-configure-a-firewall-with-firewalld-on-centos-7/

译者简介:

Locez 是一个喜欢技术,喜欢折腾的 Linuxer,靠着对 Linux 的兴趣自学了很多 Linux 相关的知识,并且志在于为 Linux 在中国普及出一份力。

作者:rosehosting.com 译者:Locez 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

MariaDB 是 MySQL 数据库的自由开源分支,与 MySQL 在设计思想上同出一源,在未来仍将是自由且开源的。

在这篇博文中,我将会介绍如何在当前使用最广的 RHEL/CentOS 和 Fedora 发行版上安装 MariaDB 10.1 稳定版。

目前了解到的情况是:Red Hat Enterprise Linux/CentOS 7.0 发行版已将默认的数据库从 MySQL 切换到 MariaDB。

在本文中需要注意的是,我们假定您能够在服务器中使用 root 帐号工作,或者可以使用 sudo 命令运行任何命令。

第一步:添加 MariaDB yum 仓库

1、首先在 RHEL/CentOS 和 Fedora 操作系统中添加 MariaDB 的 YUM 配置文件 MariaDB.repo 文件。

# vi /etc/yum.repos.d/MariaDB.repo

根据您操作系统版本,选择下面的相应内容添加到文件的末尾。

在 CentOS 7 中安装

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

在 RHEL 7 中安装

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/rhel7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Add MariaDB Yum Repo

添加 MariaDB YUM 仓库

第二步:在 CentOS 7 中安装 MariaDB

2、当 MariaDB 仓库地址添加好后,你可以通过下面的一行命令轻松安装 MariaDB。

# yum install MariaDB-server MariaDB-client -y

Install MariaDB in CentOS 7

在 CentOS 7 中安装 MariaDB

3、 MariaDB 包安装完毕后,立即启动数据库服务守护进程,并可以通过下面的操作设置,在操作系统重启后自动启动服务。

# systemctl start mariadb
# systemctl enable mariadb
# systemctl status mariadb

Start MariaDB Service in CentOS 7

在 CentOS 7 中启动 MariaDB 服务

第三步:在 CentOS 7 中对 MariaDB 进行安全配置

4、 现在可以通过以下操作进行安全配置:设置 MariaDB 的 root 账户密码,禁用 root 远程登录,删除测试数据库以及测试帐号,最后需要使用下面的命令重新加载权限。

# mysql_secure_installation

Secure MySQL in CentOS 7

CentOS 7 中的 MySQL 安全配置

5、 在配置完数据库的安全配置后,你可能想检查下 MariaDB 的特性,比如:版本号、默认参数列表、以及通过 MariaDB 命令行登录。如下所示:

# mysql -V
# mysqld --print-defaults
# mysql -u root -p

Verify MySQL Version

检查 MySQL 版本信息

第四步:学习 MariaDB 管理

如果你刚开始学习使用 MySQL/MariaDB,可以通过以下指南学习:

  1. 新手学习 MySQL / MariaDB(一)
  2. 新手学习 MySQL / MariaDB(二)
  3. MySQL 数据库基础管理命令(三)
  4. 20 MySQL 管理命令 Mysqladmin(四)

同样查看下面的文档学习如何优化你的 MySQL/MariaDB 服务,并使用工具监控数据库的活动情况。

  1. 15 个 MySQL/MariaDB 调优技巧
  2. 4 监控 MySQL/MariaDB 数据库的工具

文章到此就结束了,本文内容比较浅显,文中主要展示了如何在 RHEL/CentOS 和 Fefora 操作系统中安装 MariaDB 10.1 稳定版。您可以通过下面的联系方式将您遇到的任何问题或者想法发给我们。


作者简介: Aaron Kill 是 Linux 和开源软件的狂热爱好者,即将成为一名 Linux 系统管理员和网站开发工程师,现在是 TecMint 的原创作者,喜欢使用电脑工作并且热衷分享知识。


via: http://www.tecmint.com/install-mariadb-in-centos-7/

作者:Aaron Kili 译者:beyondworld 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

在这篇文章中,我将展示如何在 CentOS/RHEL 7、Debian 以及它的衍生版本比如 Ubuntu(最新的 Ubuntu 16.04 LTS 版本已经安装了最新的 Python 版本)或 Linux Mint 上安装和使用 Python 3.x 。我们的重点是安装可用于命令行的核心语言工具。

然后,我们也会阐述如何安装 Python IDLE - 一个基于 GUI 的工具,它允许我们运行 Python 代码和创建独立函数。

在 Linux 中安装 Python 3.6

在我写这篇文章的时候(2017 年三月中旬),在 CentOS 和 Debian 8 中可用的最新 Python 版本分别是 Python 3.4 和 Python 3.5 。

虽然我们可以使用 yumaptitude(或 apt-get)安装核心安装包以及它们的依赖,但在这儿,我将阐述如何使用源代码进行安装。

为什么?理由很简单:这样我们能够获取语言的最新的稳定发行版(3.6),并且提供了一种和 Linux 版本无关的安装方法。

在 CentOS 7 中安装 Python 之前,请确保系统中已经有了所有必要的开发依赖:

# yum -y groupinstall development
# yum -y install zlib-devel

在 Debian 中,我们需要安装 gcc、make 和 zlib 压缩/解压缩库:

# aptitude -y install gcc make zlib1g-dev

运行下面的命令来安装 Python 3.6:

# wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
# tar xJf Python-3.6.0.tar.xz
# cd Python-3.6.0
# ./configure
# make && make install

现在,放松一下,或者饿的话去吃个三明治,因为这可能需要花费一些时间。安装完成以后,使用 which 命令来查看主要二进制代码的位置:

# which python3
# python3 -V

上面的命令的输出应该和这相似:

Check Python Version in Linux

查看 Linux 系统中的 Python 版本

要退出 Python 提示符,只需输入:

quit()
或
exit()

然后按回车键。

恭喜!Python 3.6 已经安装在你的系统上了。

在 Linux 中安装 Python IDLE

Python IDLE 是一个基于 GUI 的 Python 工具。如果你想安装 Python IDLE,请安装叫做 idle(Debian)或 python-tools(CentOS)的包:

# apt-get install idle       [On Debian]
# yum install python-tools   [On CentOS]

输入下面的命令启动 Python IDLE:

# idle

总结

在这篇文章中,我们阐述了如何从源代码安装最新的 Python 稳定版本。

最后但不是不重要,如果你之前使用 Python 2,那么你可能需要看一下 从 Python 2 迁移到 Python 3 的官方文档。这是一个可以读入 Python 2 代码,然后转化为有效的 Python 3 代码的程序。

你有任何关于这篇文章的问题或想法吗?请使用下面的评论栏与我们联系


作者简介:

Gabriel Cánepa - 一位来自 阿根廷圣路易斯梅塞德斯镇 Villa Mercedes, San Luis, Argentina 的 GNU/Linux 系统管理员,Web 开发者。就职于一家世界领先级的消费品公司,乐于在每天的工作中能使用 FOSS 工具来提高生产力。


via: http://www.tecmint.com/install-python-in-linux/

作者:Gabriel Cánepa 译者:ucasFL 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

AWS(Amazon Web Services)是全球领先的云服务器提供商之一。你可以使用 AWS 平台在一分钟内设置完服务器。在 AWS 上,你可以微调服务器的许多技术细节,如 CPU 数量,内存和磁盘空间,磁盘类型(更快的 SSD 或者经典的 IDE)等。关于 AWS 最好的一点是,你只需要为你使用到的服务付费。在开始之前,AWS 提供了一个名为 “Free Tier” 的特殊帐户,你可以免费使用一年的 AWS 技术服务,但会有一些小限制,例如,你每个月使用服务器时长不能超过 750 小时,超过这个他们就会向你收费。你可以在 aws 官网上查看所有相关的规则。

因为我的这篇文章是关于在 AWS 上创建 Linux 服务器,因此拥有 “Free Tier” 帐户是先决条件。要注册帐户,你可以使用此链接。请注意,你需要在创建帐户时输入信用卡详细信息。

让我们假设你已经创建了 “Free Tier” 帐户。

在继续之前,你必须了解 AWS 中的一些术语以了解设置:

  1. EC2(弹性计算云):此术语用于虚拟机。
  2. AMI(Amazon 机器镜像):表示操作系统实例。
  3. EBS(弹性块存储):AWS 中的一种存储环境类型。

通过以下链接登录 AWS 控制台:https://console.aws.amazon.com/

AWS 控制台将如下所示:

Amazon AWS console

在 AWS 中设置 Linux VM

1、 创建一个 EC2(虚拟机)实例:在开始安装系统之前,你必须在 AWS 中创建一台虚拟机。要创建虚拟机,在“ 计算 compute ”菜单下点击 EC2:

Create an EC2 instance

2、 现在在 创建实例 Create instance 下点击 “启动实例” Launch Instance 按钮。

Launch the EC2 instance

3、 现在,当你使用的是一个 “Free Tier” 帐号,接着最好选择 “Free Tier” 单选按钮以便 AWS 可以过滤出可以免费使用的实例。这可以让你不用为使用 AWS 的资源而付费。

Select Free Tier instances only

4、 要继续操作,请选择以下选项:

a、 在经典实例向导中选择一个 AMI(Amazon Machine Image),然后选择使用 Red Hat Enterprise Linux 7.2(HVM),SSD 存储

b、 选择 “t2.micro” 作为实例详细信息。

c、 配置实例详细信息:不要更改任何内容,只需单击下一步。

d、 添加存储:不要更改任何内容,只需点击下一步,因为此时我们将使用默认的 10(GiB)硬盘。

e、 添加标签:不要更改任何内容只需点击下一步。

f、 配置安全组:现在选择用于 ssh 的 22 端口,以便你可以在任何地方访问此服务器。

Configure AWS server

g、 选择“ 查看并启动 Review and Launch ”按钮。

h、 如果所有的详情都无误,点击 “ 启动 Launch ”按钮。

i、 单击“ 启动 Launch ”按钮后,系统会像下面那样弹出一个窗口以创建“密钥对”:选择选项“ 创建密钥对 create a new key pair ”,并给密钥对起个名字,然后下载下来。在使用 ssh 连接到服务器时,需要此密钥对。最后,单击“ 启动实例 Launch Instance ”按钮。

Create Key pair

j、 点击“ 启动实例 Launch Instance ”按钮后,转到左上角的服务。选择“ 计算 compute ”--> “EC2”。现在点击“ 运行实例 Running Instances ”:

Go to the running EC2 instance

k、 现在你可以看到,你的新 VM 的状态是 “ 运行中 running ”。选择实例,请记下登录到服务器所需的 “ 公开 DNS 名称 Public DNS ”。

Public DNS value of the VM

现在你已完成创建一台运行 Linux 的 VM。要连接到服务器,请按照以下步骤操作。

从 Windows 中连接到 EC2 实例

1、 首先,你需要有 putty gen 和 Putty exe 用于从 Windows 连接到服务器(或 Linux 上的 SSH 命令)。你可以通过下面的链接下载 putty。

2、 现在打开 putty gen :puttygen.exe

3、 你需要单击 “Load” 按钮,浏览并选择你从亚马逊上面下载的密钥对文件(pem 文件)。

4、 你需要选择 “ssh2-RSA” 选项,然后单击保存私钥按钮。请在下一个弹出窗口中选择 “yes”。

5、 将文件以扩展名 .ppk 保存。

6、 现在你需要打开 putty.exe。在左侧菜单中点击 “connect”,然后选择 “SSH”,然后选择 “Auth”。你需要单击浏览按钮来选择我们在步骤 4 中创建的 .ppk 文件。

7、 现在点击 “session” 菜单,并在“host name” 中粘贴在本教程中 “k” 步骤中的 DNS 值,然后点击 “open” 按钮。

8、 在要求用户名和密码时,输入 ec2-user 和空白密码,然后输入下面的命令。

$ sudo su - 

哈哈,你现在是在 AWS 云上托管的 Linux 服务器上的主人啦。

Logged in to AWS EC2 server


via: https://www.howtoforge.com/tutorial/how-to-setup-linux-server-with-aws/

作者:MANMOHAN MIRKAR 译者:geekpi 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

虽然有些人使用 Linux 来表示整个操作系统,但要注意的是,严格地来说,Linux 只是个内核。另一方面,发行版是一个完整功能的系统,它建立在内核之上,具有各种各样的应用程序工具和库。

在正常操作期间,内核负责执行两个重要任务:

  1. 作为硬件和系统上运行的软件之间的接口。
  2. 尽可能高效地管理系统资源。

为此,内核通过内置的驱动程序或以后可作为模块安装的驱动程序与硬件通信。

例如,当你计算机上运行的程序想要连接到无线网络时,它会将该请求提交给内核,后者又会使用正确的驱动程序连接到网络。

随着新的设备和技术定期出来,如果我们想充分利用它们,保持最新的内核就很重要。此外,更新内核将帮助我们利用新的内核函数,并保护自己免受先前版本中发现的漏洞的攻击。

准备好了在 CentOS 7 或其衍生产品(如 RHEL 7和 Fedora)上更新内核了么?如果是这样,请继续阅读!

步骤 1:检查已安装的内核版本

让我们安装了一个发行版,它包含了一个特定版本的内核。为了展示当前系统中已安装的版本,我们可以:

# uname -sr

下面的图片展示了在一台 CentOS 7 服务器上的输出信息:

Check Kernel Version in CentOS 7

在 CentOS 7 上检查内核版本

如果我们现在进入 https://www.kernel.org/,在撰写本文时,我们看到最新的内核版本是4.10.1(其他版本可以从同一网站获得)。

还要考虑的一个重要的事情是内核版本的生命周期 - 如果你当前使用的版本接近它的生命周期结束,那么在该日期后将不会提供更多的 bug 修复。关于更多信息,请参阅内核发布页。

步骤 2:在 CentOS 7 中升级内核

大多数现代发行版提供了一种使用 yum 等包管理系统和官方支持的仓库升级内核的方法。

但是,这只会升级内核到仓库中可用的最新版本 - 而不是在 https://www.kernel.org/ 中可用的最新版本。不幸的是,Red Hat 只允许使用前者升级内核。

与 Red Hat 不同,CentOS 允许使用 ELRepo,这是一个第三方仓库,可以将内核升级到最新版本。

要在 CentOS 7 上启用 ELRepo 仓库,请运行:

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

Enable ELRepo in CentOS 7

在 CentOS 7 启用 ELRepo

仓库启用后,你可以使用下面的命令列出可用的内核相关包:

# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

Yum - Find Available Kernel Versions

yum - 找出可用的内核版本

接下来,安装最新的主线稳定内核:

# yum --enablerepo=elrepo-kernel install kernel-ml

Install Latest Kernel Version in CentOS 7

在 CentOS 7 中安装最新的内核版本

最后,重启机器并应用最新内核,接着运行下面的命令检查最新内核版本:

uname -sr

Verify Kernel Version

验证内核版本

步骤 3:设置 GRUB 默认的内核版本

为了让新安装的内核成为默认启动选项,你需要如下修改 GRUB 配置:

打开并编辑 /etc/default/grub 并设置 GRUB_DEFAULT=0。意思是 GRUB 初始化页面的第一个内核将作为默认内核。

GRUB_TIMEOUT=5
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

接下来运行下面的命令来重新创建内核配置。

# grub2-mkconfig -o /boot/grub2/grub.cfg

Set Kernel in GRUB

在 GRUB 中设置内核

重启并验证最新的内核已作为默认内核。

Booting Default Kernel Version in CentOS 7

在 CentOS 7 中启动默认内核版本

恭喜你!你已经在 CentOS 7 中升级内核了!

总结

在本文中,我们解释了如何轻松升级系统上的 Linux 内核。我们还没讲到另外一个方法,因为它涉及从源代码编译内核,这可以写成一本书,并且不推荐在生产系统上这么做。

虽然它是最好的学习体验之一,并且允许细粒度配置内核,但是你可能会让你的系统不可用,并且可能必须从头重新安装它。

如果你仍然有兴趣构建内核作为学习经验,你可以在 Kernel Newbies页面中获得指导。

一如既往,如果你对本文有任何问题或意见,请随时使用下面的评论栏。


作者简介:

我是一个计算机上瘾的家伙,并且是开源和 Linux 系统软件的粉丝,有大约 4 年的 Linux 发行版桌面、服务器和 bash 脚本的经验。


via: http://www.tecmint.com/install-upgrade-kernel-version-in-centos-7/

作者:Matei Cezar 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我们都知道, IT 基础设施方面的大多数服务器(包括世界顶级的超级计算机)都运行在 Linux 平台上,因为和其他操作系统相比, Linux 更加灵活。有的操作系统对于一些微乎其微的改动和补丁更新都需要重启,但是 Linux 不需要,只有对于一些关键补丁的更新, Linux 才会需要重启。

Linux 系统管理员面临的一大挑战是如何在没有任何停机时间的情况下维护系统的良好运行。管理内存使用是 Linux 管理员又一个具有挑战性的任务。free 是 Linux 中一个标准的并且被广泛使用的命令,它被用来分析内存统计(空闲和已用)。今天,我们将要讨论 free 命令以及它的一些有用选项。

推荐文章:

Free 命令是什么

free 命令能够显示系统中物理上的 空闲 free 已用 used 内存,还有 交换 swap 内存,同时,也能显示被内核使用的 缓冲 buffers 缓存 caches 。这些信息是通过解析文件 /proc/meminfo 而收集到的。

显示系统内存

不带任何选项运行 free 命令会显示系统内存,包括 空闲 free 已用 used 交换 swap 缓冲 buffers 缓存 cached 交换 swap 的内存总数。

# free
             total       used       free     shared    buffers     cached
Mem:      32869744   25434276    7435468          0     412032   23361716
-/+ buffers/cache:    1660528   31209216
Swap:      4095992          0    4095992

输出有三行:

  • 第一行:表明全部内存、已用内存、空闲内存、共用内存(主要被 tmpfs(/proc/meminfo 中的 Shmem 项)使用)、用于缓冲的内存以及缓存内容大小。

    • 全部:全部已安装内存(/proc/meminfo 中的 MemTotal 项)
    • 已用:已用内存(全部计算 - 空闲+缓冲+缓存)
    • 空闲:未使用内存(/proc/meminfo 中的 MemFree 项)
    • 共用:主要被 tmpfs 使用的内存(/proc/meminfo 中的 Shmem 项)
    • 缓冲:被内核缓冲使用的内存(/proc/meminfo 中的 Buffers 项)
    • 缓存:被页面缓存和 slab 使用的内存(/proc/meminfo 中的 CachedSSReclaimable 项)
  • 第二行:表明已用和空闲的缓冲/缓存
  • 第三行:表明总交换内存(/proc/meminfo 中的 SwapTotal 项)、空闲内存(/proc/meminfo 中的 SwapFree 项)和已用交换内存。

以 MB 为单位显示系统内存

默认情况下, free 命令以 KB - Kilobytes 为单位输出系统内存,这对于绝大多数管理员来说会有一点迷糊(当系统内存很大的时候,我们中的许多人需要把输出转化为以 MB 为单位,从而才能够理解内存大小)。为了避免这个迷惑,我们在 free 命令后面加上 -m 选项,就可以立即得到以 MB - Megabytes为单位的输出。

# free -m
             total       used       free     shared    buffers     cached
Mem:         32099      24838       7261          0        402      22814
-/+ buffers/cache:       1621      30477
Swap:         3999          0       3999

如何从上面的输出中检查剩余多少空闲内存?主要基于 已用 used 空闲 free 两列。你可能在想,你只有很低的空闲内存,因为它只有 10%, 为什么?

  • 全部实际可用内存 = (全部内存 - 第 2 行的已用内存)

    • 全部内存 = 32099
    • 实际已用内存 = 1621 ( = 全部内存 - 缓冲 - 缓存)
  • 全部实际可用内存 = 30477

如果你的 Linux 版本是最新的,那么有一个查看实际空闲内存的选项,叫做 可用 available ,对于旧的版本,请看显示 -/+ buffers/cache 那一行对应的空闲(free)一列。

如何从上面的输出中检查有多少实际已用内存?基于 已用 used 空闲 free 一列。你可能想,你已经使用了超过 95% 的内存。

  • 全部实际已用内存 = 第一列已用 - (第一列缓冲 + 第一列缓存)

    • 已用内存 = 24838
    • 已用缓冲 = 402
    • 已用缓存 = 22814
  • 全部实际已用内存 = 1621

以 GB 为单位显示内存

默认情况下, free 命令会以 KB - kilobytes 为单位显示输出,这对于大多数管理员来说会有一些迷惑,所以我们使用上面的选项来获得以 MB - Megabytes 为单位的输出。但是,当服务器的内存很大(超过 100 GB 或 200 GB)时,上面的选项也会让人很迷惑。所以,在这个时候,我们可以在 free 命令后面加上 -g 选项,从而立即得到以 GB - Gigabytes 为单位的输出。

# free -g
             total       used       free     shared    buffers     cached
Mem:            31         24          7          0          0         22
-/+ buffers/cache:          1         29
Swap:            3          0          3

显示全部内存行

默认情况下, free 命令的输出只有三行(内存、缓冲/缓存以及交换)。为了统一以单独一行显示(全部(内存+交换)、已用(内存+(已用-缓冲/缓存)+交换)以及空闲(内存+(已用-缓冲/缓存)+交换),在 ‘free’ 命令后面加上 -t 选项。

# free -t
             total       used       free     shared    buffers     cached
Mem:      32869744   25434276    7435468          0     412032   23361716
-/+ buffers/cache:    1660528   31209216
Swap:      4095992          0    4095992
Total:    36965736   27094804   42740676

按延迟运行 free 命令以便更好的统计

默认情况下, free 命令只会显示一次统计输出,这是不足够进一步排除故障的,所以,可以通过添加延迟(延迟是指在几秒后再次更新)来定期统计内存活动。如果你想以两秒的延迟运行 free 命令,可以使用下面的命令(如果你想要更多的延迟,你可以按照你的意愿更改数值)。

下面的命令将会每 2 秒运行一次直到你退出:

# free -s 2
             total       used       free     shared    buffers     cached
Mem:      32849392   25935844    6913548        188     182424   24632796
-/+ buffers/cache:    1120624   31728768
Swap:     20970492          0   20970492

             total       used       free     shared    buffers     cached
Mem:      32849392   25935288    6914104        188     182424   24632796
-/+ buffers/cache:    1120068   31729324
Swap:     20970492          0   20970492

             total       used       free     shared    buffers     cached
Mem:      32849392   25934968    6914424        188     182424   24632796
-/+ buffers/cache:    1119748   31729644
Swap:     20970492          0   20970492

按延迟和具体次数运行 free 命令

另外,你可以按延迟和具体次数运行 free 命令,一旦达到某个次数,便自动退出。

下面的命令将会每 2 秒运行一次 free 命令,计数 5 次以后自动退出。

# free -s 2 -c 5
             total       used       free     shared    buffers     cached
Mem:      32849392   25931052    6918340        188     182424   24632796
-/+ buffers/cache:    1115832   31733560
Swap:     20970492          0   20970492

             total       used       free     shared    buffers     cached
Mem:      32849392   25931192    6918200        188     182424   24632796
-/+ buffers/cache:    1115972   31733420
Swap:     20970492          0   20970492

             total       used       free     shared    buffers     cached
Mem:      32849392   25931348    6918044        188     182424   24632796
-/+ buffers/cache:    1116128   31733264
Swap:     20970492          0   20970492

             total       used       free     shared    buffers     cached
Mem:      32849392   25931316    6918076        188     182424   24632796
-/+ buffers/cache:    1116096   31733296
Swap:     20970492          0   20970492

             total       used       free     shared    buffers     cached
Mem:      32849392   25931308    6918084        188     182424   24632796
-/+ buffers/cache:    1116088   31733304
Swap:     20970492          0   20970492

人类可读格式

为了以人类可读的格式输出,在 free 命令的后面加上 -h 选项,和其他选项比如 -m-g 相比,这将会更人性化输出(自动使用 GB 和 MB 单位)。

# free -h
              total        used        free      shared  buff/cache   available
Mem:           2.0G        1.6G        138M         20M        188M        161M
Swap:          2.0G        1.8G        249M

取消缓冲区和缓存内存输出

默认情况下,缓冲/缓存内存是同时输出的。为了取消缓冲和缓存内存的输出,可以在 free 命令后面加上 -w 选项。(该选项在版本 3.3.12 上可用)

注意比较上面有缓冲/缓存的输出。

# free -wh
              total        used        free      shared     buffers       cache   available
Mem:           2.0G        1.6G        137M         20M        8.1M        183M        163M
Swap:          2.0G        1.8G        249M

显示最低和最高的内存统计

默认情况下, free 命令不会显示最低和最高的内存统计。为了显示最低和最高的内存统计,在 free 命令后面加上 -l 选项。

# free -l
             total       used       free     shared    buffers     cached
Mem:      32849392   25931336    6918056        188     182424   24632808
Low:      32849392   25931336    6918056
High:            0          0          0
-/+ buffers/cache:    1116104   31733288
Swap:     20970492          0   20970492

阅读关于 free 命令的更过信息

如果你想了解 free 命令的更多可用选项,只需查看其 man 手册

# free --help
or
# man free

via: http://www.2daygeek.com/free-command-to-check-memory-usage-statistics-in-linux/

作者:MAGESH MARUTHAMUTHU 译者:ucasFL 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出