MAGESH MARUTHAMUTHU 发布的文章

市场上有很多用来监控 Linux 系统的监控工具,当系统到达阀值后它将发送一封邮件。它监控所有的东西例如 CPU 利用率、内存利用率、交换空间利用率、磁盘空间利用率等等。然而,它更适合小环境和大环境。

想一想如果你只有少量系统,那么什么是最好的方式来应对这种情况。

是的,我们想要写一个 shell 脚本 来实现。

在这篇指南中我们打算写一个 shell 脚本来监控系统的磁盘空间使用率。当系统到达给定的阀值,它将给对应的邮件地址发送一封邮件。在这篇文章中我们总共添加了四个 shell 脚本,每个用于不同的目的。之后,我们会想出其他 shell 脚本来监控 CPU,内存和交换空间利用率。

在此之前,我想澄清一件事,根据我观察的磁盘空间使用率 shell 脚本使用情况。

大多数用户在多篇博客中评论说,当他们运行磁盘空间使用率脚本时他们获得了以下错误。

# sh /opt/script/disk-usage-alert-old.sh

/dev/mapper/vg_2g-lv_root
test-script.sh: line 7: [: /dev/mapper/vg_2g-lv_root: integer expression expected
/ 9.8G

是的,这是对的。甚至,当我第一次运行这个脚本的时候我遇到了相同的问题。之后,我发现了根本原因。

当你在基于 RHEL 5 & RHEL 6 的系统上运行包含用于磁盘空间警告的 df -hdf -H 的 shell 脚本中时,你会发现上述错误信息,因为输出格式不对,查看下列输出。

为了解决这个问题,我们需要用 df -Ph (POSIX 输出格式),但是默认的 df -h 在基于 RHEL 7 的系统上运行的很好。

# df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_2g-lv_root
                       10G  6.7G  3.4G  67% /
tmpfs                 7.8G     0  7.8G   0% /dev/shm
/dev/sda1             976M   95M  830M  11% /boot
/dev/mapper/vg_2g-lv_home
                      5.0G  4.3G  784M  85% /home
/dev/mapper/vg_2g-lv_tmp
                      4.8G   14M  4.6G   1% /tmp

方法一:Linux Shell 脚本来监控磁盘空间使用率和发送邮件

你可以使用下列 shell 脚本在 Linux 系统中来监控磁盘空间使用率。

当系统到达给定的阀值限制时,它将发送一封邮件。在这个例子中,我们设置阀值为 60% 用于测试目的,你可以改变这个限制来符合你的需求。

如果超过一个文件系统到达给定的阀值,它将发送多封邮件,因为这个脚本使用了循环。

同样,替换你的邮件地址来获取这份警告。

# vi /opt/script/disk-usage-alert.sh

#!/bin/sh
df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output;
do
  echo $output
  used=$(echo $output | awk '{print $1}' | sed s/%//g)
  partition=$(echo $output | awk '{print $2}')
  if [ $used -ge 60 ]; then
  echo "The partition \"$partition\" on $(hostname) has used $used% at $(date)" | mail -s "Disk Space Alert: $used% Used On $(hostname)" [email protected]
  fi
done

输出:我获得了下列两封邮件警告。

The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019

The partition "/dev/mapper/vg_2g-lv_root" on 2g.CentOS7 has used 67% at Mon Apr 29 06:16:14 IST 2019

最终添加了一个 cronjob 来自动完成。它会每 10 分钟运行一次。

# crontab -e
*/10 * * * * /bin/bash /opt/script/disk-usage-alert.sh

方法二:Linux Shell 脚本来监控磁盘空间使用率和发送邮件

作为代替,你可以使用下列的 shell 脚本。对比上面的脚本我们做了少量改变。

# vi /opt/script/disk-usage-alert-1.sh

#!/bin/sh
df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output;
do
  max=60%
  echo $output
  used=$(echo $output | awk '{print $1}')
  partition=$(echo $output | awk '{print $2}')
  if [ ${used%?} -ge ${max%?} ]; then
  echo "The partition \"$partition\" on $(hostname) has used $used at $(date)" | mail -s "Disk Space Alert: $used Used On $(hostname)" [email protected]
  fi
done

输出:我获得了下列两封邮件警告。

The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019

The partition "/dev/mapper/vg_2g-lv_root" on 2g.CentOS7 has used 67% at Mon Apr 29 06:16:14 IST 2019

最终添加了一个 cronjob 来自动完成。它会每 10 分钟运行一次。

# crontab -e
*/10 * * * * /bin/bash /opt/script/disk-usage-alert-1.sh

方法三:Linux Shell 脚本来监控磁盘空间使用率和发送邮件

我更喜欢这种方法。因为,它工作起来很有魔力,你只会收到一封关于所有事的邮件。

这相当简单和直接。

*/10 * * * * df -Ph | sed s/%//g | awk '{ if($5 > 60) print $0;}' | mail -s "Disk Space Alert On $(hostname)" [email protected]

输出: 我获得了一封关于所有警告的邮件。

Filesystem                            Size  Used Avail Use Mounted on
/dev/mapper/vg_2g-lv_root              10G  6.7G  3.4G  67 /
/dev/mapper/vg_2g-lv_home             5.0G  4.3G  784M  85 /home

方法四:Linux Shell 脚本来监控某个分区的磁盘空间使用情况和发送邮件

# vi /opt/script/disk-usage-alert-2.sh

#!/bin/bash
used=$(df -Ph | grep '/dev/mapper/vg_2g-lv_dbs' | awk {'print $5'})
max=80%
if [ ${used%?} -ge ${max%?} ]; then
echo "The Mount Point "/DB" on $(hostname) has used $used at $(date)" | mail -s "Disk space alert on $(hostname): $used used" [email protected]
fi

输出: 我得到了下面的邮件警告。

The partition /dev/mapper/vg_2g-lv_dbs on 2g.CentOS6 has used 82% at Mon Apr 29 06:16:14 IST 2019

最终添加了一个 cronjob 来自动完成这些工作。它将每 10 分钟运行一次。

# crontab -e
*/10 * * * * /bin/bash /opt/script/disk-usage-alert-2.sh

注意: 你将在 10 分钟后收到一封邮件警告,因为这个脚本被计划为每 10 分钟运行一次(但也不是精确的 10 分钟,取决于时间)。

例如这个例子。如果你的系统在 8:25 到达了限制,你将在 5 分钟后收到邮件警告。希望现在讲清楚了。


via: https://www.2daygeek.com/linux-shell-script-to-monitor-disk-space-usage-and-send-email/

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

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

笔记本电池是针对 Windows 操作系统进行了高度优化的,当我在笔记本电脑中使用 Windows 操作系统时,我已经意识到这一点,但对于 Linux 来说却不一样。

多年来,Linux 在电池优化方面取得了很大进步,但我们仍然需要做一些必要的事情来改善 Linux 中笔记本电脑的电池寿命。

当我考虑延长电池寿命时,我没有多少选择,但我觉得 TLP 对我来说是一个更好的解决方案,所以我会继续使用它。

在本教程中,我们将详细讨论 TLP 以延长电池寿命。

我们之前在我们的网站上写过三篇关于 Linux 笔记本电池节电工具 的文章:PowerTOP电池充电状态

TLP

TLP 是一款自由开源的高级电源管理工具,可在不进行任何配置更改的情况下延长电池寿命。

由于它的默认配置已针对电池寿命进行了优化,因此你可能只需要安装,然后就忘记它吧。

此外,它可以高度定制化,以满足你的特定要求。TLP 是一个具有自动后台任务的纯命令行工具。它不包含GUI。

TLP 适用于各种品牌的笔记本电脑。设置电池充电阈值仅适用于 IBM/Lenovo ThinkPad。

所有 TLP 设置都存储在 /etc/default/tlp 中。其默认配置提供了开箱即用的优化的节能设置。

以下 TLP 设置可用于自定义,如果需要,你可以相应地进行必要的更改。

TLP 功能

  • 内核笔记本电脑模式和脏缓冲区超时
  • 处理器频率调整,包括 “turbo boost”/“turbo core”
  • 限制最大/最小的 P 状态以控制 CPU 的功耗
  • HWP 能源性能提示
  • 用于多核/超线程的功率感知进程调度程序
  • 处理器性能与节能策略(x86_energy_perf_policy
  • 硬盘高级电源管理级别(APM)和降速超时(按磁盘)
  • AHCI 链路电源管理(ALPM)与设备黑名单
  • PCIe 活动状态电源管理(PCIe ASPM)
  • PCI(e) 总线设备的运行时电源管理
  • Radeon 图形电源管理(KMS 和 DPM)
  • Wifi 省电模式
  • 关闭驱动器托架中的光盘驱动器
  • 音频省电模式
  • I/O 调度程序(按磁盘)
  • USB 自动暂停,支持设备黑名单/白名单(输入设备自动排除)
  • 在系统启动和关闭时启用或禁用集成的 wifi、蓝牙或 wwan 设备
  • 在系统启动时恢复无线电设备状态(从之前的关机时的状态)
  • 无线电设备向导:在网络连接/断开和停靠/取消停靠时切换无线电
  • 禁用 LAN 唤醒
  • 挂起/休眠后恢复集成的 WWAN 和蓝牙状态
  • 英特尔处理器的动态电源降低 —— 需要内核和 PHC-Patch 支持
  • 电池充电阈值 —— 仅限 ThinkPad
  • 重新校准电池 —— 仅限 ThinkPad

如何在 Linux 上安装 TLP

TLP 包在大多数发行版官方存储库中都可用,因此,使用发行版的 包管理器 来安装它。

对于 Fedora 系统,使用 DNF 命令 安装 TLP。

$ sudo dnf install tlp tlp-rdw

ThinkPad 需要一些附加软件包。

$ sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
$ sudo dnf install http://repo.linrunner.de/fedora/tlp/repos/releases/tlp-release.fc$(rpm -E %fedora).noarch.rpm
$ sudo dnf install akmod-tp_smapi akmod-acpi_call kernel-devel

安装 smartmontool 以显示 tlp-stat 中 S.M.A.R.T. 数据。

$ sudo dnf install smartmontools

对于 Debian/Ubuntu 系统,使用 APT-GET 命令APT 命令 安装 TLP。

$ sudo apt install tlp tlp-rdw

ThinkPad 需要一些附加软件包。

$ sudo apt-get install tp-smapi-dkms acpi-call-dkms

安装 smartmontool 以显示 tlp-stat 中 S.M.A.R.T. 数据。

$ sudo apt-get install smartmontools

当基于 Ubuntu 的系统的官方软件包过时时,请使用以下 PPA 存储库,该存储库提供最新版本。运行以下命令以使用 PPA 安装 TLP。

$ sudo add-apt-repository ppa:linrunner/tlp
$ sudo apt-get update
$ sudo apt-get install tlp

对于基于 Arch Linux 的系统,使用 Pacman 命令 安装 TLP。

$ sudo pacman -S tlp tlp-rdw

ThinkPad 需要一些附加软件包。

$ pacman -S tp_smapi acpi_call

安装 smartmontool 以显示 tlp-stat 中 S.M.A.R.T. 数据。

$ sudo pacman -S smartmontools

对于基于 Arch Linux 的系统,在启动时启用 TLP 和 TLP-Sleep 服务。

$ sudo systemctl enable tlp.service
$ sudo systemctl enable tlp-sleep.service

对于基于 Arch Linux 的系统,你还应该屏蔽以下服务以避免冲突,并确保 TLP 的无线电设备切换选项的正确操作。

$ sudo systemctl mask systemd-rfkill.service
$ sudo systemctl mask systemd-rfkill.socket

对于 RHEL/CentOS 系统,使用 YUM 命令 安装 TLP。

$ sudo yum install tlp tlp-rdw

安装 smartmontool 以显示 tlp-stat 中 S.M.A.R.T. 数据。

$ sudo yum install smartmontools

对于 openSUSE Leap 系统,使用 Zypper 命令 安装 TLP。

$ sudo zypper install TLP

安装 smartmontool 以显示 tlp-stat 中 S.M.A.R.T. 数据。

$ sudo zypper install smartmontools

成功安装 TLP 后,使用以下命令启动服务。

$ systemctl start tlp.service

使用方法

显示电池信息

$ sudo tlp-stat -b
或
$ sudo tlp-stat --battery
--- TLP 1.1 --------------------------------------------

+++ Battery Status
/sys/class/power_supply/BAT0/manufacturer                   = SMP
/sys/class/power_supply/BAT0/model_name                     = L14M4P23
/sys/class/power_supply/BAT0/cycle_count                    = (not supported)
/sys/class/power_supply/BAT0/energy_full_design             =  60000 [mWh]
/sys/class/power_supply/BAT0/energy_full                    =  48850 [mWh]
/sys/class/power_supply/BAT0/energy_now                     =  48850 [mWh]
/sys/class/power_supply/BAT0/power_now                      =      0 [mW]
/sys/class/power_supply/BAT0/status                         = Full

Charge                                                      =  100.0 [%]
Capacity                                                    =   81.4 [%]

显示磁盘信息

$ sudo tlp-stat -d
或
$ sudo tlp-stat --disk
--- TLP 1.1 --------------------------------------------

+++ Storage Devices
/dev/sda:
  Model     = WDC WD10SPCX-24HWST1                    
  Firmware  = 02.01A02
  APM Level = 128
  Status    = active/idle
  Scheduler = mq-deadline

  Runtime PM: control = on, autosuspend_delay = (not available)

  SMART info:
      4 Start_Stop_Count          =    18787 
      5 Reallocated_Sector_Ct     =        0 
      9 Power_On_Hours            =      606 [h]
     12 Power_Cycle_Count         =     1792 
    193 Load_Cycle_Count          =    25775 
    194 Temperature_Celsius       =       31    [°C]


+++ AHCI Link Power Management (ALPM)
/sys/class/scsi_host/host0/link_power_management_policy  = med_power_with_dipm
/sys/class/scsi_host/host1/link_power_management_policy  = med_power_with_dipm
/sys/class/scsi_host/host2/link_power_management_policy  = med_power_with_dipm
/sys/class/scsi_host/host3/link_power_management_policy  = med_power_with_dipm

+++ AHCI Host Controller Runtime Power Management
/sys/bus/pci/devices/0000:00:17.0/ata1/power/control = on
/sys/bus/pci/devices/0000:00:17.0/ata2/power/control = on
/sys/bus/pci/devices/0000:00:17.0/ata3/power/control = on
/sys/bus/pci/devices/0000:00:17.0/ata4/power/control = on

显示 PCI 设备信息

$ sudo tlp-stat -e
或
$ sudo tlp-stat --pcie
$ sudo tlp-stat -e
or
$ sudo tlp-stat --pcie

--- TLP 1.1 --------------------------------------------

+++ Runtime Power Management
Device blacklist = (not configured)
Driver blacklist = amdgpu nouveau nvidia radeon pcieport

/sys/bus/pci/devices/0000:00:00.0/power/control = auto (0x060000, Host bridge, skl_uncore)
/sys/bus/pci/devices/0000:00:01.0/power/control = auto (0x060400, PCI bridge, pcieport)
/sys/bus/pci/devices/0000:00:02.0/power/control = auto (0x030000, VGA compatible controller, i915)
/sys/bus/pci/devices/0000:00:14.0/power/control = auto (0x0c0330, USB controller, xhci_hcd)

......

显示图形卡信息

$ sudo tlp-stat -g
或
$ sudo tlp-stat --graphics
--- TLP 1.1 --------------------------------------------

+++ Intel Graphics
/sys/module/i915/parameters/enable_dc        = -1 (use per-chip default)
/sys/module/i915/parameters/enable_fbc       =  1 (enabled)
/sys/module/i915/parameters/enable_psr       =  0 (disabled)
/sys/module/i915/parameters/modeset          = -1 (use per-chip default)

显示处理器信息

$ sudo tlp-stat -p
或
$ sudo tlp-stat --processor
--- TLP 1.1 --------------------------------------------

+++ Processor
CPU model      = Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz

/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver    = intel_pstate
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor  = powersave
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors = performance powersave
/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq  =   800000 [kHz]
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq  =  3500000 [kHz]
/sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference = balance_power
/sys/devices/system/cpu/cpu0/cpufreq/energy_performance_available_preferences = default performance balance_performance balance_power power 

......

/sys/devices/system/cpu/intel_pstate/min_perf_pct      =  22 [%]
/sys/devices/system/cpu/intel_pstate/max_perf_pct      = 100 [%]
/sys/devices/system/cpu/intel_pstate/no_turbo          =   0
/sys/devices/system/cpu/intel_pstate/turbo_pct         =  33 [%]
/sys/devices/system/cpu/intel_pstate/num_pstates       =  28

x86_energy_perf_policy: program not installed.

/sys/module/workqueue/parameters/power_efficient       = Y
/proc/sys/kernel/nmi_watchdog                          = 0

+++ Undervolting
PHC kernel not available.

显示系统数据信息

$ sudo tlp-stat -s
或
$ sudo tlp-stat --system
--- TLP 1.1 --------------------------------------------

+++ System Info
System         = LENOVO Lenovo ideapad Y700-15ISK 80NV
BIOS           = CDCN35WW
Release        = "Manjaro Linux"
Kernel         = 4.19.6-1-MANJARO #1 SMP PREEMPT Sat Dec 1 12:21:26 UTC 2018 x86_64
/proc/cmdline  = BOOT_IMAGE=/boot/vmlinuz-4.19-x86_64 root=UUID=69d9dd18-36be-4631-9ebb-78f05fe3217f rw quiet resume=UUID=a2092b92-af29-4760-8e68-7a201922573b
Init system    = systemd 
Boot mode      = BIOS (CSM, Legacy)

+++ TLP Status
State          = enabled
Last run       = 11:04:00  IST,    596 sec(s) ago
Mode           = battery
Power source   = battery

显示温度和风扇速度信息

$ sudo tlp-stat -t
或
$ sudo tlp-stat --temp
--- TLP 1.1 --------------------------------------------

+++ Temperatures
CPU temp               =    36 [°C]
Fan speed              = (not available)

显示 USB 设备数据信息

$ sudo tlp-stat -u
或
$ sudo tlp-stat --usb
--- TLP 1.1 --------------------------------------------

+++ USB
Autosuspend         = disabled
Device whitelist    = (not configured)
Device blacklist    = (not configured)
Bluetooth blacklist = disabled
Phone blacklist     = disabled
WWAN blacklist      = enabled

Bus 002 Device 001 ID 1d6b:0003 control = auto, autosuspend_delay_ms =     0 -- Linux Foundation 3.0 root hub (hub)
Bus 001 Device 003 ID 174f:14e8 control = auto, autosuspend_delay_ms =  2000 -- Syntek  (uvcvideo)

......

显示警告信息

$ sudo tlp-stat -w
或
$ sudo tlp-stat --warn
--- TLP 1.1 --------------------------------------------

No warnings detected.

状态报告及配置和所有活动的设置

$ sudo tlp-stat
--- TLP 1.1 --------------------------------------------

+++ Configured Settings: /etc/default/tlp
TLP_ENABLE=1
TLP_DEFAULT_MODE=AC
TLP_PERSISTENT_DEFAULT=0
DISK_IDLE_SECS_ON_AC=0
DISK_IDLE_SECS_ON_BAT=2
MAX_LOST_WORK_SECS_ON_AC=15
MAX_LOST_WORK_SECS_ON_BAT=60

......

+++ System Info
System = LENOVO Lenovo ideapad Y700-15ISK 80NV
BIOS = CDCN35WW
Release = "Manjaro Linux"
Kernel = 4.19.6-1-MANJARO #1 SMP PREEMPT Sat Dec 1 12:21:26 UTC 2018 x86_64
/proc/cmdline = BOOT_IMAGE=/boot/vmlinuz-4.19-x86_64 root=UUID=69d9dd18-36be-4631-9ebb-78f05fe3217f rw quiet resume=UUID=a2092b92-af29-4760-8e68-7a201922573b
Init system = systemd
Boot mode = BIOS (CSM, Legacy)

+++ TLP Status
State = enabled
Last run = 11:04:00 IST, 684 sec(s) ago
Mode = battery
Power source = battery

+++ Processor
CPU model = Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz

/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver = intel_pstate
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors = performance powersave

......

/sys/devices/system/cpu/intel_pstate/min_perf_pct = 22 [%]
/sys/devices/system/cpu/intel_pstate/max_perf_pct = 100 [%]
/sys/devices/system/cpu/intel_pstate/no_turbo = 0
/sys/devices/system/cpu/intel_pstate/turbo_pct = 33 [%]
/sys/devices/system/cpu/intel_pstate/num_pstates = 28

x86_energy_perf_policy: program not installed.

/sys/module/workqueue/parameters/power_efficient = Y
/proc/sys/kernel/nmi_watchdog = 0

+++ Undervolting
PHC kernel not available.

+++ Temperatures
CPU temp = 42 [°C]
Fan speed = (not available)

+++ File System
/proc/sys/vm/laptop_mode = 2
/proc/sys/vm/dirty_writeback_centisecs = 6000
/proc/sys/vm/dirty_expire_centisecs = 6000
/proc/sys/vm/dirty_ratio = 20
/proc/sys/vm/dirty_background_ratio = 10

+++ Storage Devices
/dev/sda:
 Model = WDC WD10SPCX-24HWST1
 Firmware = 02.01A02
 APM Level = 128
 Status = active/idle
 Scheduler = mq-deadline

 Runtime PM: control = on, autosuspend_delay = (not available)

 SMART info:
 4 Start_Stop_Count = 18787
 5 Reallocated_Sector_Ct = 0
 9 Power_On_Hours = 606 [h]
 12 Power_Cycle_Count = 1792
 193 Load_Cycle_Count = 25777
 194 Temperature_Celsius = 31 [°C]


+++ AHCI Link Power Management (ALPM)
/sys/class/scsi_host/host0/link_power_management_policy = med_power_with_dipm
/sys/class/scsi_host/host1/link_power_management_policy = med_power_with_dipm
/sys/class/scsi_host/host2/link_power_management_policy = med_power_with_dipm
/sys/class/scsi_host/host3/link_power_management_policy = med_power_with_dipm

+++ AHCI Host Controller Runtime Power Management
/sys/bus/pci/devices/0000:00:17.0/ata1/power/control = on
/sys/bus/pci/devices/0000:00:17.0/ata2/power/control = on
/sys/bus/pci/devices/0000:00:17.0/ata3/power/control = on
/sys/bus/pci/devices/0000:00:17.0/ata4/power/control = on

+++ PCIe Active State Power Management
/sys/module/pcie_aspm/parameters/policy = powersave

+++ Intel Graphics
/sys/module/i915/parameters/enable_dc = -1 (use per-chip default)
/sys/module/i915/parameters/enable_fbc = 1 (enabled)
/sys/module/i915/parameters/enable_psr = 0 (disabled)
/sys/module/i915/parameters/modeset = -1 (use per-chip default)

+++ Wireless
bluetooth = on
wifi = on
wwan = none (no device)

hci0(btusb) : bluetooth, not connected
wlp8s0(iwlwifi) : wifi, connected, power management = on

+++ Audio
/sys/module/snd_hda_intel/parameters/power_save = 1
/sys/module/snd_hda_intel/parameters/power_save_controller = Y

+++ Runtime Power Management
Device blacklist = (not configured)
Driver blacklist = amdgpu nouveau nvidia radeon pcieport

/sys/bus/pci/devices/0000:00:00.0/power/control = auto (0x060000, Host bridge, skl_uncore)
/sys/bus/pci/devices/0000:00:01.0/power/control = auto (0x060400, PCI bridge, pcieport)
/sys/bus/pci/devices/0000:00:02.0/power/control = auto (0x030000, VGA compatible controller, i915)

......

+++ USB
Autosuspend = disabled
Device whitelist = (not configured)
Device blacklist = (not configured)
Bluetooth blacklist = disabled
Phone blacklist = disabled
WWAN blacklist = enabled

Bus 002 Device 001 ID 1d6b:0003 control = auto, autosuspend_delay_ms = 0 -- Linux Foundation 3.0 root hub (hub)
Bus 001 Device 003 ID 174f:14e8 control = auto, autosuspend_delay_ms = 2000 -- Syntek (uvcvideo)
Bus 001 Device 002 ID 17ef:6053 control = on, autosuspend_delay_ms = 2000 -- Lenovo (usbhid)
Bus 001 Device 004 ID 8087:0a2b control = auto, autosuspend_delay_ms = 2000 -- Intel Corp. (btusb)
Bus 001 Device 001 ID 1d6b:0002 control = auto, autosuspend_delay_ms = 0 -- Linux Foundation 2.0 root hub (hub)

+++ Battery Status
/sys/class/power_supply/BAT0/manufacturer = SMP
/sys/class/power_supply/BAT0/model_name = L14M4P23
/sys/class/power_supply/BAT0/cycle_count = (not supported)
/sys/class/power_supply/BAT0/energy_full_design = 60000 [mWh]
/sys/class/power_supply/BAT0/energy_full = 51690 [mWh]
/sys/class/power_supply/BAT0/energy_now = 50140 [mWh]
/sys/class/power_supply/BAT0/power_now = 12185 [mW]
/sys/class/power_supply/BAT0/status = Discharging

Charge = 97.0 [%]
Capacity = 86.2 [%]

via: https://www.2daygeek.com/tlp-increase-optimize-linux-laptop-battery-life/

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

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

你可能会根据你的需要执行以下命令。我会在这里列举一些你会用到这些命令的例子。

当你添加一个网卡或者从一个物理网卡创建出一个虚拟网卡的时候,你可能需要使用这些命令将新网卡启用起来。另外,如果你对网卡做了某些修改或者网卡本身没有启用,那么你也需要使用以下的某个命令将网卡启用起来。

启用、禁用网卡有很多种方法。在这篇文章里,我们会介绍我们使用过的最好的 5 种方法。

启用禁用网卡可以使用以下 5 个方法来完成:

  • ifconfig 命令:用于配置网卡。它可以提供网卡的很多信息。
  • ifdown/up 命令:ifdown 命令用于禁用网卡,ifup 命令用于启用网卡。
  • ip 命令:用于管理网卡,用于替代老旧的、不推荐使用的 ifconfig 命令。它和 ifconfig 命令很相似,但是提供了很多 ifconfig 命令所不具有的强大的特性。
  • nmcli 命令:是一个控制 NetworkManager 并报告网络状态的命令行工具。
  • nmtui 命令:是一个与 NetworkManager 交互的、基于 curses 图形库的终端 UI 应用。

以下显示的是我的 Linux 系统中可用网卡的信息。

# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:c2:e4:e8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global dynamic noprefixroute enp0s3
       valid_lft 86049sec preferred_lft 86049sec
    inet6 fe80::3899:270f:ae38:b433/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: enp0s8:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:30:5d:52 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/24 brd 192.168.1.255 scope global dynamic noprefixroute enp0s8
       valid_lft 86049sec preferred_lft 86049sec
    inet6 fe80::32b7:8727:bdf2:2f3/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

1、如何使用 ifconfig 命令启用禁用网卡?

ifconfig 命令用于配置网卡。

在系统启动过程中如果需要启用网卡,调用的命令就是 ifconfigifconfig 可以提供很多网卡的信息。不管我们想修改网卡的什么配置,都可以使用该命令。

ifconfig 的常用语法:

# ifconfig [NIC_NAME] Down/Up

执行以下命令禁用 enp0s3 网卡。注意,这里你需要输入你自己的网卡名字。

# ifconfig enp0s3 down

从以下输出结果可以看到网卡已经被禁用了。

# ip a | grep -A 1 "enp0s3:"
2: enp0s3:  mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 08:00:27:c2:e4:e8 brd ff:ff:ff:ff:ff:ff

执行以下命令启用 enp0s3 网卡。

# ifconfig enp0s3 up

从以下输出结果可以看到网卡已经启用了。

# ip a | grep -A 5 "enp0s3:"
2: enp0s3:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:c2:e4:e8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global dynamic noprefixroute enp0s3
       valid_lft 86294sec preferred_lft 86294sec
    inet6 fe80::3899:270f:ae38:b433/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

2、如何使用 ifdown/up 命令启用禁用网卡?

ifdown 命令用于禁用网卡,ifup 命令用于启用网卡。

注意:这两个命令不支持以 enpXXX 命名的新的网络设备。

ifdown/ifup 的常用语法:

# ifdown [NIC_NAME]
# ifup [NIC_NAME]

执行以下命令禁用 eth1 网卡。

# ifdown eth1

从以下输出结果可以看到网卡已经被禁用了。

# ip a | grep -A 3 "eth1:"
3: eth1:  mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 08:00:27:d5:a0:18 brd ff:ff:ff:ff:ff:ff

执行以下命令启用 eth1 网卡。

# ifup eth1

从以下输出结果可以看到网卡已经启用了。

# ip a | grep -A 5 "eth1:"
3: eth1:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:d5:a0:18 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.7/24 brd 192.168.1.255 scope global eth1
    inet6 fe80::a00:27ff:fed5:a018/64 scope link tentative dadfailed
       valid_lft forever preferred_lft forever

ifupifdown 不支持以 enpXXX 命名的网卡。当执行该命令时得到的结果如下:

# ifdown enp0s8
Unknown interface enp0s8

3、如何使用 ip 命令启用禁用网卡?

ip 命令用于管理网卡,用于替代老旧的、不推荐使用的 ifconfig 命令。

它和 ifconfig 命令很相似,但是提供了很多 ifconfig 命令不具有的强大的特性。

ip 的常用语法:

# ip link set  Down/Up

执行以下命令禁用 enp0s3 网卡。

# ip link set enp0s3 down

从以下输出结果可以看到网卡已经被禁用了。

# ip a | grep -A 1 "enp0s3:"
2: enp0s3:  mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 08:00:27:c2:e4:e8 brd ff:ff:ff:ff:ff:ff

执行以下命令启用 enp0s3 网卡。

# ip link set enp0s3 up

从以下输出结果可以看到网卡已经启用了。

# ip a | grep -A 5 "enp0s3:"
2: enp0s3:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:c2:e4:e8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global dynamic noprefixroute enp0s3
       valid_lft 86294sec preferred_lft 86294sec
    inet6 fe80::3899:270f:ae38:b433/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

4、如何使用 nmcli 命令启用禁用网卡?

nmcli 是一个控制 NetworkManager 并报告网络状态的命令行工具。

nmcli 可以用做 nm-applet 或者其他图形化客户端的替代品。它可以用于展示、创建、修改、删除、启用和停用网络连接。除此之后,它还可以用来管理和展示网络设备状态。

nmcli 命令大部分情况下都是使用“配置名称”工作而不是“设备名称”。所以,执行以下命令,获取网卡对应的配置名称。(LCTT 译注:在使用 nmtui 或者 nmcli 管理网络连接的时候,可以为网络连接配置一个名称,就是这里提到的 配置名称 Profile name `)

# nmcli con show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  3d5afa0a-419a-3d1a-93e6-889ce9c6a18c  ethernet  enp0s3
Wired connection 2  a22154b7-4cc4-3756-9d8d-da5a4318e146  ethernet  enp0s8

nmcli 的常用语法:

# nmcli con  Down/Up

执行以下命令禁用 enp0s3 网卡。在禁用网卡的时候,你需要使用配置名称而不是设备名称。

# nmcli con down 'Wired connection 1'
Connection 'Wired connection 1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

从以下输出结果可以看到网卡已经禁用了。

# nmcli dev status
DEVICE  TYPE      STATE         CONNECTION
enp0s8  ethernet  connected     Wired connection 2
enp0s3  ethernet  disconnected  --
lo      loopback  unmanaged     --

执行以下命令启用 enp0s3 网卡。同样的,这里你需要使用配置名称而不是设备名称。

# nmcli con up 'Wired connection 1'
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)

从以下输出结果可以看到网卡已经启用了。

# nmcli dev status
DEVICE  TYPE      STATE      CONNECTION
enp0s8  ethernet  connected  Wired connection 2
enp0s3  ethernet  connected  Wired connection 1
lo      loopback  unmanaged  --

5、如何使用 nmtui 命令启用禁用网卡?

nmtui 是一个与 NetworkManager 交互的、基于 curses 图形库的终端 UI 应用。

在启用 nmtui 的时候,如果第一个参数没有特别指定,它会引导用户选择对应的操作去执行。

执行以下命令打开 mntui 界面。选择 “Active a connection” 然后点击 “OK”。

# nmtui

选择你要禁用的网卡,然后点击 “Deactivate” 按钮,就可以将网卡禁用。

如果要启用网卡,使用上述同样的步骤即可。


via: https://www.2daygeek.com/enable-disable-up-down-nic-network-interface-port-linux-using-ifconfig-ifdown-ifup-ip-nmcli-nmtui/

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

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

Android 模拟器允许我们直接从 Linux 系统上运行我们最喜欢的 Android 应用程序或游戏。对于 Linux 来说,有很多的这样的 Android 模拟器,在过去我们介绍过几个此类应用程序。

你可以通过导航到下面的网址回顾它们。

今天我们将讨论 Anbox Android 模拟器。

Anbox 是什么?

Anbox 是 “Android in a box” 的缩写。Anbox 是一个基于容器的方法,可以在普通的 GNU/Linux 系统上启动完整的 Android 系统。

它是现代化的新模拟器之一。

Anbox 可以让你在 Linux 系统上运行 Android,而没有虚拟化的迟钝,因为核心的 Android 操作系统已经使用 Linux 命名空间(LXE)放置到容器中了。

Android 容器不能直接访问到任何硬件,所有硬件的访问都是通过在主机上的守护进程进行的。

每个应用程序将在一个单独窗口打开,就像其它本地系统应用程序一样,并且它可以显示在启动器中。

如何在 Linux 中安装 Anbox ?

Anbox 也可作为 snap 软件包安装,请确保你已经在你的系统上启用了 snap 支持。

Anbox 软件包最近被添加到 Ubuntu 18.10 (Cosmic) 和 Debian 10 (Buster) 软件仓库。如果你正在运行这些版本,那么你可以轻松地在官方发行版的软件包管理器的帮助下安装。否则可以用 snap 软件包安装。

为使 Anbox 工作,确保需要的内核模块已经安装在你的系统中。对于基于 Ubuntu 的用户,使用下面的 PPA 来安装它。

$ sudo add-apt-repository ppa:morphis/anbox-support
$ sudo apt update
$ sudo apt install linux-headers-generic anbox-modules-dkms

在你安装 anbox-modules-dkms 软件包后,你必须手动重新加载内核模块,或需要系统重新启动。

$ sudo modprobe ashmem_linux
$ sudo modprobe binder_linux

对于 Debian/Ubuntu 系统,使用 APT-GET 命令APT 命令 来安装 anbox。

$ sudo apt install anbox

对于基于 Arch Linux 的系统,我们总是习惯从 AUR 储存库中获取软件包。所以,使用任一个的 AUR 助手 来安装它。我喜欢使用 Yay 工具

$ yuk -S anbox-git

否则,你可以通过导航到下面的文章来 在 Linux 中安装和配置 snap。如果你已经在你的系统上安装 snap,其它的步骤可以忽略。

$ sudo snap install --devmode --beta anbox

Anbox 的必要条件

默认情况下,Anbox 并没有带有 Google Play Store。因此,我们需要手动下载每个应用程序(APK),并使用 Android 调试桥(ADB)安装它。

ADB 工具在大多数的发行版的软件仓库是轻易可获得的,我们可以容易地安装它。

对于 Debian/Ubuntu 系统,使用 APT-GET 命令APT 命令 来安装 ADB。

$ sudo apt install android-tools-adb

对于 Fedora 系统,使用 DNF 命令 来安装 ADB。

$ sudo dnf install android-tools

对于基于 Arch Linux 的系统,使用 Pacman 命令 来安装 ADB。

$ sudo pacman -S android-tools

对于 openSUSE Leap 系统,使用 Zypper 命令 来安装 ADB。

$ sudo zypper install android-tools

在哪里下载 Android 应用程序?

既然我们不能使用 Play Store ,你就得从信得过的网站来下载 APK 软件包,像 APKMirror ,然后手动安装它。

如何启动 Anbox?

Anbox 可以从 Dash 启动。这是默认的 Anbox 外貌。

如何把应用程序推到 Anbox ?

像我先前所说,我们需要手动安装它。为测试目的,我们将安装 YouTube 和 Firefox 应用程序。

首先,你需要启动 ADB 服务。为做到这样,运行下面的命令。

$ adb devices

我们已经下载 YouTube 和 Firefox 应用程序,现在我们将安装。

语法格式:

$ adb install Name-Of-Your-Application.apk

安装 YouTube 和 Firefox 应用程序:

$ adb install 'com.google.android.youtube_14.13.54-1413542800_minAPI19(x86_64)(nodpi)_apkmirror.com.apk'
Success

$ adb install 'org.mozilla.focus_9.0-330191219_minAPI21(x86)(nodpi)_apkmirror.com.apk'
Success

我已经在我的 Anbox 中安装 YouTube 和 Firefox。查看下面的截图。

像我们在文章的开始所说,它将以新的标签页打开任何的应用程序。在这里,我们将打开 Firefox ,并访问 2daygeek.com 网站。


via: https://www.2daygeek.com/anbox-best-android-emulator-for-linux/

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

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

当我们在基于 Ubuntu/Debian 的系统上使用 apt-clone,包安装会变得更加容易。如果你需要在少量系统上安装相同的软件包时,apt-clone 会适合你。

如果你想在每个系统上手动构建和安装必要的软件包,这是一个耗时的过程。它可以通过多种方式实现,Linux 中有许多程序可用。我们过去曾写过一篇关于 Aptik 的文章。它是能让 Ubuntu 用户备份和恢复系统设置和数据的程序之一。

什么是 apt-clone?

apt-clone 能让你为 Debian/Ubuntu 系统创建所有已安装软件包的备份,这些软件包可以在新安装的系统(或容器)或目录中恢复。

该备份可以在相同操作系统版本和架构的多个系统上还原。

如何安装 apt-clone?

apt-clone 包可以在 Ubuntu/Debian 的官方仓库中找到,所以,使用 apt 包管理器apt-get 包管理器 来安装它。

使用 apt 包管理器安装 apt-clone

$ sudo apt install apt-clone

使用 apt-get 包管理器安装 apt-clone

$ sudo apt-get install apt-clone

如何使用 apt-clone 备份已安装的软件包?

成功安装 apt-clone 之后。只需提供一个保存备份文件的位置。我们将在 /backup 目录下保存已安装的软件包备份。

apt-clone 会将已安装的软件包列表保存到 apt-clone-state-Ubuntu18.2daygeek.com.tar.gz 中。

$ sudo apt-clone clone /backup

我们同样可以通过运行 ls 命令来检查。

$ ls -lh /backup/
total 32K
-rw-r--r-- 1 root root 29K Apr 20 19:06 apt-clone-state-Ubuntu18.2daygeek.com.tar.gz

运行以下命令,查看备份文件的详细信息。

$ apt-clone info /backup/apt-clone-state-Ubuntu18.2daygeek.com.tar.gz
Hostname: Ubuntu18.2daygeek.com
Arch: amd64
Distro: bionic
Meta: libunity-scopes-json-def-desktop, ubuntu-desktop
Installed: 1792 pkgs (194 automatic)
Date: Sat Apr 20 19:06:43 2019

根据上面的输出,备份文件中总共有 1792 个包。

如何恢复使用 apt-clone 进行备份的软件包?

你可以使用任何远程复制程序来复制远程服务器上的文件。

$ scp /backup/apt-clone-state-ubunt-18-04.tar.gz Destination-Server:/opt

复制完成后,使用 apt-clone 执行还原。

使用以下命令进行还原。

$ sudo apt-clone restore /opt/apt-clone-state-Ubuntu18.2daygeek.com.tar.gz

请注意,还原将覆盖现有的 /etc/apt/sources.list 并安装/删除包。所以要小心。

如果你要将所有软件包还原到文件夹而不是实际还原,可以使用以下命令。

$ sudo apt-clone restore /opt/apt-clone-state-Ubuntu18.2daygeek.com.tar.gz --destination /opt/oldubuntu

via: https://www.2daygeek.com/apt-clone-backup-installed-packages-and-restore-them-on-fresh-ubuntu-system/

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

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

NTP 服务器和 NTP 客户端可以让我们通过网络来同步时钟。之前,我们已经撰写了一篇关于 NTP 服务器和 NTP 客户端的安装与配置 的文章。

如果你想看这些内容,点击上述的 URL 访问。

Chrony 客户端

Chrony 是 NTP 客户端的替代品。它能以更精确的时间和更快的速度同步时钟,并且它对于那些不是全天候在线的系统非常有用。

chronyd 更小、更节能,它占用更少的内存且仅当需要时它才唤醒 CPU。即使网络拥塞较长时间,它也能很好地运行。它支持 Linux 上的硬件时间戳,允许在本地网络进行极其准确的同步。

它提供下列两个服务。

  • chronyc:Chrony 的命令行接口。
  • chronyd:Chrony 守护进程服务。

如何在 Linux 上安装和配置 Chrony?

由于安装包在大多数发行版的官方仓库中可用,因此直接使用包管理器去安装它。

对于 Fedora 系统,使用 DNF 命令 去安装 chrony。

$ sudo dnf install chrony

对于 Debian/Ubuntu 系统,使用 APT-GET 命令 或者 APT 命令 去安装 chrony。

$ sudo apt install chrony

对基于 Arch Linux 的系统,使用 Pacman 命令 去安装 chrony。

$ sudo pacman -S chrony

对于 RHEL/CentOS 系统,使用 YUM 命令 去安装 chrony。

$ sudo yum install chrony

对于 openSUSE Leap 系统,使用 Zypper 命令 去安装 chrony。

$ sudo zypper install chrony

在这篇文章中,我们将使用下列设置去测试。

  • NTP 服务器:主机名:CentOS7.2daygeek.com,IP:192.168.1.5,OS:CentOS 7
  • Chrony 客户端:主机名:Ubuntu18.2daygeek.com,IP:192.168.1.3,OS:Ubuntu 18.04

服务器的安装请访问 在 Linux 上安装和配置 NTP 服务器 的 URL。

我已经在 CentOS7.2daygeek.com 这台主机上安装和配置了 NTP 服务器,因此,将其附加到所有的客户端机器上。此外,还包括其他所需信息。

chrony.conf 文件的位置根据你的发行版不同而不同。

对基于 RHEL 的系统,它位于 /etc/chrony.conf

对基于 Debian 的系统,它位于 /etc/chrony/chrony.conf

# vi /etc/chrony/chrony.conf

server CentOS7.2daygeek.com prefer iburst
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
logdir /var/log/chrony
maxupdateskew 100.0
makestep 1 3
cmdallow 192.168.1.0/24

更新配置后需要重启 Chrony 服务。

对于 sysvinit 系统。基于 RHEL 的系统需要去运行 chronyd 而不是 chrony

# service chronyd restart
# chkconfig chronyd on

对于 systemctl 系统。 基于 RHEL 的系统需要去运行 chronyd 而不是 chrony

# systemctl restart chronyd
# systemctl enable chronyd

使用像 tackingsourcessourcestats 这样的子命令去检查 chrony 的同步细节。

去检查 chrony 的追踪状态。

# chronyc tracking
Reference ID    : C0A80105 (CentOS7.2daygeek.com)
Stratum         : 3
Ref time (UTC)  : Thu Mar 28 05:57:27 2019
System time     : 0.000002545 seconds slow of NTP time
Last offset     : +0.001194361 seconds
RMS offset      : 0.001194361 seconds
Frequency       : 1.650 ppm fast
Residual freq   : +184.101 ppm
Skew            : 2.962 ppm
Root delay      : 0.107966967 seconds
Root dispersion : 1.060455322 seconds
Update interval : 2.0 seconds
Leap status     : Normal

运行 sources 命令去显示当前时间源的信息。

# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* CentOS7.2daygeek.com          2   6    17    62    +36us[+1230us] +/- 1111ms

sourcestats 命令显示有关 chronyd 当前正在检查的每个源的漂移率和偏移估计过程的信息。

# chronyc sourcestats
210 Number of sources = 1
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
CentOS7.2daygeek.com        5   3    71    -97.314     78.754   -469us   441us

当 chronyd 配置为 NTP 客户端或对等端时,你就能通过 chronyc ntpdata 命令向每一个 NTP 源发送/接收时间戳模式和交错模式的报告。

# chronyc ntpdata

Remote address  : 192.168.1.5 (C0A80105)
Remote port     : 123
Local address   : 192.168.1.3 (C0A80103)
Leap status     : Normal
Version         : 4
Mode            : Server
Stratum         : 2
Poll interval   : 6 (64 seconds)
Precision       : -23 (0.000000119 seconds)
Root delay      : 0.108994 seconds
Root dispersion : 0.076523 seconds
Reference ID    : 85F3EEF4 ()
Reference time  : Thu Mar 28 06:43:35 2019
Offset          : +0.000160221 seconds
Peer delay      : 0.000664478 seconds
Peer dispersion : 0.000000178 seconds
Response time   : 0.000243252 seconds
Jitter asymmetry: +0.00
NTP tests       : 111 111 1111
Interleaved     : No
Authenticated   : No
TX timestamping : Kernel
RX timestamping : Kernel
Total TX        : 46
Total RX        : 46
Total valid RX  : 46

最后运行 date 命令。

# date
Thu Mar 28 03:08:11 CDT 2019

为了立即跟进系统时钟,绕过任何正在进行的缓步调整,请以 root 身份运行以下命令(以手动调整系统时钟)。

# chronyc makestep

via: https://www.2daygeek.com/configure-ntp-client-using-chrony-in-linux/

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

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