MAGESH MARUTHAMUTHU 发布的文章

Arch Linux 是一款 Linux 发行版,主要由针对 x86-64 微处理器计算机的二进制软件包组成。Arch Linux 使用的是滚动发布模型,这种模式会频繁的给应用程序交付更新。它使用名为 pacman 的软件包管理器,可以用来安装、删除和更新软件包。

由于 Arch Linux 是为有经验的用户构建的,建议新手在使用过其他 Linux 后再来尝试。

什么是 AUR(Arch 用户软件仓库)?

Arch 用户软件仓库 通常称为 AUR,是给 Arch 用户的基于社区的软件存储库。

根据软件包在 AUR 社区的流行程度,用户编译的软件包会进入到 Arch 的官方存储库。

什么是 AUR 助手?

AUR 助手是一个包装程序,允许用户从 AUR 存储库安装软件包,而无需手动干预。

很多用例实现了自动化,比如包搜索、解决依赖关系、检索和构建 AUR 包、Web 内容检索和 AUR 包提交之类。

以下列出了 6 种最佳的 AUR 助手:

  • Yay(Yet another Yogurt)
  • Pakku
  • Pacaur
  • Pikaur
  • Trizen
  • Aura

1)Yay(Yet another Yogurt)

Yay 是 Arch Linux 下基于 CLI 的最佳 AUR 助手,使用 Go 语言编写。Yay 是基于 yaourt、apacman 和 pacaur 设计的。

这是最合适推荐给新手的 AUR 助手。类似于 Pacman,其使用方法和 pacman 中的命令和选项很相似,可以让用户在搜索过程中找到匹配的软件包提供程序,并进行选择。

如何安装 yay

依次运行以下命令以在 Arch Linux 系统上安装。

$ sudo pacman -S git go base-devel
$ git clone https://aur.archlinux.org/yay.git
$ cd yay
$ makepkg -si

如何使用 yay

yay 语法与 pacman 相同,使用以下命令安装软件包。

$ yay -s arch-wiki-man

2)Pakku

Pakku 可以被视为一个初始阶段的 Pacman。它是一个包装程序,可以让用户从 AUR 中搜索或安装软件包。

它在删除依赖项方面做得不错,并且还允许通过克隆 PKGBUILD 来安装软件包。

如何安装 Pakku

要在 Arch Linux 的系统上安装 Pakku,请依次运行以下命令。

$ sudo pacman -S git base-devel
$ git clone https://aur.archlinux.org/pakku.git
$ cd pakku
$ makepkg -si

如何使用 Pakku

pakku 语法与 pacman 相同,使用以下命令安装软件包。

$ pakku -s dropbox

3)Pacaur

另一个基于 CLI 的 AUR 助手,可帮助减少用户与提示符的交互。

Pacaur 专为倾向于自动化重复任务的高级用户而设计。用户需要熟悉 makepkg 及其配置的 AUR 手动构建过程。

如何安装 Pacaur

要在 Arch Linux 的系统上安装 Pakku,请依次运行以下命令。

$ sudo pacman -S git base-devel
$ git clone https://aur.archlinux.org/pacaur.git
$ cd pacaur
$ makepkg -si

如何使用 Pacaur

pacaur 语法与 pacman 相同,使用以下命令安装软件包。

$ pacaur -s spotify

4)Pikaur

Pikaur 是具有最小依赖性的 AUR 助手,可以一次查看所有 PKGBUILD,无需用户交互即可全部构建。

Pikaur 将通过控制 pacman 命令来告知 Pacman 要执行的下一个步骤。

如何安装 Pikaur

要在 Arch Linux 的系统上安装 Pakku,请依次运行以下命令。

$ sudo pacman -S git base-devel
$ git clone https://aur.archlinux.org/pikaur.git
$ cd pikaur
$ makepkg -fsri

如何使用 Pikaur

pikaur 语法与 pacman 相同,使用以下命令安装软件包。

$ pacaur -s spotify

5)Trizen

Trizen 是用 Perl 编写的基于命令行的 AUR 轻量级包装器。这个面向速度的 AUR 助手,它允许用户搜索、安装软件包,还允许阅读 AUR 软件包注释。

支持编辑文本文件,并且输入/输出使用 UTF-8。内置与 pacman 的交互功能。

如何安装 Trizen

要在 Arch Linux 的系统上安装 Trizen,请依次运行以下命令。

$ sudo pacman -S git base-devel
$ git clone https://aur.archlinux.org/trizen.git
$ cd trizen
$ makepkg -si

如何使用 Trizen

trizen 语法与 pacman 相同,使用以下命令安装软件包。

$ pacaur -s google-chrome

6)Aura

Aura 是用 Haskell 编写的,是用于 Arch Linux 和 AUR 的安全的多语言包管理器。它支持许多Pacman 操作和子选项,可轻松进行开发并编写精美的代码。

它可以自动从 AUR 安装软件包。使用 Aura 时,用户通常会在系统升级方面遇到一些困难。

如何安装 Aura

要在 Arch Linux 的系统上安装 Pakku,请依次运行以下命令。

$ sudo pacman -S git base-devel
$ git clone https://aur.archlinux.org/aura.git
$ cd aura
$ makepkg -si

如何使用 Aura

aura 语法与 pacman 相同,使用以下命令安装软件包。

$ pacaur -s android-sdk

结论

用户可以凭借这些分析在上述 6 个 AUR 助手中进行选择。


via: https://www.2daygeek.com/best-aur-arch-user-repository-helpers-arch-linux-manjaro/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:hkurj 校对:wxy

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

有时,由于某些应用依赖性,你可能会意外更新不想更新的软件包。这在全系统更新或自动包升级时经常会发生。如果发生这种情况,可能会破坏应用的功能。这会造成严重的问题,你需要花费大量时间来解决问题。

如何避免这种情况?如何从 apt-get 更新中排除软件包?

如果你要从 Yum Update 中排除特定软件包,请参考这篇。

是的,可以在 Debian 和 Ubuntu 系统上使用以下三种方法来完成。

我们将分别详细展示。

方法 1:如何使用 apt-mark 命令排除 Debian/Ubuntu 系统上的软件包更新

apt-mark 用于将软件包标记/取消标记为自动安装。

hold 选项用于将软件包标记为保留,以防止软件包被自动安装、升级或删除。

unhold 选项用于取消先前面的设置,以允许重复执行所有操作。

运行以下命令以使用 apt-mark 命令保留指定的软件包。

$ sudo apt-mark hold nano
nano set on hold.

保留软件包后,请运行以下 apt-mark 命令查看它们。

$ sudo apt-mark showhold
nano

这表明在执行完整的系统更新时,不会升级 nano 包。

$ sudo apt update

Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following packages have been kept back:
  nano
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

运行以下命令,使用 apt-mark 命令取消保留 nano 包。

$ sudo apt-mark unhold nano
Canceled hold on nano.

方法 2:如何使用 dpkg 命令在 Debian/Ubuntu 系统上排除软件包更新

dpkg 命令是一个 CLI 工具,用于安装、构建、删除和管理 Debian 软件包。dpkg 的主要且更用户友好的前端是 aptitude

运行以下命令使用 dpkg 命令阻止给定的软件包。

语法:

$ echo "package_name hold" | sudo dpkg --set-selections

运行以下 dpkg 命令以保留 apache2 包。

$ echo "apache2 hold" | sudo dpkg --set-selections

保留软件包后,请运行以下命令查看它们。

$ sudo dpkg --get-selections | grep "hold"
apache2                        hold

它会显示在执行完整的系统更新时,不会升级 apache2包。

$ sudo apt update

Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following packages have been kept back:
  apache2
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

运行以下命令,使用 dpkg 命令取消对指定软件包的保留。

语法:

$ echo "package_name install" | sudo dpkg --set-selections

运行以下命令,使用 dpkg 命令取消保留 apache2 包。

$ echo "apache2 install" | sudo dpkg --set-selections

方法 3:如何使用 aptitude 命令排除 Debian/Ubuntu 系统上的软件包更新

aptitude 命令是 Debian 及其衍生版本的基于文​​本的软件包管理界面。

它允许用户查看软件包列表并执行软件包管理任务,例如安装、升级和删除软件包。它可以从可视界面或命令行执行操作。

运行以下命令,使用 aptitude 命令保留指定的软件包。

$ sudo aptitude hold python3

保留某些软件包后,请运行以下命令查看它们。

$ sudo dpkg --get-selections | grep "hold"
或者
$ sudo apt-mark showhold

python3

这表明在执行完整的系统更新时,不会升级 python3 软件包。

$ sudo apt update

Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following packages have been kept back:
  python3
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

使用 aptitude 命令运行以下命令以解除对 python3 软件包的保留。

$ sudo aptitude unhold python3

via: https://www.2daygeek.com/debian-ubuntu-exclude-hold-prevent-packages-from-apt-get-upgrade/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy

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

Linux 并不像 Windows,你经常不会有图形界面可供使用,特别是在服务器环境中。

作为一名 Linux 管理员,知道如何获取当前可用的和已经使用的资源情况,比如内存、CPU、磁盘等,是相当重要的。如果某一应用在你的系统上占用了太多的资源,导致你的系统无法达到最优状态,那么你需要找到并修正它。

如果你想找到消耗内存前十名的进程,你需要去阅读这篇文章:如何在 Linux 中找出内存消耗最大的进程

在 Linux 中,命令能做任何事,所以使用相关命令吧。在这篇教程中,我们将会给你展示 8 个有用的命令来即查看在 Linux 系统中内存的使用情况,包括 RAM 和交换分区。

创建交换分区在 Linux 系统中是非常重要的,如果你想了解如何创建,可以去阅读这篇文章:在 Linux 系统上创建交换分区

下面的命令可以帮助你以不同的方式查看 Linux 内存使用情况。

  • free 命令
  • /proc/meminfo 文件
  • vmstat 命令
  • ps_mem 命令
  • smem 命令
  • top 命令
  • htop 命令
  • glances 命令

1)如何使用 free 命令查看 Linux 内存使用情况

free 命令 是被 Linux 管理员广泛使用的主要命令。但是它提供的信息比 /proc/meminfo 文件少。

free 命令会分别展示物理内存和交换分区内存中已使用的和未使用的数量,以及内核使用的缓冲区和缓存。

这些信息都是从 /proc/meminfo 文件中获取的。

# free -m
              total        used        free      shared  buff/cache   available
Mem:          15867        9199        1702        3315        4965        3039
Swap:         17454         666       16788
  • total:总的内存量
  • used:被当前运行中的进程使用的内存量(used = totalfreebuff/cache
  • free: 未被使用的内存量(free = totalusedbuff/cache
  • shared: 在两个或多个进程之间共享的内存量
  • buffers: 内存中保留用于内核记录进程队列请求的内存量
  • cache: 在 RAM 中存储最近使用过的文件的页缓冲大小
  • buff/cache: 缓冲区和缓存总的使用内存量
  • available: 可用于启动新应用的可用内存量(不含交换分区)

2) 如何使用 /proc/meminfo 文件查看 Linux 内存使用情况

/proc/meminfo 文件是一个包含了多种内存使用的实时信息的虚拟文件。它展示内存状态单位使用的是 kB,其中大部分属性都难以理解。然而它也包含了内存使用情况的有用信息。

# cat /proc/meminfo

MemTotal:       16248572 kB
MemFree:         1764576 kB
MemAvailable:    3136604 kB
Buffers:          234132 kB
Cached:          4731288 kB
SwapCached:        28516 kB
Active:          9004412 kB
Inactive:        3552416 kB
Active(anon):    8094128 kB
Inactive(anon):  2896064 kB
Active(file):     910284 kB
Inactive(file):   656352 kB
Unevictable:          80 kB
Mlocked:              80 kB
SwapTotal:      17873388 kB
SwapFree:       17191328 kB
Dirty:               252 kB
Writeback:             0 kB
AnonPages:       7566736 kB
Mapped:          3692368 kB
Shmem:           3398784 kB
Slab:             278976 kB
SReclaimable:     125480 kB
SUnreclaim:       153496 kB
KernelStack:       23936 kB
PageTables:        73880 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    25997672 kB
Committed_AS:   24816804 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
Percpu:             3392 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:     1059088 kB
DirectMap2M:    14493696 kB
DirectMap1G:     2097152 kB

3) 如何使用 vmstat 命令查看 Linux 内存使用情况

vmstat 命令 是另一个报告虚拟内存统计信息的有用工具。

vmstat 报告的信息包括:进程、内存、页面映射、块 I/O、陷阱、磁盘和 CPU 特性信息。vmstat 不需要特殊的权限,并且它可以帮助诊断系统瓶颈。

# vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 682060 1769324 234188 4853500  0    3    25    91   31   16 34 13 52  0  0

如果你想详细了解每一项的含义,阅读下面的描述。

  • procs:进程

    • r: 可以运行的进程数目(正在运行或等待运行)
    • b: 处于不可中断睡眠中的进程数目
  • memory:内存

    • swpd: 使用的虚拟内存数量
    • free: 空闲的内存数量
    • buff: 用作缓冲区内存的数量
    • cache: 用作缓存内存的数量
    • inact: 不活动的内存数量(使用 -a 选项)
    • active: 活动的内存数量(使用 -a 选项)
  • Swap:交换分区

    • si: 每秒从磁盘交换的内存数量
    • so: 每秒交换到磁盘的内存数量
  • IO:输入输出

    • bi: 从一个块设备中收到的块(块/秒)
    • bo: 发送到一个块设备的块(块/秒)
  • System:系统

    • in: 每秒的中断次数,包括时钟。
    • cs: 每秒的上下文切换次数。
  • CPU:下面这些是在总的 CPU 时间占的百分比

    • us: 花费在非内核代码上的时间占比(包括用户时间,调度时间)
    • sy: 花费在内核代码上的时间占比 (系统时间)
    • id: 花费在闲置的时间占比。在 Linux 2.5.41 之前,包括 I/O 等待时间
    • wa: 花费在 I/O 等待上的时间占比。在 Linux 2.5.41 之前,包括在空闲时间中
    • st: 被虚拟机偷走的时间占比。在 Linux 2.6.11 之前,这部分称为 unknown

运行下面的命令查看详细的信息。

# vmstat -s

        16248580 K total memory
         2210256 K used memory
         2311820 K active memory
         2153352 K inactive memory
        11368812 K free memory
          107584 K buffer memory
         2561928 K swap cache
        17873388 K total swap
               0 K used swap
        17873388 K free swap
           44309 non-nice user cpu ticks
             164 nice user cpu ticks
           14332 system cpu ticks
          382418 idle cpu ticks
            1248 IO-wait cpu ticks
            1407 IRQ cpu ticks
            2147 softirq cpu ticks
               0 stolen cpu ticks
         1022437 pages paged in
          260296 pages paged out
               0 pages swapped in
               0 pages swapped out
         1424838 interrupts
         4979524 CPU context switches
      1577163147 boot time
            3318 forks

4) 如何使用 ps\_mem 命令查看 Linux 内存使用情况

ps\_mem 是一个用来查看当前内存使用情况的简单的 Python 脚本。该工具可以确定每个程序使用了多少内存(不是每个进程)。

该工具采用如下的方法计算每个程序使用内存:总的使用 = 程序进程私有的内存 + 程序进程共享的内存。

计算共享内存是存在不足之处的,该工具可以为运行中的内核自动选择最准确的方法。

# ps_mem

 Private  +   Shared  =  RAM used    Program
180.0 KiB +  30.0 KiB = 210.0 KiB    xf86-video-intel-backlight-helper (2)
192.0 KiB +  66.0 KiB = 258.0 KiB    cat (2)
312.0 KiB +  38.5 KiB = 350.5 KiB    lvmetad
380.0 KiB +  25.5 KiB = 405.5 KiB    crond
392.0 KiB +  32.5 KiB = 424.5 KiB    rtkit-daemon
852.0 KiB + 117.0 KiB = 969.0 KiB    gnome-session-ctl (2)
928.0 KiB +  56.5 KiB = 984.5 KiB    gvfs-mtp-volume-monitor
  1.0 MiB +  42.5 KiB =   1.0 MiB    dconf-service
  1.0 MiB + 106.5 KiB =   1.1 MiB    gvfs-goa-volume-monitor
  1.0 MiB + 180.5 KiB =   1.2 MiB    gvfsd
.
.
  5.3 MiB +   3.0 MiB =   8.3 MiB    evolution-addressbook-factory
  8.5 MiB +   1.2 MiB =   9.7 MiB    gnome-session-binary (4)
  7.5 MiB +   3.1 MiB =  10.5 MiB    polkitd
  7.4 MiB +   3.3 MiB =  10.7 MiB    pulseaudio (2)
  7.0 MiB +   7.0 MiB =  14.0 MiB    msm_notifier
 12.7 MiB +   2.3 MiB =  15.0 MiB    evolution-source-registry
 13.3 MiB +   2.5 MiB =  15.8 MiB    gnome-terminal-server
 15.8 MiB +   1.0 MiB =  16.8 MiB    tracker-miner-fs
 18.7 MiB +   1.8 MiB =  20.5 MiB    python3.7
 16.6 MiB +   4.0 MiB =  20.5 MiB    evolution-calendar-factory
 22.3 MiB + 753.0 KiB =  23.0 MiB    gsd-keyboard (2)
 22.4 MiB + 832.0 KiB =  23.2 MiB    gsd-wacom (2)
 20.8 MiB +   2.5 MiB =  23.3 MiB    blueman-tray
 22.0 MiB +   1.8 MiB =  23.8 MiB    blueman-applet
 23.1 MiB + 934.0 KiB =  24.0 MiB    gsd-xsettings (2)
 23.7 MiB +   1.2 MiB =  24.9 MiB    gsd-media-keys (2)
 23.4 MiB +   1.6 MiB =  25.0 MiB    gsd-color (2)
 23.9 MiB +   1.2 MiB =  25.1 MiB    gsd-power (2)
 16.5 MiB +   8.9 MiB =  25.4 MiB    evolution-alarm-notify
 27.2 MiB +   2.0 MiB =  29.2 MiB    systemd-journald
 28.7 MiB +   2.8 MiB =  31.5 MiB    c
 29.6 MiB +   2.2 MiB =  31.8 MiB    chrome-gnome-sh (2)
 43.9 MiB +   6.8 MiB =  50.7 MiB    WebExtensions
 46.7 MiB +   6.7 MiB =  53.5 MiB    goa-daemon
 86.5 MiB +  55.2 MiB = 141.7 MiB    Xorg (2)
191.4 MiB +  24.1 MiB = 215.4 MiB    notepadqq-bin
306.7 MiB +  29.0 MiB = 335.7 MiB    gnome-shell (2)
601.6 MiB +  77.7 MiB = 679.2 MiB    firefox
  1.0 GiB + 109.7 MiB =   1.1 GiB    chrome (15)
  2.3 GiB + 123.1 MiB =   2.5 GiB    Web Content (8)
----------------------------------
                           5.6 GiB
==================================

5)如何使用 smem 命令查看 Linux 内存使用情况

smem 是一个可以为 Linux 系统提供多种内存使用情况报告的工具。不同于现有的工具,smem 可以报告 比例集大小 Proportional Set Size (PSS)、 唯一集大小 Unique Set Size (USS)和 驻留集大小 Resident Set Size (RSS)。

  • 比例集大小(PSS):库和应用在虚拟内存系统中的使用量。
  • 唯一集大小(USS):其报告的是非共享内存。
  • 驻留集大小(RSS):物理内存(通常多进程共享)使用情况,其通常高于内存使用量。
# smem -tk

 PID User     Command                         Swap      USS      PSS      RSS
3383 daygeek  cat                                0    92.0K   123.0K     1.7M
3384 daygeek  cat                                0   100.0K   129.0K     1.7M
1177 daygeek  /usr/lib/gnome-session-ctl         0   436.0K   476.0K     4.6M
1171 daygeek  /usr/bin/dbus-daemon --conf        0   524.0K   629.0K     3.8M
1238 daygeek  /usr/lib/xdg-permission-sto        0   592.0K   681.0K     5.9M
1350 daygeek  /usr/lib/gsd-screensaver-pr        0   652.0K   701.0K     5.8M
1135 daygeek  /usr/lib/gdm-x-session --ru        0   648.0K   723.0K     6.0M
.
.
1391 daygeek  /usr/lib/evolution-data-ser        0    16.5M    25.2M    63.3M
1416 daygeek  caffeine-ng                        0    28.7M    31.4M    66.2M
4855 daygeek  /opt/google/chrome/chrome -        0    38.3M    46.3M   120.6M
2174 daygeek  /usr/lib/firefox/firefox -c        0    44.0M    50.7M   120.3M
1254 daygeek  /usr/lib/goa-daemon                0    46.7M    53.3M    80.4M
3416 daygeek  /opt/google/chrome/chrome -        0    44.7M    54.2M   103.3M
4782 daygeek  /opt/google/chrome/chrome -        0    57.2M    65.8M   142.3M
1137 daygeek  /usr/lib/Xorg vt2 -displayf        0    77.2M   129.6M   192.3M
3376 daygeek  /opt/google/chrome/chrome          0   117.8M   131.0M   210.9M
4448 daygeek  /usr/lib/firefox/firefox -c        0   124.4M   133.8M   224.1M
3558 daygeek  /opt/google/chrome/chrome -        0   157.3M   165.7M   242.2M
2310 daygeek  /usr/lib/firefox/firefox -c        0   159.6M   169.4M   259.6M
4331 daygeek  /usr/lib/firefox/firefox -c        0   176.8M   186.2M   276.8M
4034 daygeek  /opt/google/chrome/chrome -        0   179.3M   187.9M   264.6M
3911 daygeek  /opt/google/chrome/chrome -        0   183.1M   191.8M   269.4M
3861 daygeek  /opt/google/chrome/chrome -        0   199.8M   208.2M   285.2M
2746 daygeek  /usr/bin/../lib/notepadqq/n        0   193.5M   217.5M   261.5M
1194 daygeek  /usr/bin/gnome-shell               0   203.7M   219.0M   285.1M
2945 daygeek  /usr/lib/firefox/firefox -c        0   294.5M   308.0M   410.2M
2786 daygeek  /usr/lib/firefox/firefox -c        0   341.2M   354.3M   459.1M
4193 daygeek  /usr/lib/firefox/firefox -c        0   417.4M   427.6M   519.3M
2651 daygeek  /usr/lib/firefox/firefox -c        0   417.0M   430.1M   535.6M
2114 daygeek  /usr/lib/firefox/firefox -c        0   430.6M   473.9M   610.9M
2039 daygeek  /usr/lib/firefox/firefox --        0   601.3M   677.5M   840.6M
-------------------------------------------------------------------------------
  90 1                                           0     4.8G     5.2G     8.0G

6) 如何使用 top 命令查看 Linux 内存使用情况

top 命令 是一个 Linux 系统的管理员最常使用的用于查看进程的资源使用情况的命令。

该命令会展示了系统总的内存量、当前内存使用量、空闲内存量和缓冲区使用的内存总量。此外,该命令还会展示总的交换空间内存量、当前交换空间的内存使用量、空闲的交换空间内存量和缓存使用的内存总量。

# top -b | head -10

top - 11:04:39 up 40 min,  1 user,  load average: 1.59, 1.42, 1.28
Tasks: 288 total,   2 running, 286 sleeping,   0 stopped,   0 zombie
%Cpu(s): 13.3 us,  1.5 sy,  0.0 ni, 84.4 id,  0.0 wa,  0.3 hi,  0.5 si,  0.0 st
KiB Mem : 16248572 total,  7755928 free,  4657736 used,  3834908 buff/cache
KiB Swap: 17873388 total, 17873388 free,        0 used.  9179772 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 2114 daygeek   20     3182736 616624 328228 R  83.3   3.8   7:09.72 Web Content
 2039 daygeek   20     4437952 849616 261364 S  13.3   5.2   7:58.54 firefox
 1194 daygeek   20     4046856 291288 165460 S   4.2   1.8   1:57.68 gnome-shell
 4034 daygeek   20      808556 273244  88676 S   4.2   1.7   1:44.72 chrome
 2945 daygeek   20     3309832 416572 150112 S   3.3   2.6   4:04.60 Web Content
 1137 daygeek   20      564316 197292 183380 S   2.5   1.2   2:55.76 Xorg
 2651 daygeek   20     3098420 547260 275700 S   1.7   3.4   2:15.96 Web Content
 2786 daygeek   20     2957112 463912 240744 S   1.7   2.9   3:22.29 Web Content
    1 root      20      182756  10208   7760 S   0.8   0.1   0:04.51 systemd
  442 root     -51                           S   0.8         0:05.02 irq/141-iw+
 1426 daygeek   20      373660  48948  29820 S   0.8   0.3   0:03.55 python3
 2174 daygeek   20     2466680 122196  78604 S   0.8   0.8   0:17.75 WebExtensi+

7) 如何使用 htop 命令查看 Linux 内存使用情况

htop 命令 是一个可交互的 Linux/Unix 系统进程查看器。它是一个文本模式应用,且使用它需要 Hisham 开发的 ncurses 库。

该名令的设计目的使用来代替 top 命令。该命令与 top 命令很相似,但是其允许你可以垂直地或者水平地的滚动以便可以查看系统中所有的进程情况。

htop 命令拥有不同的颜色,这个额外的优点当你在追踪系统性能情况时十分有用。

此外,你可以自由地执行与进程相关的任务,比如杀死进程或者改变进程的优先级而不需要其进程号(PID)。

8)如何使用 glances 命令查看 Linux 内存使用情况

Glances 是一个 Python 编写的跨平台的系统监视工具。

你可以在一个地方查看所有信息,比如:CPU 使用情况、内存使用情况、正在运行的进程、网络接口、磁盘 I/O、RAID、传感器、文件系统信息、Docker、系统信息、运行时间等等。


via: https://www.2daygeek.com/linux-commands-check-memory-usage/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:萌新阿岩 校对:wxy

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

密码强制策略对所有操作系统和应用程序都是通用的。如果要在 Linux 上实现密码强制策略,请参阅以下文章。

默认情况下,大多数公司都会强制执行密码强制策略,但根据公司的要求,密码的时间周期会有所不同。通常每个人都使用 90 天的密码周期。用户只会在他们使用的一些服务器上更改密码,而不会在他们不经常使用的服务器上更改密码。

特别地,大多数团队忘记更改服务帐户密码,这可能导致日常工作的中断,即使他们配置有基于 SSH 密钥的身份验证。如果用户帐户密码过期,基于SSH密钥的身份验证和 cronjob 将不起作用。

为了避免这种情况,我们创建了一个 shell 脚本来向你发送 10 天内到期的用户帐户列表。

本教程中包含两个 bash 脚本可以帮助你收集系统中用户到期天数的信息。

1) 检查 10 天后到期的用户帐户列表

此脚本将帮助你在终端上检查 10 天内到期的用户帐户列表。

# vi /opt/script/user-password-expiry.sh
#!/bin/sh
/tmp/user-expiry-1.txt
/tmp/user-expiry.txt
echo "-------------------------------------------------"
echo "UserName  The number of days the password expires"
echo "-------------------------------------------------"
for usern in u1 u2 u3 u4
do
today=$(date +%s)
userexpdate=$(chage -l $usern | grep 'Password expires' |cut -d: -f2)
passexp=$(date -d "$userexpdate" "+%s")
exp=`expr \( $passexp - $today \)`
expday=`expr \( $exp / 86400 \)`
echo "$usern $expday" >> /tmp/user-expiry.txt
done
cat /tmp/user-expiry.txt | awk '$2 <= 10' > /tmp/user-expiry-1.txt
cat /tmp/user-expiry-1.txt | column -t

将文件 user-password-expiry.sh 设置为可执行的 Linux 文件权限。

# chmod +x /opt/script/user-password-expiry.sh

你将得到如下输出,但用户与天数可能不同。

# sh /opt/script/user-password-expiry.sh

-------------------------------------------------
UserName  The number of days the password expires
-------------------------------------------------
u1         -25
u2          9
u3          3
u4          5

2) 发送包含 10 天内到期的用户帐户列表的电子邮件

此脚本将发送一封包含 10 天内到期的用户帐户列表的邮件。

# vi /opt/script/user-password-expiry-mail.sh
#!/bin/sh
SUBJECT="Information About User Password Expiration on "`date`""
MESSAGE="/tmp/user-expiry.txt"
MESSAGE1="/tmp/user-expiry-1.txt"
TO="[email protected]"
echo "-------------------------------------------------" >> $MESSAGE1
echo "UserName  The number of days the password expires" >> $MESSAGE1
echo "-------------------------------------------------" >> $MESSAGE1
for usern in u1 u2 u3 u4
do
today=$(date +%s)
userexpdate=$(chage -l $usern | grep 'Password expires' |cut -d: -f2)
passexp=$(date -d "$userexpdate" "+%s")
exp=`expr \( $passexp - $today \)`
expday=`expr \( $exp / 86400 \)`
echo "$usern $expday" >> $MESSAGE
done
cat $MESSAGE | awk '$2 <= 10' >> $MESSAGE1
mail -s "$SUBJECT" "$TO" < $MESSAGE1
rm $MESSAGE
rm $MESSAGE1

将文件 user-password-expiry-mail.sh 设置为可执行的 Linux 文件权限。

# chmod +x /opt/script/user-password-expiry-mail.sh

最后,添加一个 cronjob 去自动执行脚本。每天早上 8 点运行一次。

# crontab -e
0 8 * * * /bin/bash /opt/script/user-password-expiry-mail.sh

你将收到一封与第一个脚本输出类似的电子邮件。


via: https://www.2daygeek.com/bash-script-to-check-user-account-password-expiry-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:qianmingtian 校对:wxy

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

对于 Linux 系统管理员来说,用户管理是最重要的事之一。这涉及到很多因素,实现强密码策略是用户管理的其中一个方面。移步后面的 URL 查看如何 在 Linux 上生成一个强密码。它会限制系统未授权的用户的访问。

所有人都知道 Linux 的默认策略很安全,然而我们还是要做一些微调,这样才更安全。弱密码有安全隐患,因此,请特别注意。移步后面的 URL 查看生成的强密码的密码长度和分值。本文将教你在 Linux 中如何实现最安全的策略。

在大多数 Linux 系统中,我们可以用 PAM( 可插拔认证模块 pluggable authentication module )来加强密码策略。在下面的路径可以找到这个文件。

  • 在红帽系列的系统中,路径:/etc/pam.d/system-auth
  • Debian 系列的系统中,路径:/etc/pam.d/common-password

关于默认的密码过期时间,可以在 /etc/login.defs 文件中查看详细信息。

为了更好理解,我摘取了文件的部分内容:

# vi /etc/login.defs

PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7

详细解释:

  • PASS_MAX_DAYS:一个密码可使用的最大天数。
  • PASS_MIN_DAYS:两次密码修改之间最小的间隔天数。
  • PASS_MIN_LEN:密码最小长度。
  • PASS_WARN_AGE:密码过期前给出警告的天数。

我们将会展示在 Linux 中如何实现下面的 11 个密码策略。

  • 一个密码可使用的最大天数
  • 两次密码修改之间最小的间隔天数
  • 密码过期前给出警告的天数
  • 密码历史记录/拒绝重复使用密码
  • 密码最小长度
  • 最少的大写字母个数
  • 最少的小写字母个数
  • 最少的数字个数
  • 最少的其他字符(符号)个数
  • 账号锁定 — 重试
  • 账号解锁时间

密码可使用的最大天数是什么?

这一参数限制一个密码可使用的最大天数。它强制用户在过期前修改他/她的密码。如果他们忘记修改,那么他们会登录不了系统。他们需要联系管理员才能正常登录。这个参数可以在 /etc/login.defs 文件中设置。我把这个参数设置为 90 天。

# vi /etc/login.defs

PASS_MAX_DAYS   90

密码最小天数是什么?

这个参数限制两次修改之间的最少天数。举例来说,如果这个参数被设置为 15 天,用户今天修改了密码,那么在 15 天之内他都不能修改密码。这个参数可以在 /etc/login.defs 文件中设置。我设置为 15 天。

# vi /etc/login.defs

PASS_MIN_DAYS   15

密码警告天数是什么?

这个参数控制密码警告的前置天数,在密码即将过期时会给用户警告提示。在警告天数结束前,用户会收到日常警告提示。这可以提醒用户在密码过期前修改他们的密码,否则我们就需要联系管理员来解锁密码。这个参数可以在 /etc/login.defs 文件中设置。我设置为 10 天。

# vi /etc/login.defs

PASS_WARN_AGE   10

注意: 上面的所有参数仅对新账号有效,对已存在的账号无效。

密码历史或拒绝重复使用密码是什么?

这个参数控制密码历史。它记录曾经使用过的密码(禁止使用的曾用密码的个数)。当用户设置新的密码时,它会检查密码历史,如果他们要设置的密码是一个曾经使用过的旧密码,将会发出警告提示。这个参数可以在 /etc/pam.d/system-auth 文件中设置。我设置密码历史为 5。

# vi /etc/pam.d/system-auth

password  sufficient  pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5

密码最小长度是什么?

这个参数表示密码的最小长度。当用户设置新密码时,系统会检查这个参数,如果新设的密码长度小于这个参数设置的值,会收到警告提示。这个参数可以在 /etc/pam.d/system-auth 文件中设置。我设置最小密码长度为 12。

# vi /etc/pam.d/system-auth

password  requisite   pam_cracklib.so try_first_pass retry=3 minlen=12

try_first_pass retry=3:在密码设置交互界面,用户有 3 次机会重设密码。

设置最少的大写字母个数?

这个参数表示密码中至少需要的大写字母的个数。这些是密码强度参数,可以让密码更健壮。当用户设置新密码时,系统会检查这个参数,如果密码中没有大写字母,会收到警告提示。这个参数可以在 /etc/pam.d/system-auth 文件中设置。我设置密码(中的大写字母)的最小长度为 1 个字母。

# vi /etc/pam.d/system-auth

password   requisite   pam_cracklib.so try_first_pass retry=3 minlen=12 ucredit=-1

设置最少的小写字母个数?

这个参数表示密码中至少需要的小写字母的个数。这些是密码强度参数,可以让密码更健壮。当用户设置新密码时,系统会检查这个参数,如果密码中没有小写字母,会收到警告提示。这个参数可以在 /etc/pam.d/system-auth 文件中设置。我设置为 1 个字母。

# vi /etc/pam.d/system-auth

password    requisite     pam_cracklib.so try_first_pass retry=3 minlen=12 lcredit=-1

设置密码中最少的数字个数?

这个参数表示密码中至少需要的数字的个数。这些是密码强度参数,可以让密码更健壮。当用户设置新密码时,系统会检查这个参数,如果密码中没有数字,会收到警告提示。这个参数可以在 /etc/pam.d/system-auth 文件中设置。我设置为 1 个数字。

# vi /etc/pam.d/system-auth

password    requisite     pam_cracklib.so try_first_pass retry=3 minlen=12 dcredit=-1

设置密码中最少的其他字符(符号)个数?

这个参数表示密码中至少需要的特殊符号的个数。这些是密码强度参数,可以让密码更健壮。当用户设置新密码时,系统会检查这个参数,如果密码中没有特殊符号,会收到警告提示。这个参数可以在 /etc/pam.d/system-auth 文件中设置。我设置为 1 个字符。

# vi /etc/pam.d/system-auth

password    requisite     pam_cracklib.so try_first_pass retry=3 minlen=12 ocredit=-1

设置账号锁定?

这个参数控制用户连续登录失败的最大次数。当达到设定的连续失败登录次数阈值时,锁定账号。这个参数可以在 /etc/pam.d/system-auth 文件中设置。

# vi /etc/pam.d/system-auth

auth        required      pam_tally2.so onerr=fail audit silent deny=5
account required pam_tally2.so

设定账号解锁时间?

这个参数表示用户解锁时间。如果一个用户账号在连续认证失败后被锁定了,当过了设定的解锁时间后,才会解锁。设置被锁定中的账号的解锁时间(900 秒 = 15分钟)。这个参数可以在 /etc/pam.d/system-auth 文件中设置。

# vi /etc/pam.d/system-auth

auth        required      pam_tally2.so onerr=fail audit silent deny=5 unlock_time=900
account required pam_tally2.so

via: https://www.2daygeek.com/how-to-set-password-complexity-policy-on-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:lxbwolf 校对:wxy

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

在之前的文章中我们已经讨论过 如何在 Linux 中找出内存消耗最大的进程。你可能也会遇到在 Linux 系统中找出 CPU 占用高的进程的情形。如果是这样,那么你需要列出系统中 CPU 占用高的进程列表来确定。我认为只有两种方法能实现:使用 top 命令ps 命令。出于一些理由,我更倾向于用 top 命令而不是 ps 命令。但是两个工具都能达到你要的目的,所以你可以根据需求决定使用哪个。这两个工具都被 Linux 系统管理员广泛使用。

1) 怎样使用 top 命令找出 Linux 中 CPU 占用高的进程

在所有监控 Linux 系统性能的工具中,Linux 的 top 命令是最好的也是最知名的一个。top 命令提供了 Linux 系统运行中的进程的动态实时视图。它能显示系统的概览信息和 Linux 内核当前管理的进程列表。它显示了大量的系统信息,如 CPU 使用、内存使用、交换内存、运行的进程数、目前系统开机时间、系统负载、缓冲区大小、缓存大小、进程 PID 等等。默认情况下,top 命令的输出结果按 CPU 占用进行排序,每 5 秒中更新一次结果。如果你想要一个更清晰的视图来更深入的分析结果,以批处理模式运行 top 命令 是最好的方法。同时,你需要 理解 top 命令输出结果的含义 ,这样才能解决系统的性能问题。

# top -b | head -50

top - 00:19:17 up 14:23,  1 user,  load average: 2.46, 2.18, 1.97
Tasks: 306 total,   1 running, 305 sleeping,   0 stopped,   0 zombie
%Cpu0  : 10.4 us,  3.0 sy,  0.0 ni, 83.9 id,  0.0 wa,  1.3 hi,  1.3 si,  0.0 st
%Cpu1  : 17.0 us,  3.0 sy,  0.0 ni, 78.7 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu2  : 13.0 us,  4.0 sy,  0.0 ni, 81.3 id,  0.0 wa,  0.3 hi,  1.3 si,  0.0 st
%Cpu3  : 12.3 us,  3.3 sy,  0.0 ni, 82.5 id,  0.3 wa,  0.7 hi,  1.0 si,  0.0 st
%Cpu4  : 12.2 us,  3.0 sy,  0.0 ni, 82.8 id,  0.7 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu5  :  6.4 us,  2.7 sy,  0.0 ni, 89.2 id,  0.0 wa,  0.7 hi,  1.0 si,  0.0 st
%Cpu6  : 26.7 us,  3.4 sy,  0.0 ni, 68.6 id,  0.0 wa,  0.7 hi,  0.7 si,  0.0 st
%Cpu7  : 15.6 us,  4.0 sy,  0.0 ni, 78.8 id,  0.0 wa,  0.7 hi,  1.0 si,  0.0 st
KiB Mem : 16248556 total,  1448920 free,  8571484 used,  6228152 buff/cache
KiB Swap: 17873388 total, 17873388 free,        0 used.  4596044 avail Mem
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 2179 daygeek   20     3106324 613584 327564 S  79.5   3.8  14:19.76 Web Content
 1714 daygeek   20     4603372 974600 403504 S  20.2   6.0  65:18.91 firefox
 1227 daygeek   20     4192012 376332 180348 S  13.9   2.3  20:43.26 gnome-shell
18324 daygeek   20     3296192 766040 127948 S   6.3   4.7   9:18.12 Web Content
 1170 daygeek   20     1008264 572036 546180 S   6.0   3.5  18:07.85 Xorg
 4684 daygeek   20     3363708   1.1g   1.0g S   3.6   7.2  13:49.92 VirtualBoxVM
 4607 daygeek   20     4591040   1.7g   1.6g S   3.0  11.0  14:09.65 VirtualBoxVM
 1211 daygeek    9 -11 2865268  21032  16588 S   2.0   0.1  10:46.37 pulseaudio
 4562 daygeek   20     1096888  28812  21044 S   1.7   0.2   4:42.93 VBoxSVC
 1783 daygeek   20     3123888 376896 134788 S   1.3   2.3  39:32.56 Web Content
 3286 daygeek   20     3089736 404088 184968 S   1.0   2.5  41:57.44 Web Content

上面的命令的各部分解释:

  • top:命令
  • -b:批次档模式
  • head -50:显示输出结果的前 50 个
  • PID:进程的 ID
  • USER:进程的归属者
  • PR:进程的等级
  • NI:进程的 NICE 值
  • VIRT:进程使用的虚拟内存
  • RES:进程使用的物理内存
  • SHR:进程使用的共享内存
  • S:这个值表示进程的状态: S = 睡眠,R = 运行,Z = 僵尸进程
  • %CPU:进程占用的 CPU 比例
  • %MEM:进程使用的 RAM 比例
  • TIME+:进程运行了多长时间
  • COMMAND:进程名字

如果你想看命令的完整路径而不是命令名字,以运行下面的格式 top 命令:

# top -c -b | head -50

top - 00:28:49 up 14:33,  1 user,  load average: 2.43, 2.49, 2.23
Tasks: 305 total,   1 running, 304 sleeping,   0 stopped,   0 zombie
%Cpu0  : 11.7 us,  3.7 sy,  0.0 ni, 82.3 id,  0.0 wa,  1.0 hi,  1.3 si,  0.0 st
%Cpu1  : 13.6 us,  3.3 sy,  0.0 ni, 81.1 id,  0.7 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu2  : 10.9 us,  2.6 sy,  0.0 ni, 85.1 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu3  : 16.0 us,  2.6 sy,  0.0 ni, 80.1 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu4  :  9.2 us,  3.6 sy,  0.0 ni, 85.9 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu5  : 15.6 us,  2.9 sy,  0.0 ni, 80.5 id,  0.0 wa,  0.3 hi,  0.7 si,  0.0 st
%Cpu6  : 11.6 us,  4.3 sy,  0.0 ni, 82.7 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu7  :  8.0 us,  3.0 sy,  0.0 ni, 87.3 id,  0.0 wa,  0.7 hi,  1.0 si,  0.0 st
KiB Mem : 16248556 total,  1022456 free,  8778508 used,  6447592 buff/cache
KiB Swap: 17873388 total, 17873388 free,        0 used.  4201560 avail Mem
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
18527 daygeek   20     3151820 624808 325748 S  52.8   3.8  59:26.72 /usr/lib/firefox/firefox -contentproc -childID 18 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /+
 1714 daygeek   20     4764668 910940 443228 S  21.5   5.6  68:59.33 /usr/lib/firefox/firefox --new-window
 1227 daygeek   20     4193108 377344 181404 S  11.6   2.3  21:47.36 /usr/bin/gnome-shell
 1170 daygeek   20     1008820 572700 546844 S   5.6   3.5  19:05.10 /usr/lib/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3
18324 daygeek   20     3300288 789344 127948 S   5.0   4.9   9:46.89 /usr/lib/firefox/firefox -contentproc -childID 16 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /+
 4684 daygeek   20     3363708   1.1g   1.0g S   3.6   7.2  14:10.18 /usr/lib/virtualbox/VirtualBoxVM --comment CentOS7 --startvm 002f47b8-2af2-48f5-be1d-67b67e03514c --no-startvm-errormsgbox
 4607 daygeek   20     4591040   1.7g   1.6g S   3.0  11.0  14:28.86 /usr/lib/virtualbox/VirtualBoxVM --comment Ubuntu-18.04 --startvm e8c32dbb-8b01-41b0-977a-bf28b9db1117 --no-startvm-errormsgbox
 1783 daygeek   20     3132640 451924 132168 S   2.6   2.8  39:49.66 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/l+
 1211 daygeek    9 -11 2865268  21272  16828 S   2.0   0.1  11:01.29 /usr/bin/pulseaudio --daemonize=no
 4562 daygeek   20     1096888  28812  21044 S   1.7   0.2   4:49.33 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
16865 daygeek   20     3073364 430596 124652 S   1.3   2.7   8:04.02 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /+
 2179 daygeek   20     2945348 429644 172940 S   1.0   2.6  15:20.90 /usr/lib/firefox/firefox -contentproc -childID 6 -isForBrowser -prefsLen 7821 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /us+

2) 怎样使用 ps 命令找出 Linux 中 CPU 占用高的进程

ps 进程状态 process status 的缩写,它能显示系统中活跃的/运行中的进程的信息。它提供了当前进程及其详细信息,诸如用户名、用户 ID、CPU 使用率、内存使用、进程启动日期时间、命令名等等的快照。

# ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head

  PID  PPID %MEM %CPU CMD
18527  1714  4.2 40.3 /usr/lib/firefox/firefox -contentproc -childID 18 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 1714  1152  5.6  8.0 /usr/lib/firefox/firefox --new-window
18324  1714  4.9  6.3 /usr/lib/firefox/firefox -contentproc -childID 16 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 3286  1714  2.0  5.1 /usr/lib/firefox/firefox -contentproc -childID 14 -isForBrowser -prefsLen 8078 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 1783  1714  3.0  4.5 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 1227  1152  2.3  2.5 /usr/bin/gnome-shell
 1170  1168  3.5  2.2 /usr/lib/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3
16865  1714  2.5  2.1 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 2179  1714  2.7  1.8 /usr/lib/firefox/firefox -contentproc -childID 6 -isForBrowser -prefsLen 7821 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab

上面的命令的各部分解释:

  • ps:命令名字
  • -e:选择所有进程
  • -o:自定义输出格式
  • –sort=-%cpu:基于 CPU 使用率对输出结果排序
  • head:显示结果的前 10 行
  • PID:进程的 ID
  • PPID:父进程的 ID
  • %MEM:进程使用的 RAM 比例
  • %CPU:进程占用的 CPU 比例
  • Command:进程名字

如果你只想看命令名字而不是命令的绝对路径,以运行下面的格式 ps 命令:

# ps -eo pid,ppid,%mem,%cpu,comm --sort=-%cpu | head

  PID  PPID %MEM %CPU COMMAND
18527  1714  4.1 40.4 Web Content
 1714  1152  5.7  8.0 firefox
18324  1714  4.9  6.3 Web Content
 3286  1714  2.0  5.1 Web Content
 1783  1714  3.0  4.5 Web Content
 1227  1152  2.3  2.5 gnome-shell
 1170  1168  3.5  2.2 Xorg
16865  1714  2.4  2.1 Web Content
 2179  1714  2.7  1.8 Web Content

via: https://www.2daygeek.com/how-to-find-high-cpu-consumption-processes-in-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:lxbwolf 校对:wxy

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