2018年9月

Linux 内核之父 Linus Torvalds 为其无理咆哮而道歉,并决定离开 Linux 内核项目休息一段时间,学习一下如何与人相处之道。

前一段时间, Linus Torvalds 因为其个人的苏格兰休假计划而要将今年的 Linux 内核维护者峰会召开地点从原定的加拿大改到苏格兰。在会议上 Torvalds 招致了社区成员的强烈反对,以至于本次会议也由讨论技术问题,变成了抨击 Torvalds 本人的问题。一些维护者指责他“根本不懂得如何相处”,而由于此次议程变动,也使得很多本应该讨论的技术问题没能付诸讨论。

在昨天的邮件列表当中,Torvalds 在邮件中承认其对其他 Linux 内核开发者和贡献者们的“轻率的攻击”是“不专业的,也是不必要的,而且很多回应属于人身攻击。从努力维护好内核更新的角度,他们提出的观点是合情合理的。……我知道这是不对的,我真的感到很抱歉。”

“我也许需要‘照照镜子’了。” Torvalds 表示,“一方面,我终于意识到,我希望不出席每年一度的 Linux 内核维护者峰会的想法是不妥当的,另一方面,我意识到自己一直忽视了社群中的一些相当深思熟虑的观点。”

“我误会了其他人,并且几年来都没有意识到我对形势的判断,导致了社群内的不专业的环境的危害有多么巨大。”

“我需要改变一些我的行为”,他补充说,“我要向那些因为我个人行为而受到伤害,甚至可能完全脱离了内核开发的人道歉。”这不是 Torvalds 第一次为其出言不逊而道歉,之前甚至因为他的无礼而导致一位著名的女性 Linux 内核核心开发人员 Sarah Sharp 的退出,不过这次看起来 Torvalds 是真正开始反省自己,并以一个技术人员的思路寻求“技术”解决方案以解决这个问题。

而上一次 Torvalds 感觉到 Linux 内核开发中的“痛点”,决定自己出手解决这个“技术”问题的后果就是 Git 的产生。

Linus Torvalds 是 Linux 内核的创始人,并从 1991 年开始就一直从事于 Linux 内核的开发和管理。他表示他会从 Linux 内核的开发当中休息一段时间——就像当年为了创建 Git 一样休息一段时间,做做“自我反省”,开发一些像 Git 一样的小工具来解决他的问题。

“我需要休息一段时间,以找到一些解决我在工具和工作流方面的问题的办法”,他接着说,“这不是我要‘撒手不干’了,我不觉得我不想继续维护 Linux 内核了。恰恰相反,我非常想继续做这个我已经做了快三十年的项目。”

“没错,我可能只是要开发一些‘工具’,比如邮件过滤器,这样我下次在邮件里写了脏话,就不会发出去了。因为我是一个工具信徒,我觉得一些问题完全可以通过简单的自动化流程而解决。”

那么,让我们拭目以待,看看 Torvalds 休息的这段时间,内核社区会怎么样,而他又会给我们带来什么变化或惊喜。

本篇文章会介绍如何在 Fedora 系统中,安装、配置、使用 i3 瓦片式桌面管理器。

在我的文章 i3 桌面让 Linux 更好的 5 个理由,我分享了选择 i3 桌面管理器 作为一种 Linux 桌面替代方案的最主要五个理由。

在本篇文章中,我将向大家展示,如何在 Fedora 28 上安装与简单配置 i3。

1、 安装

首先进入 Fedora 系统中,打开一个终端。使用 dnf 来安装需要的软件包,如下:

[ricardo@f28i3 ~]$ sudo dnf install -y i3 i3-ipc i3status i3lock dmenu terminator --exclude=rxvt-unicode
Last metadata expiration check: 1:36:15 ago on Wed 08 Aug 2018 12:04:31 PM EDT.
Dependencies resolved.
================================================================================================
 Package                     Arch         Version                           Repository     Size
================================================================================================
Installing:
 dmenu                       x86_64       4.8-1.fc28                        fedora         33 k
 i3                          x86_64       4.15-1.fc28                       fedora        323 k
 i3-ipc                      noarch       0.1.4-12.fc28                     fedora         14 k
 i3lock                      x86_64       2.9.1-2.fc28                      fedora         33 k
 i3status                    x86_64       2.12-1.fc28                       updates        62 k
 terminator                  noarch       1.91-4.fc28                       fedora        570 k
Installing dependencies:
 dzen2                       x86_64       0.8.5-21.20100104svn.fc28         fedora         60 k

... Skipping dependencies/install messages

Complete!
[ricardo@f28i3 ~]$

注意:在这个命令中,我排除了 rxvt-unicode 这个包,因为我更喜欢 terminator 作为我的终端模拟器。

据用户目前的系统状态,在命令执行过程中可能会安装很多依赖。等待所有的依赖安装完成,之后重启你的电脑。

2、 首次登录与初始化

在你的机器重启之后,你便可以第一次体验 i3 了。在 GNOME 显示管理器(GDM)屏幕,选择你的用户名,之后先别着急输密码,点击下方的密码输入框下方的小齿轮,之后选择 i3 而不是 GNOME,像下方这样:

输入你的密码,并点击 “Sign In”。在你第一次登入之后,会先看到 i3 的配置界面:

点击回车键就会在 $HOME/.config/i3 生成一个配置文件,之后你可以通过这个配置文件来定制化 i3 的一些行为。

在下一屏,你需要选择你的 Mod 键。这一步很关键,因为 Mod 键通常都会作为 i3 命令快捷键的发起键。按回车会选择 Win 键作为默认的 Mod 键。如果你的键盘没有 Win 键,用 Alt 键做替代,用方向键键选择后按回车键确认。

现在你就登录到了 i3 的系统中。由于 i3 是一个极简的窗口管理器,你会看到一个黑屏窗口,以及屏幕底端显示的状态栏:

接下来,让我们看看 i3 的如何实际使用。

3、 基本的快捷键

现在你已经登录到了 i3 会话中,你需要几个基本的快捷键来应对基本的操作。

大多数的 i3 快捷键都会用到之前配置的 Mod 键。在下面的例子中,当我提到 Mod 键,请根据情况使用你定义的做替换。通常使用 Win 键或者 Alt 键。

首先,要打开一个终端,可以使用 Mod+ENTER。重复打开几个终端,观察 i3 是如何自动将它们在桌面中排列。默认情况下, i3 会在水平的方向分割屏幕;使用 Mod + v 来垂直分割,再按 Mod + h 会恢复水平分割模式。

当需要启动其他的应用,按 Mod + d 来打开 dmenu,一个简单的文字应用菜单。默认情况下,dmenu 会呈现出所有在你 $PATH 中设置的应用。使用方向键来选择你想启动的应用,同时你可以键入应用的名称,来缩小选择的范围,之后按回车键来启动选择的应用。

如果你的应用没有提供退出的方法,你可以使用 i3 来关闭对应的窗口,通过按 Mod + Shift +q。注意,你可能会丢失未保存的工作内容。

最后,当你想关闭会话并退出 i3,按 Mod + Shift +e。之后会在窗口的上方提示你是否退出。点击 “Yes, exit i3” 退出,或选择 “X” 来取消。

这些就是 i3 中最基本的快捷键,如果想了解更多,请查阅官方文档

4、 替换 GDM

使用 i3 窗口管理器会降低你操作系统的内存占用;然而,Fedora 依然会使用 GDM 作为登录屏。GDM 会载入几个与 GNOME 相关的库从而占用内存。

如果你想进一步的降低你的内存占用,你可以使用一些更轻量级的显示管理器来替换 GDM,比如 lightdm :

[ricardo@f28i3 ~]$ sudo dnf install -y lightdm
[ricardo@f28i3 ~]$ sudo systemctl disable gdm
Removed /etc/systemd/system/display-manager.service.
[ricardo@f28i3 ~]$ sudo systemctl enable lightdm
Created symlink /etc/systemd/system/display-manager.service -> /usr/lib/systemd/system/lightdm.service.
[ricardo@f28i3 ~]$

之后重启你的机器来使用 Lightdm 的登录界面。

现在你可以继续登录并使用 i3了。


via: https://opensource.com/article/18/8/getting-started-i3-window-manager

作者:Ricardo Gerardi 选题:lujun9972 译者:sd886393 校对:wxy

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

通过这些关键的命令来全程管理你的应用。

一般来说,应用程序进程的生命周期有三种主要状态:启动、运行和停止。如果我们想成为称职的管理员,每个状态都可以而且应该得到认真的管理。这八个命令可用于管理进程的整个生命周期。

启动进程

启动进程的最简单方法是在命令行中键入其名称,然后按回车键。如果要启动 Nginx web 服务器,请键入 nginx 。也许您只是想看看其版本。

alan@workstation:~$ nginx

alan@workstation:~$ nginx -v
nginx version: nginx/1.14.0

查看您的可执行路径

以上启动进程的演示是假设可执行文件位于您的可执行路径中。理解这个路径是可靠地启动和管理进程的关键。管理员通常会为他们想要的目的定制这条路径。您可以使用 echo $PATH 查看您的可执行路径。

alan@workstation:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

WHICH

使用 which 命令查看可执行文件的完整路径。

alan@workstation:~$ which nginx
/opt/nginx/bin/nginx

我将使用流行的 web 服务器软件 Nginx 作为我的例子。假设安装了 Nginx。如果执行 which nginx 的命令什么也不返回,那么是找不到 Nginx 了,因为它只搜索您指定的可执行路径。有三种方法可以补救一个进程不能简单地通过名字启动的情况。首先是键入完整路径 —— 虽然,我不情愿输入全部路径,您会吗?

alan@workstation:~$ /home/alan/web/prod/nginx/sbin/nginx -v
nginx version: nginx/1.14.0

第二个解决方案是将应用程序安装在可执行文件路径中的目录中。然而,这有时可能是办不到的,特别是如果您没有 root 权限。

第三个解决方案是更新您的可执行路径环境变量,包括要使用的特定应用程序的安装目录。这个解决方案是与 shell 相关的。例如,Bash 用户需要在他们的 .bashrc 文件中编辑 PATH= 行。

PATH="$HOME/web/prod/nginx/sbin:$PATH"

现在,重复您的 echowhich 命令或者尝试检查版本。容易多了!

alan@workstation:~$ echo $PATH
/home/alan/web/prod/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

alan@workstation:~$ which nginx
/home/alan/web/prod/nginx/sbin/nginx

alan@workstation:~$ nginx -v                                                
nginx version: nginx/1.14.0

保持进程运行

NOHUP

注销或关闭终端时,进程可能不会继续运行。这种特殊情况可以通过在要使用 nohup 命令放在要运行的命令前面让进程持续运行。此外,附加一个& 符号将会把进程发送到后台,并允许您继续使用终端。例如,假设您想运行 myprogram.sh

nohup myprogram.sh &

nohup 会返回运行进程的 PID。接下来我会更多地谈论 PID。

管理正在运行的进程

每个进程都有一个唯一的进程标识号 (PID) 。这个数字是我们用来管理每个进程的。我们还可以使用进程名称,我将在下面演示。有几个命令可以检查正在运行的进程的状态。让我们快速看看这些命令。

PS

最常见的是 ps 命令。ps 的默认输出是当前终端中运行的进程的简单列表。如下所示,第一列包含 PID。

alan@workstation:~$ ps
PID TTY          TIME CMD
23989 pts/0    00:00:00 bash
24148 pts/0    00:00:00 ps

我想看看我之前启动的 Nginx 进程。为此,我告诉 ps 给我展示每一个正在运行的进程(-e)和完整的列表(-f)。

alan@workstation:~$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Aug18 ?        00:00:10 /sbin/init splash
root         2     0  0 Aug18 ?        00:00:00 [kthreadd]
root         4     2  0 Aug18 ?        00:00:00 [kworker/0:0H]
root         6     2  0 Aug18 ?        00:00:00 [mm_percpu_wq]
root         7     2  0 Aug18 ?        00:00:00 [ksoftirqd/0]
root         8     2  0 Aug18 ?        00:00:20 [rcu_sched]
root         9     2  0 Aug18 ?        00:00:00 [rcu_bh]
root        10     2  0 Aug18 ?        00:00:00 [migration/0]
root        11     2  0 Aug18 ?        00:00:00 [watchdog/0]
root        12     2  0 Aug18 ?        00:00:00 [cpuhp/0]
root        13     2  0 Aug18 ?        00:00:00 [cpuhp/1]
root        14     2  0 Aug18 ?        00:00:00 [watchdog/1]
root        15     2  0 Aug18 ?        00:00:00 [migration/1]
root        16     2  0 Aug18 ?        00:00:00 [ksoftirqd/1]
alan     20506 20496  0 10:39 pts/0    00:00:00 bash
alan     20520  1454  0 10:39 ?        00:00:00 nginx: master process nginx
alan     20521 20520  0 10:39 ?        00:00:00 nginx: worker process
alan     20526 20506  0 10:39 pts/0    00:00:00 man ps
alan     20536 20526  0 10:39 pts/0    00:00:00 pager
alan     20564 20496  0 10:40 pts/1    00:00:00 bash

您可以在上面 ps 命令的输出中看到 Nginx 进程。这个命令显示了将近 300 行,但是我在这个例子中缩短了它。可以想象,试图处理 300 行过程信息有点混乱。我们可以将这个输出输送到 grep,过滤一下仅显示 nginx。

alan@workstation:~$ ps -ef |grep nginx
alan     20520  1454  0 10:39 ?        00:00:00 nginx: master process nginx
alan     20521 20520  0 10:39 ?        00:00:00 nginx: worker process

确实更好了。我们可以很快看到,Nginx 有 20520 和 20521 的 PID。

PGREP

pgrep 命令更加简化单独调用 grep 遇到的问题。

alan@workstation:~$ pgrep nginx
20520
20521

假设您在一个托管环境中,多个用户正在运行几个不同的 Nginx 实例。您可以使用 -u 选项将其他人排除在输出之外。

alan@workstation:~$ pgrep -u alan nginx
20520
20521

PIDOF

另一个好用的是 pidof。此命令将检查特定二进制文件的 PID,即使另一个同名进程正在运行。为了建立一个例子,我将我的 Nginx 复制到第二个目录,并以相应的路径前缀启动。在现实生活中,这个实例可能位于不同的位置,例如由不同用户拥有的目录。如果我运行两个 Nginx 实例,则pidof 输出显示它们的所有进程。

alan@workstation:~$ ps -ef |grep nginx
alan     20881  1454  0 11:18 ?        00:00:00 nginx: master process ./nginx -p /home/alan/web/prod/nginxsec
alan     20882 20881  0 11:18 ?        00:00:00 nginx: worker process
alan     20895  1454  0 11:19 ?        00:00:00 nginx: master process nginx
alan     20896 20895  0 11:19 ?        00:00:00 nginx: worker process

使用 greppgrep 将显示 PID 数字,但我们可能无法辨别哪个实例是哪个。

alan@workstation:~$ pgrep nginx
20881
20882
20895
20896

pidof 命令可用于确定每个特定 Nginx 实例的 PID。

alan@workstation:~$ pidof /home/alan/web/prod/nginxsec/sbin/nginx
20882 20881

alan@workstation:~$ pidof /home/alan/web/prod/nginx/sbin/nginx
20896 20895

TOP

top 命令已经有很久的历史了,对于查看运行进程的细节和快速识别内存消耗等问题是非常有用的。其默认视图如下所示。

top - 11:56:28 up 1 day, 13:37,  1 user,  load average: 0.09, 0.04, 0.03
Tasks: 292 total,   3 running, 225 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16387132 total, 10854648 free,  1859036 used,  3673448 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 14176540 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
17270 alan      20   0 3930764 247288  98992 R   0.7  1.5   5:58.22 gnome-shell
20496 alan      20   0  816144  45416  29844 S   0.5  0.3   0:22.16 gnome-terminal-
21110 alan      20   0   41940   3988   3188 R   0.1  0.0   0:00.17 top
    1 root      20   0  225564   9416   6768 S   0.0  0.1   0:10.72 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd
    4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/0:0H
    6 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 mm_percpu_wq
    7 root      20   0       0      0      0 S   0.0  0.0   0:00.08 ksoftirqd/0

可以通过键入字母 s 和您喜欢的更新秒数来更改更新间隔。为了更容易监控我们的示例 Nginx 进程,我们可以使用 -p 选项并传递 PID 来调用 top。这个输出要干净得多。

alan@workstation:~$ top -p20881 -p20882 -p20895 -p20896

Tasks:   4 total,   0 running,   4 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.8 us,  1.3 sy,  0.0 ni, 95.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16387132 total, 10856008 free,  1857648 used,  3673476 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 14177928 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
20881 alan      20   0   12016    348      0 S   0.0  0.0   0:00.00 nginx
20882 alan      20   0   12460   1644    932 S   0.0  0.0   0:00.00 nginx
20895 alan      20   0   12016    352      0 S   0.0  0.0   0:00.00 nginx
20896 alan      20   0   12460   1628    912 S   0.0  0.0   0:00.00 nginx

在管理进程,特别是终止进程时,正确确定 PID 是非常重要。此外,如果以这种方式使用 top,每当这些进程中的一个停止或一个新进程开始时,top 都需要被告知有新的进程。

终止进程

KILL

有趣的是,没有 stop 命令。在 Linux 中,有 kill 命令。kill 用于向进程发送信号。最常用的信号是“终止”(SIGTERM)或“杀死”(SIGKILL)。然而,还有更多。下面是一些例子。完整的列表可以用 kill -L 显示。

 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM

注意第 9 号信号是 SIGKILL,通常,我们会发出比如 kill -9 20896 这样的命令。默认信号是 15,这是 SIGTERM。请记住,许多应用程序都有自己的停止方法。Nginx 使用 -s 选项传递信号,如 stopreload。通常,我更喜欢使用应用程序的特定方法来停止操作。然而,我将演示用 kill 命令来停止 Nginx 进程 20896,然后用 pgrep 确认它已经停止。PID 20896 就不再出现。

alan@workstation:~$ kill -9 20896
 
alan@workstation:~$ pgrep nginx
20881
20882
20895
22123

PKILL

命令 pkill 类似于 pgrep,因为它可以按名称搜索。这意味着在使用 pkill 时必须非常小心。在我的 Nginx 示例中,如果我只想杀死一个 Nginx 实例,我可能不会选择使用它。我可以将 Nginx 选项 -s stop 传递给特定的实例来消除它,或者我需要使用 grep 来过滤整个 ps 输出。

/home/alan/web/prod/nginx/sbin/nginx -s stop
/home/alan/web/prod/nginxsec/sbin/nginx -s stop

如果我想使用 pkill,我可以包括 -f 选项,让 pkill 过滤整个命令行参数。这当然也适用于 pgrep。所以,在执行 pkill -f 之前,首先我可以用 pgrep -a 确认一下。

alan@workstation:~$ pgrep -a nginx
20881 nginx: master process ./nginx -p /home/alan/web/prod/nginxsec
20882 nginx: worker process
20895 nginx: master process nginx
20896 nginx: worker process

我也可以用 pgrep -f 缩小我的结果。pkill 使用相同参数会停止该进程。

alan@workstation:~$ pgrep -f nginxsec
20881
                                           
alan@workstation:~$ pkill -f nginxsec

pgrep(尤其是 pkill)要记住的关键点是,您必须始终确保搜索结果准确性,这样您就不会无意中影响到错误的进程。

大多数这些命令都有许多命令行选项,所以我总是建议阅读每一个命令的 man 手册页。虽然大多数这些命令都存在于 Linux、Solaris 和 BSD 等平台上,但也有一些不同之处。在命令行工作或编写脚本时,始终测试并随时准备根据需要进行更正。


via: https://opensource.com/article/18/9/linux-commands-process-management

作者:Alan Formy-Duval 选题:lujun9972 译者:heguangzhi 校对:wxy

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

Linux 桌面版和服务器版具有卓越的安全性。然而这并不意味着你可以放松警惕。你应该一直认为你的数据总是很快就会被破坏。也就是说,你可能需要使用各种加密工具。比如 GnuPG,它可以让你加密和解密文件等更多功能。GnuPG 的一个问题是一些用户不想在命令行输入那么复杂的命令。如果是这样的话,你可以转向桌面文件管理器。许多 Linux 桌面版包含了简易的加密和解密文件的功能,如果这种功能没有内置,那么也是很容易添加的。

我将引导你完成从三个流行的 Linux 文件管理器中对文件进行加密和解密过程:

  • Nautilus (即 GNOME Files)
  • Dolphin
  • Thunar

安装 GnuPG

在我们讨论如何处理这个问题之前,我们必须确保你的系统包含了必要的基本组件 —— GnuPG。大多数发行版本都包含 GnuPG。 在某些偶然情况下,你使用的是没有自带 GnuPG 的发行版,以下是安装方法:

  • 基于 Ubuntu 的发行版: sudo apt install gnupg
  • 基于 Fedora 的发行版: sudo yum install gnupg
  • openSUSE: sudo zypper in gnupg
  • 基于 Arch 的发行版:sudo pacman -S gnupg

无论你是刚刚安装了 GnuPG,还是默认安装的,你都必须创建一个 GPG 密钥才能使用。每个桌面版都使用不同的 GUI 工具完成这个工作(或者甚至根本没有包含一个完成这个任务的 GUI 工具),所以让我们从命令行中创建这个密钥。打开终端窗口并输入以下指令:

gpg --gen-key

然后,你将被要求回答以下问题。除非你有充分的理由,否则你可以接受默认值:

  • 你想要哪种密钥?
  • 你想要多长的密钥?
  • 密钥有效期?

一旦你回答了这些问题,输入 y 来表示答案是正确的。接下来你需要提供以下信息:

  • 真实姓名。
  • Email 地址。
  • 备注。

完成上述操作后,然后在提示的时候输入 O (即 ok)。然后,你将被要求为新密钥输入一个密码。一旦系统收集到了足够的熵(你需要在桌面上做一些工作才能做到这一点,LCTT 译注:比如随便敲击键盘),你的密钥就会被创建,然后你就可以开始工作了。

让我们看看如何从文件管理器中加密/解密文件:

Nautilus

让我们从默认的 GNOME 文件管理器开始,因为它是最简单的。Nautilus 不需要额外安装什么或额外的工作就可以从精心设计的界面内加密/解密文件。一旦你创建完 gpg 密钥后,就可以打开文件管理器,导航到包含要加密的文件的目录,右键单击要加密的文件,然后从菜单中选择 “Encrypt” (图1)。

 title=

图1:从 Nautilus 中加密文件。

你将被要求选择一个收件人(或者收件人列表 —— 图2)。注意:收件人将是那些你已经导入了公钥的用户。选择所需的密钥,然后从签名信息下拉列表中选择你的密钥(电子邮件地址)。

 title=

图2:选择收件人和签名者。

注意:你还可以选择仅使用密码来加密文件。如果文件将保留在你的本地机器上,这一点非常重要(稍后将详细介绍)。一旦你设置好加密后,单击 “OK” 并(在提示时)输入 gpg 密钥的密码。文件将被加密(现在文件名以 .gpg 结尾)并保存在工作目录中。现在你可以将加密后的文件发送给在加密过程中已选择的收件人。

比如说(有你的公钥的)某人已经给你发送了一个加密文件。保存该文件,打开文件管理器,导航到该文件所在的目录,右击这个加密文件,选择 “Open With Decrypt File”,给文件一个新名称(不带 .gpg 的扩展名),然后单击“Save”。当提示时,输入你的 gpg 密钥的密码,该文件就会被解密并准备使用。

Dolphin

在 KDE 前端,必须安装一个软件包才能使用 Dolphin 文件管理器进行加密/解密。 登录到你的 KDE 桌面,打开终端窗口,然后输入以下命令(我正在使用 Neon 进行演示。如果你的发行版不是基于 Ubuntu 的,则必须相应地更改命令):

sudo apt install kgpg

安装完毕后,注销并重新登录 KDE 桌面。 你可以打开 Dolphin 并右键单击要加密的文件。 由于这是你第一次使用 kgpg,因此你必须完成快速设置向导(不言自明)。当完成该向导后,你可以返回该文件,右键单击它(图3),然后选择 Encrypt File。

 title=

图3:在 Dolphin 中加密文件。

系统将提示你选择用于加密的密钥(图4)。 进行选择并单击 “OK”。 该文件将被加密,而且你已准备好将其发送给收件人。

注意:使用 KDE 的 Dolphin 文件管理器市,你无法仅使用密码加密。

 title=

图4:选择要加密的收件人。

如果你收到来自有你的公钥的用户的加密文件(或者你有一个自己加密的文件),请打开 Dolphin,导航到相关文件,双击该文件,为该文件指定一个新名称 ,键入加密密码并单击 “OK”。 你现在可以读取到新解密的文件。 如果你使用自己的密钥加密了该文件,则不会提示你键入密码(因为它已经被存储了)。

Thunar

Thunar 文件管理器有点棘手。 没有任何额外的软件包可供安装;相反,你需要为了加密创建新的自定义操作。完成此操作后,你将能够在文件管理器中执行此操作。

要创建自定义操作,请打开 Thunar 文件管理器,然后单击 “Edit > Configure Custom Actions”。 在所得到的窗口中,单击 “+” 按钮(图5)并为加密操作输入以下内容:

  • 名称:加密
  • 描述:文件加密
  • 命令:gnome-terminal -x gpg --encrypt --recipient %f

单击 “OK” 以保存此操作。

 title=

图5:在Thunar中创建自定义操作。

注意:如果 gnome-terminal 不是你的默认终端,请替换该命令以打开你的默认终端。

你还可以创建仅使用密码(而非密钥)加密的操作。 为此,该操作的详细动作将会是以下内容:

  • 名称:加密密码
  • 说明:仅使用密码加密
  • 命令:gnome-terminal -x gpg -c %f

你不需要为解密过程创建一个自定义操作,因为 Thunar 已经知道如何处理一个加密文件。 要解密文件,只需(在 Thunar 中)右键单击它,选择 “Open With Decrypt File”,为解密文件命名,然后(在提示时)键入加密密码。 Viola,你的加密文件已被解密并可以使用。

一个警告

请注意:如果你使用自己的密钥加密自己的文件,则无需输入加密密码来解密它们(因为你的公钥已存储)。 但是,如果你收到(拥有你的公钥的)其他人的文件,则需要输入你的密码。 如果你想要存储自己的加密文件,而不是使用密钥来加密它们,请使用仅使用密码加密。 Nautilus 和Thunar(但不是 KDE)可以做到这一点。 通过选择密码加密(通过密钥加密),当你解密文件时,它将始终提示你输入密码。

其他文件管理器

还有很多其它的文件管理器,它们中的一些可以使用加密,有些则不能。 你很有可能正在使用这三种工具中的一种,因此不仅可以将加密 / 解密添加到上下文菜单,而且是非常容易。 尝试一下,看看它是否会使加密和解密的过程变得更容易。

从 Linux 基金会和 edX 免费提供的“Linux 介绍”课程了解更多关于 Linux 的信息。


via: https://www.linux.com/learn/intro-to-linux/2018/3/how-encrypt-files-within-file-manager

作者:JACK WALLEN 译者:Auk7f7 校对:wxy

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

我们可以就这个已经被广泛讨论的话题写出大量的文章,大多数情况下,因为各种各样的原因,我们都愿意让 包管理器 package manager 来帮我们做这些事情。

每个 Linux 发行版都有自己的包管理器,并且每个都有各自有不同的特性,这些特性包括允许用户执行安装新软件包,删除无用的软件包,更新现存的软件包,搜索某些具体的软件包,以及更新整个系统到其最新的状态之类的操作。

习惯于命令行的用户大多数时间都会使用基于命令行方式的包管理器。对于 Linux 而言,这些基于命令行的包管理器有 yumdnfrpmaptapt-getdpkgpacmanzypper

推荐阅读

作为一个系统管理员你应该清楚地知道:安装包来自何方,具体来自哪个软件仓库,包的具体版本,包的大小,版本,包的源代码 URL,包的许可证信息,等等。

这篇短文将用尽可能简单的方式帮你从随包自带的总结和描述中了解该包的用法。按你所使用的 Linux 发行版的不同,运行下面相应的命令,你能得到你所使用的发行版下的包的详细信息。

YUM 命令:在 RHEL 和 CentOS 系统上获得包的信息

YUM 英文直译是“ 黄狗更新器–修改版 Yellowdog Updater, Modified ”,它是一个开源的基于命令行的包管理器前端实用工具。它被广泛应用在基于 RPM 的系统上,例如:RHEL 和 CentOS。

Yum 是用于在官方发行版仓库以及其他第三方发行版仓库下获取、安装、删除、查询 RPM 包的主要工具。

(LCTT 译注:用 yum info 获取 python 包的信息)

# yum info python
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * epel: epel.mirror.constant.com
Installed Packages
Name        : python
Arch        : x86_64
Version     : 2.6.6
Release     : 66.el6_8
Size        : 78 k
Repo        : installed
From repo   : updates
Summary     : An interpreted, interactive, object-oriented programming language
URL         : http://www.python.org/
License     : Python
Description : Python is an interpreted, interactive, object-oriented programming
            : language often compared to Tcl, Perl, Scheme or Java. Python includes
            : modules, classes, exceptions, very high level dynamic data types and
            : dynamic typing. Python supports interfaces to many system calls and
            : libraries, as well as to various windowing systems (X11, Motif, Tk,
            : Mac and MFC).
            :
            : Programmers can write new built-in modules for Python in C or C++.
            : Python can be used as an extension language for applications that need
            : a programmable interface.
            :
            : Note that documentation for Python is provided in the python-docs
            : package.
            :
            : This package provides the "python" executable; most of the actual
            : implementation is within the "python-libs" package.

YUMDB 命令:查看 RHEL 和 CentOS 系统上的包信息

yumdb info 这个命令提供与 yum info 相类似的的信息,不过它还额外提供了诸如包校验值、包类型、用户信息(由何人安装)。从 yum 3.2.26 版本后,yum 开始在 rpm 数据库外储存额外的信息了(此处如显示 user 表明该包由用户安装,而 dep 说明该包是被作为被依赖的包而被安装的)。

(LCTT 译注:用 yumdb info 来获取 python 包的信息)

# yumdb info python
Loaded plugins: fastestmirror
python-2.6.6-66.el6_8.x86_64
     changed_by = 4294967295
     checksum_data = 53c75a1756e5b4f6564c5229a37948c9b4561e0bf58076bd7dab7aff85a417f2
     checksum_type = sha256
     command_line = update -y
     from_repo = updates
     from_repo_revision = 1488370672
     from_repo_timestamp = 1488371100
     installed_by = 4294967295
     reason = dep
     releasever = 6

RPM 命令:在 RHEL/CentOS/Fedora 系统上查看包的信息

RPM 英文直译为“ 红帽包管理器 Red Hat Package Manager ”,这是一个在 RedHat 以及其变种发行版(如RHEL、CentOS、Fedora、openSUSE、Megeia)下的功能强大的命令行包管理工具。它能让你轻松的安装、升级、删除、查询以及校验你的系统或服务器上的软件。RPM 文件以 .rpm 结尾。RPM 包由它所依赖的软件库以及其他依赖构成,它不会与系统上已经安装的包冲突。

(LCTT 译注:用 rpm -qi 查询 nano 包的具体信息)

# rpm -qi nano
Name        : nano                         Relocations: (not relocatable)
Version     : 2.0.9                             Vendor: CentOS
Release     : 7.el6                         Build Date: Fri 12 Nov 2010 02:18:36 AM EST
Install Date: Fri 03 Mar 2017 08:57:47 AM EST      Build Host: c5b2.bsys.dev.centos.org
Group       : Applications/Editors          Source RPM: nano-2.0.9-7.el6.src.rpm
Size        : 1588347                          License: GPLv3+
Signature   : RSA/8, Sun 03 Jul 2011 12:46:50 AM EDT, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem 
URL         : http://www.nano-editor.org
Summary     : A small text editor
Description :
GNU nano is a small and friendly text editor.

DNF 命令:在 Fedora 系统上查看包信息

DNF 指“ 时髦版的 Yum Dandified yum ”,我们也可以认为 DNF 是下一代的 yum 包管理器(Yum 的一个分支),它在后台使用了 hawkey/libsolv 库。Aleš Kozumplík 在Fedora 18 上开始开发 DNF,在 Fedora 22 上正式最后发布。 dnf 命令用来在 Fedora 22 及以后的系统上安装、更新、搜索以及删除包。它能自动的解决包安装过程中的包依赖问题。

(LCTT 译注: 用 dnf info 查看 tilix 包信息)

$ dnf info tilix
Last metadata expiration check: 27 days, 10:00:23 ago on Wed 04 Oct 2017 06:43:27 AM IST.
Installed Packages
Name         : tilix
Version      : 1.6.4
Release      : 1.fc26
Arch         : x86_64
Size         : 3.6 M
Source       : tilix-1.6.4-1.fc26.src.rpm
Repo         : @System
From repo    : @commandline
Summary      : Tiling terminal emulator
URL          : https://github.com/gnunn1/tilix
License      : MPLv2.0 and GPLv3+ and CC-BY-SA
Description  : Tilix is a tiling terminal emulator with the following features:
             : 
             :  - Layout terminals in any fashion by splitting them horizontally or vertically
             :  - Terminals can be re-arranged using drag and drop both within and between
             :    windows
             :  - Terminals can be detached into a new window via drag and drop
             :  - Input can be synchronized between terminals so commands typed in one
             :    terminal are replicated to the others
             :  - The grouping of terminals can be saved and loaded from disk
             :  - Terminals support custom titles
             :  - Color schemes are stored in files and custom color schemes can be created by
             :    simply creating a new file
             :  - Transparent background
             :  - Supports notifications when processes are completed out of view
             : 
             : The application was written using GTK 3 and an effort was made to conform to
             : GNOME Human Interface Guidelines (HIG).

Zypper 命令:在 openSUSE 系统上查看包信息

zypper 是一个使用 libzypp 库的命令行包管理器。zypper 提供诸如软件仓库访问,安装依赖解决,软件包安装等等功能。

(LCTT 译注: 用 zypper info 查询 nano 包的信息)

$ zypper info nano

Loading repository data...
Reading installed packages...


Information for package nano:
-----------------------------
Repository     : Main Repository (OSS)              
Name           : nano                               
Version        : 2.4.2-5.3                          
Arch           : x86_64                             
Vendor         : openSUSE                           
Installed Size : 1017.8 KiB                         
Installed      : No                                 
Status         : not installed                      
Source package : nano-2.4.2-5.3.src                 
Summary        : Pico editor clone with enhancements
Description    :                                    
    GNU nano is a small and friendly text editor. It aims to emulate
    the Pico text editor while also offering a few enhancements.

Pacman 命令:在 ArchLinux 及 Manjaro 系统上查看包信息

Pacman 意即 包管理器 package manager 实用工具。pacman 是一个用于安装、构建、删除、管理 Arch Linux 上包的命令行工具。它后端使用 libalpm(Arch Linux package Manager(ALPM)库)来完成所有功能。

(LCTT 译注: 用 pacman -Qi 来查询 bash 包信息)

$ pacman -Qi bash
Name            : bash
Version         : 4.4.012-2
Description     : The GNU Bourne Again shell
Architecture    : x86_64
URL             : http://www.gnu.org/software/bash/bash.html
Licenses        : GPL
Groups          : base
Provides        : sh
Depends On      : readline>=7.0  glibc  ncurses
Optional Deps   : bash-completion: for tab completion
Required By     : autoconf  automake  bison  bzip2  ca-certificates-utils  db
                  dhcpcd  diffutils  e2fsprogs  fakeroot  figlet  findutils
                  flex  freetype2  gawk  gdbm  gettext  gmp  grub  gzip  icu
                  iptables  keyutils  libgpg-error  libksba  libpcap  libpng
                  libtool  lvm2  m4  man-db  mkinitcpio  nano  neofetch  nspr
                  nss  openresolv  os-prober  pacman  pcre  pcre2  shadow
                  systemd  texinfo  vte-common  which  xdg-user-dirs  xdg-utils
                  xfsprogs  xorg-mkfontdir  xorg-xpr  xz
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 7.13 MiB
Packager        : Jan Alexander Steffens (heftig) 
Build Date      : Tue 14 Feb 2017 01:16:51 PM UTC
Install Date    : Thu 24 Aug 2017 06:08:12 AM UTC
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : Signature

apt-cache 命令:在 Debian/Ubuntu/Mint 系统上查看包信息

apt-cache 命令能显示 apt 内部数据库中的大量信息。这些信息是从 sources.list 中的不同的软件源中搜集而来,因此从某种意义上这些信息也可以被认为是某种缓存。这些信息搜集工作是在运行 apt update 命令时执行的。

(LCTT 译注:用管理员权限查询 apache2 包的信息)

$ sudo apt-cache show apache2
Package: apache2
Priority: optional
Section: web
Installed-Size: 473
Maintainer: Ubuntu Developers 
Original-Maintainer: Debian Apache Maintainers 
Architecture: amd64
Version: 2.4.12-2ubuntu2
Replaces: apache2.2-common
Provides: httpd, httpd-cgi
Depends: lsb-base, procps, perl, mime-support, apache2-bin (= 2.4.12-2ubuntu2), apache2-utils (>= 2.4), apache2-data (= 2.4.12-2ubuntu2)
Pre-Depends: dpkg (>= 1.17.14)
Recommends: ssl-cert
Suggests: www-browser, apache2-doc, apache2-suexec-pristine | apache2-suexec-custom, ufw
Conflicts: apache2.2-common (<< 2.3~)
Filename: pool/main/a/apache2/apache2_2.4.12-2ubuntu2_amd64.deb
Size: 91348
MD5sum: ab0ee0b0d1c6b3d19bd87aa2a9537125
SHA1: 350c9a1a954906088ed032aebb77de3d5bb24004
SHA256: 03f515f7ebc3b67b050b06e82ebca34b5e83e34a528868498fce020bf1dbbe34
Description-en: Apache HTTP Server
 The Apache HTTP Server Project's goal is to build a secure, efficient and
 extensible HTTP server as standards-compliant open source software. The
 result has long been the number one web server on the Internet.
 .
 Installing this package results in a full installation, including the
 configuration files, init scripts and support scripts.
Description-md5: d02426bc360345e5acd45367716dc35c
Homepage: http://httpd.apache.org/
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 9m
Task: lamp-server, mythbuntu-frontend, mythbuntu-desktop, mythbuntu-backend-slave, mythbuntu-backend-master, mythbuntu-backend-master

APT 命令:查看 Debian/Ubuntu/Mint 系统上的包信息

APT 意为 高级打包工具 Advanced Packaging Tool ,就像 DNF 将如何替代 YUM 一样,APT 是 apt-get 的替代物。它功能丰富的命令行工具包括了如下所有命令的功能如 apt-cacheapt-searchdpkgapt-cdromapt-configapt-key 等等,我们可以方便的通过 apt 来安装 .dpkg 包,但是我们却不能通过 apt-get 来完成这一点,还有一些其他的类似的功能也不能用 apt-get 来完成,所以 apt-get 因为没有解决上述功能缺乏的原因而被 apt 所取代。

(LCTT 译注: 用 apt show 查看 nano 包信息)

$ apt show nano
Package: nano
Version: 2.8.6-3
Priority: standard
Section: editors
Origin: Ubuntu
Maintainer: Ubuntu Developers 
Original-Maintainer: Jordi Mallach 
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 766 kB
Depends: libc6 (>= 2.14), libncursesw5 (>= 6), libtinfo5 (>= 6)
Suggests: spell
Conflicts: pico
Breaks: nano-tiny (<< 2.8.6-2)
Replaces: nano-tiny (<< 2.8.6-2), pico
Homepage: https://www.nano-editor.org/
Task: standard, ubuntu-touch-core, ubuntu-touch
Supported: 9m
Download-Size: 222 kB
APT-Manual-Installed: yes
APT-Sources: http://in.archive.ubuntu.com/ubuntu artful/main amd64 Packages
Description: small, friendly text editor inspired by Pico
 GNU nano is an easy-to-use text editor originally designed as a replacement
 for Pico, the ncurses-based editor from the non-free mailer package Pine
 (itself now available under the Apache License as Alpine).
 .
 However, GNU nano also implements many features missing in pico, including:
  - undo/redo
  - line numbering
  - syntax coloring
  - soft-wrapping of overlong lines
  - selecting text by holding Shift
  - interactive search and replace (with regular expression support)
  - a go-to line (and column) command
  - support for multiple file buffers
  - auto-indentation
  - tab completion of filenames and search terms
  - toggling features while running
  - and full internationalization support

dpkg 命令:查看Debian/Ubuntu/Mint系统上的包信息

dpkg 意指 Debian 包管理器 Debian package manager dpkg 是用于 Debian 系统上安装、构建、移除以及管理 Debian 包的命令行工具。dpkg 使用 aptitude(因为它更为主流及用户友好)作为前端工具来完成所有的功能。其他的工具如dpkg-debdpkg-query 使用 dpkg 做为前端来实现功能。尽管系统管理员还是时不时会在必要时使用 dpkg 来完成一些软件安装的任务,他大多数情况下还是会因为 aptapt-get 以及 aptitude 的健壮性而使用后者。

(LCTT 译注: 用 dpkg -s 查看 python 包的信息)

$ dpkg -s python
Package: python
Status: install ok installed
Priority: optional
Section: python
Installed-Size: 626
Maintainer: Ubuntu Developers 
Architecture: amd64
Multi-Arch: allowed
Source: python-defaults
Version: 2.7.14-2ubuntu1
Replaces: python-dev (<< 2.6.5-2)
Provides: python-ctypes, python-email, python-importlib, python-profiler, python-wsgiref
Depends: python2.7 (>= 2.7.14-1~), libpython-stdlib (= 2.7.14-2ubuntu1)
Pre-Depends: python-minimal (= 2.7.14-2ubuntu1)
Suggests: python-doc (= 2.7.14-2ubuntu1), python-tk (>= 2.7.14-1~)
Breaks: update-manager-core (<< 0.200.5-2)
Conflicts: python-central (<< 0.5.5)
Description: interactive high-level object-oriented language (default version)
 Python, the high-level, interactive object oriented language,
 includes an extensive class library with lots of goodies for
 network programming, system administration, sounds and graphics.
 .
 This package is a dependency package, which depends on Debian's default
 Python version (currently v2.7).
Homepage: http://www.python.org/
Original-Maintainer: Matthias Klose 

我们也可使用 dpkg-p 选项,这个选项提供和 dpkg -s 相类似的信息,但是它还提供了包的校验值和包类型。

(LCTT 译注: 用 dpkg -p 查看 python3 包的信息)

$ dpkg -p python3
Package: python3
Priority: important
Section: python
Installed-Size: 67
Origin: Ubuntu
Maintainer: Ubuntu Developers 
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Architecture: amd64
Multi-Arch: allowed
Source: python3-defaults
Version: 3.6.3-0ubuntu2
Replaces: python3-minimal (<< 3.1.2-2)
Provides: python3-profiler
Depends: python3.6 (>= 3.6.3-1~), libpython3-stdlib (= 3.6.3-0ubuntu2), dh-python
Pre-Depends: python3-minimal (= 3.6.3-0ubuntu2)
Suggests: python3-doc (>= 3.6.3-0ubuntu2), python3-tk (>= 3.6.3-1~), python3-venv (>= 3.6.3-0ubuntu2)
Filename: pool/main/p/python3-defaults/python3_3.6.3-0ubuntu2_amd64.deb
Size: 8712
MD5sum: a8bae494c6e5d1896287675faf40d373
Description: interactive high-level object-oriented language (default python3 version)
Original-Maintainer: Matthias Klose 
SHA1: 2daec885cea7d4dc83c284301c3bebf42b23e095
SHA256: 865e509c91d2504a16c4b573dbe27e260c36fceec2add3fa43a30c1751d7e9bb
Homepage: http://www.python.org/
Task: minimal, ubuntu-core, ubuntu-core
Description-md5: 950ebd8122c0a7340f0a740c295b9eab
Supported: 9m

aptitude 命令:查看 Debian/Ubuntu/Mint 系统上的包信息

aptitude 是 Debian GNU/Linux 包管理系统的文本界面。它允许用户查看已安装的包的列表,以及完成诸如安装、升级、删除包之类的包管理任务。这些管理行为也能从图形接口来执行。

(LCTT 译注: 用 aptitude show 查看 htop 包信息)

$ aptitude show htop
Package: htop                     
Version: 2.0.2-1
State: installed
Automatically installed: no
Priority: optional
Section: universe/utils
Maintainer: Ubuntu Developers 
Architecture: amd64
Uncompressed Size: 216 k
Depends: libc6 (>= 2.15), libncursesw5 (>= 6), libtinfo5 (>= 6)
Suggests: lsof, strace
Conflicts: htop:i386
Description: interactive processes viewer
 Htop is an ncursed-based process viewer similar to top, but it allows one to scroll the list vertically and horizontally to see all processes and their full command lines. 
 
 Tasks related to processes (killing, renicing) can be done without entering their PIDs.
Homepage: http://hisham.hm/htop/

via: https://www.2daygeek.com/how-to-view-detailed-information-about-a-package-in-linux/

作者:Prakash Subramanian 选题:lujun9972 译者:DavidChenLiang 校对:wxy

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

在你安装的 Linux 发行版中默认就包含了一些别名。

Linux 命令行别名非常适合帮助你提高工作效率。更好的是,在你安装的 Linux 发行版中默认就包含了一些别名。

这是 Fedora 27 中的命令别名的示例:

这个 alias 命令列出了已有的别名。设置别名也十分简单:

alias new_name="command"

这里有 15 个命令行别名,可以节省你的时间:

1、安装任何应用实用 / 应用程序:

alias install="sudo yum install -y"

在这里,根据每个用户的偏好,sudo-y 是可选的:

 title=

2、更新系统:

alias update="sudo yum update -y"

3、升级系统:

alias upgrade="sudo yum upgrade -y"

4、切换 root 用户:

alias root="sudo su -"

5、切换到 “user” 用户, 其中 user 设置为你的用户名:

alias user="su user"

6、显示列出所有可用端口、状态还有 IP:

alias myip="ip -br -c a"

7、ssh 到你的服务器 myserver

alias myserver="ssh user@my_server_ip”

8、列出系统中所有进程:

alias process="ps -aux"

9、检查系统的服务状态:

alias sstatus="sudo systemctl status"

10、重启系统服务:

alias srestart="sudo systemctl restart"

11、按名称杀死进程:

alias kill="sudo pkill"

 title=

12、显示系统系统总使用内存和空闲内存 :

alias mem="free -h"

13、显示系统 CPU 框架结构、CPU 数量、线程数等:

alias cpu="lscpu"

14、显示系统总磁盘大小:

alias disk="df -h"

15、显示当前系统 Linux 发行版本(适用于 CentOS、Fedora 和 Red Hat):

alias os="cat /etc/redhat-release"

 title=


via: https://opensource.com/article/18/8/time-saving-command-line-aliases

作者:Aarchit Modi 选题:lujun9972 译者:MZqk 校对:wxy

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