蚊章汇 - 2daygeek
type: channel
link: https://linuxcn.bwsl.wang/author/626/
description: 2daygeek
items: 如何在 Linux 上为特定的用户或用户组启用或禁用 SSH？
items: 如何升级 Linux Mint 19.1 为 Linux Mint 19.2
items: Trash-Cli：Linux 上的命令行回收站工具
items: cTop：用于容器监控的命令行工具
items: 给 “rm” 命令添加个“垃圾桶”
items: 在 Linux 上安装必应桌面墙纸更换器
items: python-hwinfo：使用 Linux 系统工具展示硬件信息概况
items: 让 history 命令显示日期和时间
items: 在 RHEL/CentOS 系统上使用 YUM history 命令回滚升级操作
items: LKU：一套在 Ubuntu/LinuxMint 上编译、安装和更新最新内核的 Shell 脚本

如何在 Linux 上为特定的用户或用户组启用或禁用 SSH？
type: item
date: 2020-03-23T18:59:29+08:00
description: 由于你的公司标准规定，你可能只能允许部分人访问 Linux 系统。或者你可能只能够允许几个用户组中的用户访问 Linux 系统。那么如何实现这样的要求呢？最好的方法是什么呢？如何使用一个简单的方法去实现呢？是的，我们会有很多种方法去实现它。但是我们应该使用简单轻松的方法。为了简单轻松的完成目的，我们可以通过对 /etc/ssh/sshd_config 文件做必要的修改来实现。在这篇文章中我们将会向你展示实现要求的详细步骤。为什么我们要这样做呢？是出于安全的原因。你可以访问这个链接来获取更多关于 openSSH 的使用方法。什么是 SSH ？openssh 全称为 OpenBSD Secure Shell。Secure Shell（ssh）是一个自由开源的网络工具，它能让我们在一个不安全的网络中通过使用 Secure Shell（SSH）协议来安全访问远程主机。它采用了客户端-服务器架构（C/S），拥有用户身份认证、加密、在计算机和隧道之间传输文件等功能。我们也可以用 telnet 或 rcp 等传统工具来完成，但是这些工具都不安全，因为它们在执行任何动作时都会使用明文来传输密码。如何在 Linux 中允许用户使用 SSH？通过以下内容，我们可以为指定的用户或用户列表启用 ssh 访问。如果你想要允许多个用户，那么你可以在添加用户时在同一行中用空格来隔开他们。为了达到目的只需要将下面的值追加到 /etc/ssh/sshd_config 文件中去。 在这个例子中， 我们将会允许用户 user3 使用 ssh。# echo "AllowUsers user3" >> /etc/ssh/sshd_config你可以运行下列命令再次检查是否添加成功。# cat /etc/ssh/sshd_config | grep -i allowusers AllowUsers user3这样就行了， 现在只需要重启 ssh 服务和见证奇迹了。（下面这两条命令效果相同， 请根据你的服务管理方式选择一条执行即可）# systemctl restart sshd 或 # service restart sshd接下来很简单，只需打开一个新的终端或者会话尝试用不同的用户身份访问 Linux 系统。是的，这里 user2 用户是不被允许使用 SSH 登录的并且会得到如下所示的错误信息。# ssh user2@192.168.1.4 user2@192.168.1.4's password: Permission denied, please try again.输出:Mar 29 02:00:35 CentOS7 sshd[4900]: User user2 from 192.168.1.6 not allowed because not listed in AllowUsers Mar 29 02:00:35 CentOS7 sshd[4900]: input_userauth_request: invalid user user2 [preauth] Mar 29 02:00:40 CentOS7 unix_chkpwd[4902]: password check failed for user (user2) Mar 29 02:00:40 CentOS7 sshd[4900]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.6 user=user2 Mar 29 02:00:43 CentOS7 sshd[4900]: Failed password for invalid user user2 from 192.168.1.6 port 42568 ssh2与此同时用户 user3 被允许登入系统因为他在被允许的用户列表中。# ssh user3@192.168.1.4 user3@192.168.1.4's password: [user3@CentOS7 ~]$输出:Mar 29 02:01:13 CentOS7 sshd[4939]: Accepted password for user3 from 192.168.1.6 port 42590 ssh2 Mar 29 02:01:13 CentOS7 sshd[4939]: pam_unix(sshd:session): session opened for user user3 by (uid=0)如何在 Linux 中阻止用户使用 SSH ？通过以下内容，我们可以配置指定的用户或用户列表禁用 ssh。如果你想要禁用多个用户，那么你可以在添加…

如何升级 Linux Mint 19.1 为 Linux Mint 19.2
type: item
date: 2019-09-03T07:15:38+08:00
description: Linux Mint 19.2 “Tina” 在 2019 年 8 月 2 日发布，它是一个基于 Ubuntu 18.04 LTS (Bionic Beaver) 的长期支持版本。它将被支持到 2023 年。它带来更新的软件和精细的改进和很多新的特色来使你的桌面使用地更舒适。Linux Mint 19.2 特色有 Cinnamon 4.2 、Linux 内核 4.15 和 Ubuntu 18.04 基础软件包。注意： 不要忘记备份你的重要数据。如果一些东西出错，在最新的安装后，你可以从备份中恢复数据。备份可以通过 rsnapshot 或 timeshift 完成。Linux Mint 19.2 “Tina” 发布日志可以在下面的链接中找到。Linux Mint 19.2 (Tina) 发布日志这里有三种方法，能让我们升级为 Linux Mint 19.2 “Tina”。使用本地方法升级 Linux Mint 19.2 (Tina)使用 Mintupgrade 实用程序方法升级 Linux Mint 19.2 (Tina)使用 GUI 升级 Linux Mint 19.2 (Tina)如何从 Linux Mint 19.1 (Tessa) 升级为 Linux Mint 19.2 (Tina)？升级 Linux Mint 系统是一项简单轻松的任务。有三种方法可以完成。方法-1：使用本地方法升级 Linux Mint 19.2 (Tina)这是执行升级 Linux Mint 系统的本地和标准的方法之一。为做到这点，遵循下面的程序步骤。确保你当前 Linux Mint 系统是最新的。使用下面的命令来更新你现在的软件为最新可用版本。步骤-1：通过运行下面的命令来刷新存储库索引。$ sudo apt update运行下面的命令来在系统上安装可用的更新。$ sudo apt upgrade运行下面的命令来在版本中执行可用的次要更新。$ sudo apt full-upgrade默认情况下，它将通过上面的命令来移除过时的软件包。但是，我建议你运行下面的命令。$ sudo apt autoremove $ sudo apt clean如果安装一个新的内核，你可能需要重启系统。如果是这样，运行下面的命令。$ sudo shutdown -r now最后检查当前安装的版本。$ lsb_release -a No LSB modules are available. Distributor ID: Linux Mint Description: Linux Mint 19.1 (Tessa) Release: 19.1 Codename: Tessa步骤-2：更新/修改 /etc/apt/sources.list 文件在重启后，修改 sources.list 文件，并从 Linux Mint 19.1 (Tessa) 指向 Linux Mint 19.2 (Tina)。首先，使用 cp 命令备份下面的配置文件。$ sudo cp /etc/apt/sources.list /root $ sudo cp -r /etc/apt/sources.list.d/ /root修改 sources.list 文件，并指向 Linux Mint 19.2 (Tina)。$ sudo sed -i 's/tessa/tina/g' /etc/apt/sources.list $ sudo sed -i 's/tessa/tina/g' /etc/apt/sources.list.d/*通过运行下面的命令来刷新存储库索引。$ sudo apt update运行下面的命令来在系统上安装可用的更新。在升级过程中，你可用需要确认服务重启和配置文件替换，因此，只需遵循屏幕上的指令。升级可能花费一些时间，具体依赖于更新的数量和你的网络速度。$ sudo apt upgrade运行下面的命令来执行一次完整的系统升级。$ sudo apt full-upgrade默认情况下，上面的命令将移除过时的软件包。但是，我建议你再次运行下面的命令。$ sudo apt autoremove $ sudo apt clean最后重启系统来启动 Linux Mint 19.2 (Tina)。$ sudo shutdown -r now升级后的 Linux Mint 版本可以通过运行下面的命令验证。$ lsb_release -a No LSB modules are available. Distributor ID: Linux Mint Description: Linux Mint 19.2 (Tina) Release: 19.2 Codename: Tina方法-2：使用 Mint…

Trash-Cli：Linux 上的命令行回收站工具
type: item
date: 2018-09-19T16:28:21+08:00
description: 相信每个人都对 回收站 trashcan 很熟悉，因为无论是对 Linux 用户，还是 Windows 用户，或者 Mac 用户来说，它都很常见。当你删除一个文件或目录的时候，该文件或目录会被移动到回收站中。需要注意的是，当把文件移动到回收站以后，文件系统空间并没有被释放，除非把回收站清空。如果不想永久删除文件的话（清空回收站），可以利用回收站临时存储被删除了的文件，从而在必要的时候能够帮助我们恢复删除了的文件。但是，如果在命令行使用 rm 命令进行删除操作，那么你是不可能在回收站中找到任何被删除了的文件或目录的。所以，在执行 rm 命令前请一定要三思。如果你犯了错误（执行了 rm 命令），那么文件就被永久删除了，无法再恢复回来，因为存储在磁盘上的元数据已经不在了。根据 freedesktop.org 规范， 垃圾 trash 是由桌面管理器比如 GNOME、KDE 和 XFCE 等提供的一个特性。当通过文件管理器删除一个文件或目录的时候，该文件或目录将会成为 垃圾 trash ，然后被移动到回收站中，回收站对应的目录是 $HOME/.local/share/Trash 。回收站目录包含两个子目录：files 和 info 。files 目录存储实际被删除了的文件和目录，info 目录包含被删除了的文件和目录的信息，比如文件路径、删除日期和时间，每个文件单独存储。你可能会问，既然已经有了 图形用户界面 GUI 的回收站，为什么还需要命令行工具呢？因为对于大多数使用 *NIX 系统的家伙（包括我）来说，即使使用的是基于图形用户界面的系统，也更喜欢使用命令行而不是图形用户界面。所以，如果有人在寻找一个命令行回收站工具，那么这儿有一个不错的选择。Trash-Cli 是什么trash-cli 是一个命令行回收站工具，并且符合 FreeDesktop.org 的 垃圾 trash 规范。它能够存储每一个垃圾文件的名字、原始路径、删除日期和权限。如何在 Linux 上安装 Trash-Cli绝大多数的 Linux 发行版官方仓库都提供了 Trash-Cli 的安装包，所以你可以运行下面这些命令来安装。对于 Debian/Ubuntu 用户，使用 apt-get 或 apt 命令来安装 Trash-Cli：$ sudo apt install trash-cli对于 RHEL/CentOS 用户，使用 yum 命令来安装 Trash-Cli：$ sudo yum install trash-cli对于 Fedora 用户，使用 dnf 命令来安装 Trash-Cli：$ sudo dnf install trash-cli对于 Arch Linux 用户，使用 pacman 命令来安装 Trash-Cli：$ sudo pacman -S trash-cli对于 openSUSE 用户，使用 zypper 命令来安装 Trash-Cli：$ sudo zypper in trash-cli如果你的发行版中没有提供 Trash-Cli 的安装包，那么你也可以使用 pip 来安装。为了能够安装 python 包，你的系统中应该会有 pip 包管理器。$ sudo pip install trash-cli Collecting trash-cli Downloading trash-cli-0.17.1.14.tar.gz Installing collected packages: trash-cli Running setup.py bdist_wheel for trash-cli ... done Successfully installed trash-cli-0.17.1.14如何使用 Trash-CliTrash-Cli 的使用不难，因为它提供了一个很简单的语法。Trash-Cli 提供了下面这些命令：trash-put： 删除文件和目录（仅放入回收站中）trash-list ：列出被删除了的文件和目录trash-restore：从回收站中恢复文件或目录 trash.trash-rm：删除回收站中的文件trash-empty：清空回收站下面，让我们通过一些例子来试验一下。1) 删除文件和目录：在这个例子中，我们通过运行下面这个命令，将 2g.txt 这一文件和 magi 这一文件夹移动到回收站中。$ trash-put 2g.txt magi和你在文件管理器中看到的一样。2) 列出被删除了的文件和目录：为了查看被删除了的文件和目录，你需要运行下面这个命令。之后，你可以在输出中看到被删除文件和目录的详细信息，比如名字、删除日期和时间，以及文件路径。$ trash-list 2017-10-01 01:40:50 /home/magi…

cTop：用于容器监控的命令行工具
type: item
date: 2018-04-03T20:51:19+08:00
description: 最近 Linux 容器很火，我们中的大多数人甚至已经在使用它，同时一些人也开始学习它。我们已经介绍了有名的 GUI（用户图形界面） 工具如 Portainer 和 Rancher 。这将会有助于我们通过 GUI 管理容器。这篇指南将会通过 cTop 命令帮助我们理解和监控 Linux 容器。它是一个类似 top 命令的命令行工具。什么是 cTopctop 为多个容器提供了一个简洁凝练的实时指标概览。它是一个类 top 的针对容器指标的界面。它展示了容器指标比如 CPU 利用率、内存利用率、磁盘 I/O 读写、进程 ID（PID）和网络发送（TX - 从此服务器发送）以及接受（RX - 此服务器接受）。ctop 带有对 Docker 和 runc 的内建支持；对其他容器和集群系统的连接计划在未来版本中推出。它不需要任何参数并且默认使用 Docker 主机变量。建议阅读：Portainer – 一个简单的 Docker 图形管理界面Rancher – 一个完整的生产环境容器管理平台如何安装 cTop开发者提供了一个简单的 shell 脚本来帮助我们直接使用 ctop。我们要做的，只是在 /bin 目录下下载 ctop shell 文件来保证全局访问。最后给予 ctop 脚本文件执行权限。在 /usr/local/bin 目录下下载 ctop shell 脚本。$ sudo wget https://github.com/bcicen/ctop/releases/download/v0.7/ctop-0.7-linux-amd64 -O /usr/local/bin/ctop 对 ctop shell 脚本设置执行权限。$ sudo chmod +x /usr/local/bin/ctop 另外你可以通过 docker 来安装和运行 ctop。在此之前先确保你已经安装过 docker。为了安装 docker，参考以下链接。建议阅读：如何在 Linux 上安装 Docker如何在 Linux 上玩转 Docker 镜像如何在 Linux 上玩转 Docker 容器如何在 Docker 容器中安装，运行应用$ docker run --rm -ti \ --name=ctop \ -v /var/run/docker.sock:/var/run/docker.sock \ quay.io/vektorlab/ctop:latest 如何使用 cTop直接启动 ctop 程序而不用任何参数。默认它绑定的 a 键用来展示所有容器（运行的和没运行的）。ctop 头部显示你的系统时间和容器的总数。$ ctop 你可能得到以下类似输出。如何管理容器你可以使用 ctop 来管理容器。选择一个你想要管理的容器然后按下回车键，选择所需选项如 start、stop、remove 等。如何给容器排序默认 ctop 使用 state 字段来给容器排序。按下 s 键来按不同的方面给容器排序。如何查看容器指标如何你想要查看关于容器的更多细节和指标，只用选择你想要查看的相应容器然后按 o 键。如何查看容器日志选择你想要查看日志的相应容器然后按 l 键。仅显示活动容器使用 -a 选项运行 ctop 命令来仅显示活动容器打开帮助对话框运行 ctop，只需按 h 键来打开帮助部分。via: https://www.2daygeek.com/ctop-a-command-line-tool-for-container-monitoring-and-management-in-linux/作者：2DAYGEEK 译者：kimii 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出

给 “rm” 命令添加个“垃圾桶”
type: item
date: 2018-03-10T01:42:26+08:00
description: 人类犯错误是因为我们不是一个可编程设备，所以，在使用 rm 命令时要额外注意，不要在任何时候使用 rm -rf *。当你使用 rm 命令时，它会永久删除文件，不会像文件管理器那样将这些文件移动到 “垃圾箱”。有时我们会将不应该删除的文件删除掉，所以当错误地删除了文件时该怎么办？ 你必须看看恢复工具（Linux 中有很多数据恢复工具），但我们不知道是否能将它百分之百恢复，所以要如何解决这个问题？我们最近发表了一篇关于 Trash-Cli 的文章，在评论部分，我们从用户 Eemil Lgz 那里获得了一个关于 saferm.sh 脚本的更新，它可以帮助我们将文件移动到“垃圾箱”而不是永久删除它们。将文件移动到“垃圾桶”是一个好主意，当你无意中运行 rm 命令时，可以拯救你；但是很少有人会说这是一个坏习惯，如果你不注意“垃圾桶”，它可能会在一定的时间内被文件和文件夹堆积起来。在这种情况下，我建议你按照你的意愿去做一个定时任务。这适用于服务器和桌面两种环境。 如果脚本检测到 GNOME 、KDE、Unity 或 LXDE 桌面环境（DE），则它将文件或文件夹安全地移动到默认垃圾箱 $HOME/.local/share/Trash/files，否则会在您的主目录中创建垃圾箱文件夹 $HOME/Trash。saferm.sh 脚本托管在 Github 中，可以从仓库中克隆，也可以创建一个名为 saferm.sh 的文件并复制其上的代码。$ git clone https://github.com/lagerspetz/linux-stuff $ sudo mv linux-stuff/scripts/saferm.sh /bin $ rm -Rf linux-stuff 在 .bashrc 文件中设置别名，alias rm=saferm.sh 执行下面的命令使其生效，$ source ~/.bashrc 一切就绪，现在你可以执行 rm 命令，自动将文件移动到”垃圾桶”，而不是永久删除它们。测试一下，我们将删除一个名为 magi.txt 的文件，命令行明确的提醒了 Moving magi.txt to $HOME/.local/share/Trash/file。$ rm -rf magi.txt Moving magi.txt to /home/magi/.local/share/Trash/files 也可以通过 ls 命令或 trash-cli 进行验证。$ ls -lh /home/magi/.local/share/Trash/files Permissions Size User Date Modified Name .rw-r--r-- 32 magi 11 Oct 16:24 magi.txt 或者我们可以通过文件管理器界面中查看相同的内容。![](/data/attachment/album/201803/09/174228rxpmllt2pxc9h6hh.png)（LCTT 译注：原文此处混淆了部分 trash-cli 的内容，考虑到文章衔接和逻辑，此处略。）要了解 saferm.sh 的其他选项，请查看帮助。$ saferm.sh -h This is saferm.sh 1.16. LXDE and Gnome3 detection. Will ask to unsafe-delete instead of cross-fs move. Allows unsafe (regular rm) delete (ignores trashinfo). Creates trash and trashinfo directories if they do not exist. Handles symbolic link deletion. Does not complain about different user any more. Usage: /path/to/saferm.sh [OPTIONS] [--] files and dirs to safely remove OPTIONS: -r allows recursively removing directories. -f Allow deleting special files (devices, ...). -u Unsafe mode, bypass trash and delete files permanently. -v Verbose, prints more messages. Default in this version. -q Quiet mode. Opposite of verbose. via: https://www.2daygeek…

在 Linux 上安装必应桌面墙纸更换器
type: item
date: 2018-03-01T07:16:00+08:00
description: 你是否厌倦了 Linux 桌面背景，想要设置好看的壁纸，但是不知道在哪里可以找到？别担心，我们在这里会帮助你。我们都知道必应搜索引擎，但是由于一些原因很少有人使用它，每个人都喜欢必应网站的背景壁纸，它是非常漂亮和惊人的高分辨率图像。如果你想使用这些图片作为你的桌面壁纸，你可以手动下载它，但是很难去每天下载一个新的图片，然后把它设置为壁纸。这就是自动壁纸改变的地方。必应桌面墙纸更换器会自动下载并将桌面壁纸更改为当天的必应照片。所有的壁纸都储存在 /home/[user]/Pictures/BingWallpapers/。方法 1: 使用 Utkarsh Gupta Shell 脚本这个小型 Python 脚本会自动下载并将桌面壁纸更改为当天的必应照片。该脚本在机器启动时自动运行，并工作于 GNU/Linux 上的 Gnome 或 Cinnamon 环境。它不需要手动工作，安装程序会为你做所有事情。从 2.0+ 版本开始，该脚本的安装程序就可以像普通的 Linux 二进制命令一样工作，它会为某些任务请求 sudo 权限。只需克隆仓库并切换到项目目录，然后运行 shell 脚本即可安装必应桌面墙纸更换器。$ curl https://github.com/UtkarshGpta/bing-desktop-wallpaper-changer/archive/master.zip $ unzip master $ cd bing-desktop-wallpaper-changer-master 运行 installer.sh 使用 --install 选项来安装必应桌面墙纸更换器。它会下载并设置必应照片为你的 Linux 桌面。$ ./installer.sh --install Bing-Desktop-Wallpaper-Changer BDWC Installer v3_beta2 GitHub: Contributors: . . [sudo] password for daygeek: ****** . Where do you want to install Bing-Desktop-Wallpaper-Changer? Entering 'opt' or leaving input blank will install in /opt/bing-desktop-wallpaper-changer Entering 'home' will install in /home/daygeek/bing-desktop-wallpaper-changer Install Bing-Desktop-Wallpaper-Changer in (opt/home)? :Press Enter Should we create bing-desktop-wallpaper-changer symlink to /usr/bin/bingwallpaper so you could easily execute it? Create symlink for easy execution, e.g. in Terminal (y/n)? : y Should bing-desktop-wallpaper-changer needs to autostart when you log in? (Add in Startup Application) Add in Startup Application (y/n)? : y . . Executing bing-desktop-wallpaper-changer... Finished!! 要卸载该脚本：$ ./installer.sh --uninstall 使用帮助页面了解更多关于此脚本的选项。$ ./installer.sh --help 方法 2: 使用 GNOME Shell 扩展这个轻量级 GNOME shell 扩展，可将你的壁纸每天更改为微软必应的壁纸。它还会显示一个包含图像标题和解释的通知。该扩展大部分基于 Elinvention 的 NASA APOD 扩展，受到了 Utkarsh Gupta 的 Bing Desktop WallpaperChanger 启发。特点获取当天的必应壁纸并设置为锁屏和桌面墙纸（这两者都是用户可选的）可强制选择某个特定区域（即地区）为多个显示器自动选择最高分辨率（和最合适的墙纸）可以选择在 1 到 7 天之后清理墙纸目录（删除最旧的）只有当它们被更新时，才会尝试下载壁纸不会持续进行更新 - 每天只进行一次，启动时也要进行一次（更新是在必应更新时进行的）如何安装访问 extenisons.gnome.org 网站并将切换按钮拖到 “ON”，然后点击…

python-hwinfo：使用 Linux 系统工具展示硬件信息概况
type: item
date: 2018-01-26T18:35:00+08:00
description: 到目前为止，我们已经介绍了大部分获取 Linux 系统硬件信息和配置的工具，不过也有许多命令可用于相同目的。而且，一些工具会显示所有硬件组件的详细信息，或只显示特定设备的信息。在这个系列中, 今天我们讨论一下关于 python-hwinfo， 它是一个展示硬件信息概况的工具之一，并且其配置简洁。什么是 python-hwinfo这是一个通过解析系统工具（例如 lspci 和 dmidecode）的输出，来检查硬件和设备的 Python 库。它提供了一个简单的命令行工具，可以用来检查本地、远程的主机和记录的信息。用 sudo 运行该命令以获得最大的信息。另外，你可以提供服务器 IP 或者主机名、用户名和密码，在远程的服务器上执行它。当然你也可以使用这个工具查看其它工具捕获的输出（例如 demidecode 输出的 dmidecode.out，/proc/cpuinfo 输出的 cpuinfo，lspci -nnm 输出的 lspci-nnm.out）。建议阅读：Inxi：一个功能强大的获取 Linux 系统信息的命令行工具Dmidecode：获取 Linux 系统硬件信息的简易方式LSHW (Hardware Lister)： 一个在 Linux 上获取硬件信息的漂亮工具hwinfo (Hardware Info)：一个在 Linux 上检测系统硬件信息的漂亮工具如何使用 lspci、lsscsi、lsusb 和 lsblk 获取 Linux 系统设备信息Linux 上如何安装 python-hwinfo在绝大多数 Linux 发行版，都可以通过 pip 包安装。为了安装 python-hwinfo， 确保你的系统已经有 Python 和python-pip 包作为先决条件。pip 是 Python 附带的一个包管理工具，在 Linux 上安装 Python 包的推荐工具之一。在 Debian/Ubuntu 平台，使用 APT-GET 命令 或者 APT 命令 安装 pip。$ sudo apt install python-pip 在 RHEL/CentOS 平台，使用 YUM 命令安装 pip。$ sudo yum install python-pip python-devel 在 Fedora 平台，使用 DNF 命令安装 pip。$ sudo dnf install python-pip 在 Arch Linux 平台，使用 Pacman 命令安装 pip。$ sudo pacman -S python-pip 在 openSUSE 平台，使用 Zypper 命令安装 pip。$ sudo zypper python-pip 最后，执行下面的 pip 命令安装 python-hwinfo。$ sudo pip install python-hwinfo 怎么在本地机器使用 python-hwinfo执行下面的命令，检查本地机器现有的硬件。输出很清楚和整洁，这是我在其他命令中没有看到的。它的输出分为了五类：Bios Info（BIOS 信息）： BIOS 供应商名称、系统产品名称、系统序列号、系统唯一标识符、系统制造商、BIOS 发布日期和BIOS 版本。CPU Info（CPU 信息）：处理器编号、供应商 ID，CPU 系列代号、型号、步进编号、型号名称、CPU 主频。Ethernet Controller Info（网卡信息）： 供应商名称、供应商 ID、设备名称、设备 ID、子供应商名称、子供应商 ID，子设备名称、子设备 ID。Storage Controller Info（存储设备信息）： 供应商名称、供应商 ID、设备名称、设备 ID、子供应商名称，子供应商 ID、子设备名称、子设备 ID。GPU Info（GPU 信息）： 供应商名称、供应商 ID、设备名称、设备 ID、子供应商名称、子供应商 ID、子设备名称、子设备 ID。$ sudo hwinfo Bios Info: +----------------------+--------------------------------------+ | Key | Value | +----------------------+--------------------------------------+ | bios_vendor_name | IBM | | system_product_name | System x3550 M3: -[6102AF1]- | | system_serial_number | RS2IY21 | | chassis_type | Rack Mount Chassis | | system_uuid | 4C4C4544…

让 history 命令显示日期和时间
type: item
date: 2018-01-18T19:20:07+08:00
description: 我们都对 history 命令很熟悉。它将终端上 bash 执行过的所有命令存储到 .bash_history 文件中，来帮助我们复查用户之前执行过的命令。默认情况下 history 命令直接显示用户执行的命令而不会输出运行命令时的日期和时间，即使 history 命令记录了这个时间。运行 history 命令时，它会检查一个叫做 HISTTIMEFORMAT 的环境变量，这个环境变量指明了如何格式化输出 history 命令中记录的这个时间。若该值为 null 或者根本没有设置，则它跟大多数系统默认显示的一样，不会显示日期和时间。HISTTIMEFORMAT 使用 strftime 来格式化显示时间（strftime - 将日期和时间转换为字符串）。history 命令输出日期和时间能够帮你更容易地追踪问题。%T： 替换为时间（%H:%M:%S）。%F： 等同于 %Y-%m-%d （ISO 8601:2000 标准日期格式）。下面是 history 命令默认的输出。# history 1 yum install -y mysql-server mysql-client 2 service mysqld start 3 sysdig proc.name=sshd 4 sysdig -c topprocs_net 5 sysdig proc.name=sshd 6 sysdig proc.name=sshd | more 7 sysdig fd.name=/var/log/auth.log | more 8 sysdig fd.name=/var/log/mysqld.log 9 sysdig -cl 10 sysdig -i httplog 11 sysdig -i proc_exec_time 12 sysdig -i topprocs_cpu 13 sysdig -c topprocs_cpu 14 sysdig -c tracers_2_statsd 15 sysdig -c topfiles_bytes 16 sysdig -c topprocs_cpu 17 sysdig -c topprocs_cpu "fd.name contains sshd" 18 sysdig -c topprocs_cpu "proc.name contains sshd" 19 csysdig 20 sysdig -c topprocs_cpu 21 rpm --import https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public 22 curl -s -o /etc/yum.repos.d/draios.repo http://download.draios.com/stable/rpm/draios.repo 23 yum install -y epel-release 24 yum update 25 yum makecache 26 yum -y install kernel-devel-$(uname -r) 27 yum -y install sysdig 28 sysdig 29 yum install httpd mysql 30 service httpd start 根据需求，有三种不同的设置环境变量的方法。临时设置当前用户的环境变量永久设置当前/其他用户的环境变量永久设置所有用户的环境变量注意： 不要忘了在最后那个单引号前加上空格，否则输出会很混乱的。方法 1：运行下面命令为为当前用户临时设置 HISTTIMEFORMAT 变量。这会一直生效到下次重启。# export HISTTIMEFORMAT='%F %T ' 方法 2：将 HISTTIMEFORMAT 变量加到 .bashrc 或 .bash_profile 文件中，让它永久生效。# echo 'HISTTIMEFORMAT="%F %T "' >> ~/.bashrc 或 # echo 'HISTTIMEFORMAT="%F %T "' >> ~/.bash_profile 运行下面命令来让文件中的修改生效。# source ~/.bashrc 或 # source ~/.bash_profile 方法 3：将 HISTTIMEFORMAT 变量加入 /etc/profile 文件中，让它对所有用户永久生效。# echo 'HISTTIMEFORMAT="%F %T "' >> /etc/profile 运行下面命令来让文件中的修改生效。# source /etc/profile 输出结果为：# history 1 2017-08-16 15:30:15 yum install…

在 RHEL/CentOS 系统上使用 YUM history 命令回滚升级操作
type: item
date: 2018-01-18T16:47:00+08:00
description: 为服务器打补丁是 Linux 系统管理员的一项重要任务，为的是让系统更加稳定，性能更加优化。厂商经常会发布一些安全/高危的补丁包，相关软件需要升级以防范潜在的安全风险。Yum （Yellowdog Update Modified） 是 CentOS 和 RedHat 系统上用的 RPM 包管理工具，yum history 命令允许系统管理员将系统回滚到上一个状态，但由于某些限制，回滚不是在所有情况下都能成功，有时 yum 命令可能什么都不做，有时可能会删掉一些其他的包。我建议你在升级之前还是要做一个完整的系统备份，而 yum history 并不能用来替代系统备份的。系统备份能让你将系统还原到任意时候的节点状态。推荐阅读：在 RHEL/CentOS 系统上使用 YUM 命令管理软件包在 Fedora 系统上使用 DNF （YUM 的一个分支）命令管理软件包如何让 history 命令显示日期和时间某些情况下，安装的应用程序在升级了补丁之后不能正常工作或者出现一些错误（可能是由于库不兼容或者软件包升级导致的），那该怎么办呢？与应用开发团队沟通，并找出导致库和软件包的问题所在，然后使用 yum history 命令进行回滚。注意：它不支持回滚 selinux，selinux-policy-*，kernel，glibc （以及依赖 glibc 的包，比如 gcc）。不建议将系统降级到更低的版本（比如 CentOS 6.9 降到 CentOS 6.8），这会导致系统处于不稳定的状态让我们先来看看系统上有哪些包可以升级，然后挑选出一些包来做实验。# yum update Loaded plugins: fastestmirror, security Setting up Update Process Loading mirror speeds from cached hostfile epel/metalink | 12 kB 00:00 * epel: mirror.csclub.uwaterloo.ca base | 3.7 kB 00:00 dockerrepo | 2.9 kB 00:00 draios | 2.9 kB 00:00 draios/primary_db | 13 kB 00:00 epel | 4.3 kB 00:00 epel/primary_db | 5.9 MB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 updates/primary_db | 2.5 MB 00:00 Resolving Dependencies --> Running transaction check ---> Package git.x86_64 0:1.7.1-8.el6 will be updated ---> Package git.x86_64 0:1.7.1-9.el6_9 will be an update ---> Package httpd.x86_64 0:2.2.15-60.el6.centos.4 will be updated ---> Package httpd.x86_64 0:2.2.15-60.el6.centos.5 will be an update ---> Package httpd-tools.x86_64 0:2.2.15-60.el6.centos.4 will be updated ---> Package httpd-tools.x86_64 0:2.2.15-60.el6.centos.5 will be an update ---> Package perl-Git.noarch 0:1.7.1-8.el6 will be updated ---> Package perl-Git.noarch 0:1.7.1-9.el6_9 will be an update --> Finished Dependency Resolution Dependencies Resolved ================================================================================================= Package Arch Version Repository Size ================================================================================================= Updating: git x86_64 1.7.1-9.el6_9 updates 4.…

LKU：一套在 Ubuntu/LinuxMint 上编译、安装和更新最新内核的 Shell 脚本
type: item
date: 2017-08-01T21:19:00+08:00
description: 以手动方式安装和升级最新的 Linux 内核对于每个人来说都不是一件小事，甚至包括一些有经验的人也是如此。它需要对 Linux 内核有深入的了解。过去我们已经介绍了 UKUU（Ubuntu Kernel Upgrade Utility），它可以从 kernel.ubuntu.com 网站上自动检测最新的主线内核，并弹出一个不错的窗口界面进行安装。Linux Kernel Utilities （LKU）提供一组 shell 脚本（三个 Shell 脚本），可以帮助用户从 kernel.org 获取并编译和安装最新的 Linux 内核，也可以从 kernel.ubuntu.com 获取安装最新的预编译的 Ubuntu 内核。甚至可以根据需要选择所需的内核（手动内核选择）。该脚本还将根据 PGP 签名文件检查下载的归档文件，并且可以选择通用和低延迟版内核。建议阅读：ukuu：一种在基于 Ubuntu 的系统上轻松安装升级 Linux 内核的方式它可以删除或清除所有非活动的内核，并且不会为了安全目的留下备份的内核。强烈建议在执行此脚本之前重新启动一次。compile_linux_kernel.sh ：用户可以从 kernel.org 编译和安装所需的或最新的内核update_ubuntu_kernel.sh ：用户可以从 kernel.ubuntu.com 安装并更新所需或最新的预编译 Ubuntu 内核remove_old_kernels.sh ：这将删除或清除所有非活动内核，并且只保留当前加载的版本kernel.org 有固定的发布周期（每三个月一次），发布的内核包括了新的功能，改进了硬件和系统性能。由于它具有标准的发布周期，除了滚动发布的版本（如 Arch Linux，openSUSE Tumbleweed 等），大多数发行版都不提供最新的内核。如何安装 Linux Kernel Utilities (LKU)正如我们在文章的开头所说的，它的 shell 脚本集只是克隆开发人员的 github 仓库并运行相应的 shell 文件来执行这个过程。$ git clone https://github.com/mtompkins/linux-kernel-utilities.git && cd linux-kernel-utilities 安装指定版本内核为了测试的目的，我们将安装 Linux v4.4.10-xenial 内核。在安装新内核之前，我们需要通过 uanme -a 命令检查当前安装的内核版本，以便我们可以检查新内核是否可以安装。$ uname -a Linux magi-VirtualBox 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 根据上面的输出，我们的系统使用的是 4.4.0-21 通用内核。只需运行 update_ubuntu_kernel.sh shell 脚本。第一次运行脚本时会检查是否满足所有的依赖关系，然后自动安装缺少的依赖项。它会检测系统使用的发行版，并检索 kernel.ubuntu.com 中可用的预编译内核。现在，从列表中选择你需要的内核并输入序号，然后按回车键，它将下载内核映像（linux-headers-4.4.10，linux-headers-4.4.10-xxx-generic 和 linux-image-4.4.10-xxx-generic）。一旦内核镜像被下载，它将要求输入 sudo 密码来启动新内核的安装。$ ./update_ubuntu_kernel.sh [+] Checking Distro \_ Distro identified as LinuxMint. [+] Checking Dependencies curl Found dkms Found git Found sudo Found wget Found whiptail Found lynx Not Found -- Installing Dependencies -- [!] The first time this script is run missing dependencies will be installed. For compiling a kernel this may take a bit of time. Feedback will be provided. [+] Dependencies \_Elevating permissions as necessary . . . [%] Elevated [+] Testing for previous h…