2019年12月

每周开源社区、市场和行业趋势。

 title=

作为我在具有开源开发模型的企业软件公司担任高级产品营销经理的角色的一部分,我为产品营销人员、经理和其他影响者定期发布有关开源社区,市场和行业趋势的定期更新。这里有该更新中我和他们最喜欢的四篇文章。

Kubernetes 傻瓜指南

Kubernetes 已经发展出了新的特性,这使其成为企业软件的更好的容器平台。安全性和高级网络等元素已被纳入 Kubernetes 上游代码的主体,并且现在可供所有人使用。

然而,企业解决方案的其他方面总会有补充需求;比如日志记录和性能监控。这就是像 Istio 等辅助包发挥作用的地方,它带来了额外的功能,但是仍使 Kubernetes 的核心保持了合理的大小和特性集。

影响: 我总是发现,人们很容易把对技术发展的认识视为理所当然。当与你打交道的每个人都处于“最前沿”时,你的观点就会歪曲到这样的程度:你甚至可能会认为对最新的(此处插入首选技术)一无所知的人跟不上潮流,而实际上这并没有开始影响他们做自己需要做的事情的能力。那些人不是白痴;他们是我们的朋友、客户、合作伙伴、合作者和社区。

Gartner: 采用低代码开发之前应该考虑什么

尽管专注于商业 IT 团队,但 Gartner 发现,一个日益重要的开发人员社区是需要快速开发简单应用程序或构建最低可行产品或多体验功能的核心 IT 专业开发人员。当应用程序领导者在传统的应用程序项目中使用低代码时,他们可能希望使用标准的 IT DevOps 自动化方法和低代码工具。

影响: 越来越多的用例和用户体验可以通过需要更少时间和技能来创建的应用程序来处理和交互。而低代码开发人员也可能会结合成一个具有他们自己的规范和亚文化的独特群体。

诺基亚认为云原生对 5G 核心至关重要

诺基亚概述了 5G 的五个关键业务目标,这些目标只能通过云原生环境来实现。其中包括:更好的带宽、延迟和密度;通过网络切片将服务扩展到新的企业、行业和物联网市场;根据敏捷性和效率定义的快速服务部署;超越传统带宽、语音和信息传递的新服务;以及利用端到端网络获取更多收入的数字服务的出现。

影响: 在越来越多的事物连接到网络的情况下,这是最有意义的。4G 主要与越来越多的手机有关;只有当你开始连接其他所有东西时,5G 才是真正必要的。4G 意味着我们的手机上有更丰富的应用程序,而 5G 几乎与手机无关。

API:隐藏的业务加速器

要想让组织成功地进行数字化转型,API 策略至关重要。从解锁有价值的数据到加快开发时间,API 都是数字时代的幕后英雄。那些已经尝试过 API 的人已经感受到了好处。例如,研究表明,使用 API 的企业中,有 53% 认为它们提高了生产力,而 29% 声称它们的收入增长是使用 API 的直接结果。当 API 被视为存在于一个项目之外的可发现和可重用的产品时,它有助于为持续的变更奠定灵活的基础。

影响: 隐藏的业务加速器实际上是这样一种思想,即功能应该以一种方式进行打包,使其能够在原始提供者没有预料到的环境中进行重新利用和组合。

我希望你喜欢这份上周给我留下深刻印象的列表,并于下周一回来了解更多开源社区、市场和行业的趋势。


via: https://opensource.com/article/19/12/technology-advice-and-other-industry-trends

作者:Tim Hildred 选题:lujun9972 译者:algzjh 校对:wxy

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

比较世界上最流行的两种编程语言,并在投票中让我们知道你喜欢哪一个。

让我们比较一下世界上两种最受欢迎、最强大的编程语言:Java 和 Python!这两种语言有巨大的社区支持和库来执行几乎任何编程任务,尽管选择编程语言通常取决于开发人员的场景。在比较和对比之后,请投票分享你的观点。

是什么?

  • Java 是一门通用面向对象的编程语言,主要用于开发从移动端到 Web 到企业级应用的各种应用。
  • Python 是一门高级面向对象的编程语言,主要用于 Web 开发、人工智能、机器学习、自动化和其他数据科学应用。

创建者

  • Java 是由 James Gosling(Sun Microsystems)创造的。
  • Python 是由 Guido van Rossum 创造的。

开源状态

  • Java 是免费的,(大部分)开源,但商业用途除外。
  • Python 对于所有场景都是免费、开源的。

平台依赖

  • Java 根据它的 WORA (“ 一次编写,到处运行 write once, run anywhere ”)哲学,它是平台无关的。
  • Python 依赖于平台。

编译或解释

  • Java 是一门编译语言。Java 程序在编译时转换为字节码,而不是运行时。
  • Python 是一门解释性语言。Python 程序在运行时进行解释。

文件创建

  • Java:编译后生成 <filename>.class 文件。
  • Python:在运行期,创建 <filename>.pyc 文件。

错误类型

  • Java 有 2 种错误类型:编译和运行时错误。
  • Python 有 1 种错误类型:回溯(或运行时)错误。

静态或动态类型

  • Java 是静态类型。当初始化变量时,需要在程序中指定变量的类型,因为类型检查是在编译时完成的。
  • Python 是动态类型。变量不需要在初始化时指定类型,因为类型检查是在运行时完成的。

语法

  • Java:每个语句都需要以分号(; )结尾,并且代码块由大括号( {} )分隔。
  • Python:代码块通过缩进分隔(用户可以选择要使用的空格数,但在整个块中应保持一致)。

类的数量

  • Java:在 Java 中的单个文件中只能存在一个公有顶级类。
  • Python:Python 中的单个文件中可以存在任意数量的类。

代码多少?

  • Java 通常比 Python 要写更多代码行。
  • Python通常比 Java 要写更少代码行。

多重继承

  • Java 不支持多重继承(从两个或多个基类继承)。
  • Python 支持多重继承,但由于继承复杂性、层次结构、依赖等各种问题,它很少实现。

多线程

  • Java 多线程可以支持同时运行的两个或多个并发线程。
  • Python 使用全局解释器锁 (GIL),一次只允许运行单个线程(一个 CPU 核)。

执行速度

  • Java 的执行时间通常比 Python 快。
  • Python 的执行时间通常比 Java 慢。

Hello world

Java 的:

public class Hello {
   public static void main([String][3][] args) {
      [System][4].out.println("Hello Opensource.com from Java!");
   }
}

Python 的:

print("Hello Opensource.com from Java!")

运行程序

 title=

要运行 java 程序 Hello.java,你需要先编译它,这将创建一个 Hello.class 文件。只需运行类名 java Hello。对于 Python,只需运行文件 python3 helloworld.py


via: https://opensource.com/article/19/12/java-vs-python

作者:Archit Modi 选题:lujun9972 译者:geekpi 校对: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中国 荣誉推出

像日志或源代码这样的大文件可能会多达成千上万行,这使得在文件内导航非常困难,尤其是在终端上。此外,大多数终端仿真器的回滚缓冲区只有几百行。这可能使得无法使用打印到标准输出的实用程序(例如 catheadtail)在终端中浏览大型文件。在计算时代的早期,程序员通过开发用于以虚拟“页面”形式显示文本的实用程序来解决这些问题,该实用程序被形象地描述为 分页器 pager

分页器提供了许多使文本文件导航更加简单的功能,包括滚动、搜索功能,以及作为命令管道的一部分而具有的功能。与大多数文本编辑器相比,某些终端分页器不需要加载整个文件即可查看,这使得它们更快,特别是对于非常大的文件。

在现代 Linux 计算时代,终端仿真器比以往更加复杂。它们提供了对缤纷的色彩、终端尺寸调整以及许多其它功能的支持,这些功能使得辨析屏幕上的文本变得更加轻松和高效。从诸如 pgmore 这样极其简单的 UNIX 实用程序,到涵盖各种使用场景的、功能广泛的复杂程序,终端分页器也经历了类似的演变。考虑到这一点,我们或“多”或“少”地汇总了一些最受欢迎的终端分页实用程序的列表。

more

more 是最早的分页器之一,最初在 3.0 BSD 版本中出现。more 的第一个实现由 Daniel Halbert 编写于 1978 年。从那时起,more 已成为许多操作系统的普遍功能,包括 Windows、OS/2,MacOS 和大多数 Linux 发行版。

more 是一个非常轻量级的实用程序。util-linux 软件包中提供的版本只有不到 2100 行的 C 语言代码。但是,这种较小的代码大小是有代价的。大多数版本的 more 的功能相对有限,不支持向后滚动或搜索。命令也同样精简:按回车键可滚动一行,或按空格键滚动一页。其他一些有用的命令包括:

  • 在阅读时按 v 键以在默认的终端编辑器中打开当前文件。
  • /模式 可以让你搜索下一个出现的“模式”。
  • 以多个文件作为参数调用 more 时,:n:p 将分别打开下一个和上一个文件 ### less

less 最初被认为是 more 的继承者,解决了它的一些局限性。lessmore 的功能为基础,增加了许多有用的功能,包括向后滚动、向后搜索。它也更适合窗口大小调整。

less 中的导航方式与 more 类似,尽管 less 也从 vi 编辑器借用了一些有用的命令。用户可以使用熟悉的 主行导航键 home row navigational keys (LCTT 译注:指 左手的 ASDF 和右手的 JKL;,及大拇指所在的空格键)浏览文档。看一眼 less 的手册页,就会发现相当多的可用命令。一些特别有用的示例包括:

  • ?模式 可让你在文件中向后搜索“模式”。
  • &模式 仅显示具有“模式”特征的行。这对于发现自己经常要使用 $ grep 模式 | less 的人特别有用。
  • 使用 -s(或 –sqeueeze-blank-lines)标志来调用 less,使你可以查看空白较大的文本文件。 多个换行符被简化为单个中断行。
  • 在该程序中调用的 s 文件名 将输入保存到 文件名中(如果输入来自管道)。
  • 或者,使用 -o 文件名 标志来调用 less 将把 less 的输入保存到 文件名 中。 随着这些增强的功能也带来了体积的略微增大。在写作本文时,Fedora 随附的 less 版本大约有 25000 行源代码。当然,除非是受存储限制最大的系统,在所有其它的系统上这都不是问题。lessmore 功能更多。

most

less 旨在扩展 more 的现有功能,而 most 采用另一种方法。most 不是在传统的单个文件视图上进行扩展,而是使用户能够将其视图拆分为“窗口”。每个窗口以不同的查看模式包含不同的文件。

重要的是,most 考虑了其输入文本的宽度。默认的查看模式是不换行的(less 中的 -S 参数),此功能在处理“宽”文件时特别有用。尽管对于某些用户来说,这些设计决策可能代表着与传统的重大偏离,但最终结果却非常强大。

除了 more 提供的导航命令外,most 使用直观的助记符进行文件导航。例如,t 移至文件的顶部(Top),而 b 移至底部(Bottom)。这样,不熟悉 vi 及其衍生品的用户会发现 most 非常简单好用。

most 的与众不同之处在于它能够快速轻松地拆分窗口和上下文。例如,可以使用以下命令打开两个不同的文本文件:

$ most textFile1.txt textFile2.txt

为了水平拆分屏幕,请使用组合键 Ctrl+x, 2Ctrl+w, 2:n 命令将在给定窗口中打开下一个文件参数,提供两个文件的分屏视图:

如果在一个窗口中关闭自动换行,它不会影响其他窗口的行为。(行末的)\ 字符表示换行或折叠,而 $ 字符表示文件超出了当前窗口的限制。

pspg

使用 SQL 数据库的人员通常需要能够一目了然地检查数据库的内容。许多流行的开源 DBMS(例如 MySQL 和 PostGreSQL)的命令行界面都使用系统默认的分页器来查看无法显示在单个屏幕上的输出。诸如 moreless 之类的实用程序是围绕呈现文本文件的想法而设计的,但是对于更结构化的数据,还有一些不足之处。天真的文本分页程序没有宽的表格数据的概念,当处理大型查询时,这可能会令人感到沮丧。

pspg 试图通过为用户提供在查看时冻结列、原位排序数据并为输出着色的功能来解决此问题。尽管pspg 最初是专门用作 psql 的分页器的替代品,但该程序还支持查看 CSV 数据,并且是 mysqlpgcli 的合适的直接替代品。

Vim

在现代的颜色鲜明的终端中,无休止的黑色页面上的灰色文字感觉太过时了。强大的文本编辑器(如 vim)提供的语法高亮显示选项对于浏览源代码很有用。此外,vim 提供的搜索功能远远超过了竞争对手。考虑到这一点,vim 附带了一个 shell 脚本 less.sh,该脚本可以使 vim 替代传统的分页器。

要将 vim 设置为手册页的默认分页器,请将以下内容添加到 shell 的配置中(如果使用默认的bash shell 的话是 ~/.bashrc):

export MANPAGER="/bin/sh -c \"col -b | vim -c 'set ft=man ts=8 nomod nolist nonu noma' -\""

或者,要将 vim 设置为系统范围内的默认分页器,请找到 less.sh 脚本。(你可以在当前 Fedora 系统上的 /usr/share/vim/vim81/macros/ 找到它。)将此位置导出为变量 PAGER 以将其设置为默认值,或者将其设置为别名以显式调用它。


via: https://fedoramagazine.org/5-cool-terminal-pagers-in-fedora/

作者:Jacob Burns 选题:lujun9972 译者:wxy 校对:wxy

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

本文是 24 天 Linux 桌面特别系列的一部分。GNOME 是大多数现代 Linux 发行版的默认桌面,它干净、简单、组织良好。

GNOME 项目理所应当是 Linux 桌面的宠儿。它起初是专有桌面(当时包括 KDE)的自由开源的桌面替代品,此后一直发展强劲。GNOME 采用了由 GIMP 项目开发的 GTK+,并将其开发为强大的通用 GTK 框架。该项目开创了用户界面的先声,挑战了桌面“应有”外观的先入之见,并为用户提供了新的范例和选项。

在大多数主流现代 Linux 发行版(包括 RHEL、Fedora、Debian 和 Ubuntu)中,GNOME 作为默认桌面而广泛使用。如果你的发行版不提供它的某个版本,那么你可以从软件仓库中安装 GNOME。但是,在执行此操作之前,请注意,为了提供完整的桌面体验,这会随桌面一起安装许多 GNOME 应用。如果你在用其他桌面,那么你可能会发现有冗余的应用(两个 PDF 阅读器、两个媒体播放器、两个文件管理器,等等)。如果你只想尝试 GNOME 桌面,请考虑在虚拟机,如 GNOME Boxes,中安装 GNOME 发行版。

GNOME 功能

GNOME 桌面很干净,顶部有一个简单的任务栏,右上角的系统托盘中只有很少的图标。GNOME 上没有桌面图标,这是设计使然。如果你是喜欢在桌面上保存任何东西的用户,那么你可能会意识到桌面会定期地变得混乱,而且,更糟糕的是,由于你的应用掩盖了桌面,因此桌面永远不会显示出来。

GNOME 解决了两个问题:(在功能上)没有桌面,并且动态生成新的虚拟工作区,因此你可以在全屏模式下运行应用。如果你常把屏幕弄乱,那么可能需要一些时间来习惯,但实际上,从各个方面来说,这都是一种改进的工作流程。你将学习如何使文件井井有条(或者将它们分散在家目录中),并且可以像在手机上一样快速地在屏幕之间切换。

当然,并非所有应用都设计为在全屏模式下运行,因此,如果你更喜欢单击切换窗口,也可以这样做。

 title=

GNOME 哲学褒扬了 Canonical 对常见任务的解决方案。在 GNOME 中,你通常不会发现“回字有四种写法”。你会找到一种或两种官方方法来完成一项任务,你了解了这些方法后,便只需记住这些即​​可。它非常简单,但由于它在 Linux 上运行,因此在技术上也很灵活(毕竟,你不必因为运行 GNOME 桌面而必须要使用 GNOME 应用)。

应用菜单

要访问名为“活动”的应用菜单,请在桌面的左上角单击。此菜单将占满整个屏幕,屏幕最左侧有一栏常见应用的 dock,或可以在网格中浏览应用的图标。你可以通过浏览已安装的应用,或输入软件的头几个字母来过滤列表,然后来启动应用。

 title=

GNOME 应用

GNOME 不仅是桌面。它是一个桌面以及一组丰富的集成应用,例如 Gedit 文本编辑器、Evince PDF 查看器、Web 浏览器、图像查看器、Nautilus 文件管理器等等。GNOME 应用(例如桌面本身)遵循 GNOME 人机界面指南,因此用户体验既愉悦又一致。无论你是否使用 GNOME 桌面,都可能使用 GTK 应用,也可能会使用 GNOME 应用。

GNOME 3 及更高版本

GNOME 项目进展顺利,还有几个令人兴奋的项目(例如 MATE 和 Cinnamon)。它流行、令人舒适,被视为 Linux 桌面的代表。


via: https://opensource.com/article/19/12/gnome-linux-desktop

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

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

即将进行系统管理员工作面试吗?阅读本文,了解你可能会遇到的一些问题以及可能的答案。

作为一个经常与计算机打交道的极客,在硕士毕业后在 IT 行业选择我的职业是很自然的选择。因此,我认为走上系统管理员之路是正确的路径。在我的职业生涯中,我对求职面试过程非常熟悉。现在来看一下对该职位的预期、职业发展道路,以及一系列常见面试问题及我的回答。

系统管理员的典型任务和职责

组织需要了解系统工作原理的人员,以确保数据安全并保持服务平稳运行。你可能会问:“等等,是不是系统管理员还能做更多的事情?”

你是对的。现在,一般来说,让我们看一下典型的系统管理员的日常任务。根据公司的需求和人员的技能水平,系统管理员的任务从管理台式机、笔记本电脑、网络和服务器到设计组织的 IT 策略不等。有时,系统管理员甚至负责购买和订购新的 IT 设备。

那些寻求系统管理工作以作为其职业发展道路的人可能会发现,由于 IT 领域的快速变化是不可避免的,因此难以保持其技能和知识的最新状态。所有人都会想到的下一个自然而然的问题是 IT 专业人员如何掌握最新的更新和技能。

简单的问题

这是你将遇到的一些最基本的问题,以及我的答案:

1、你在 *nix 服务器上登录后键入的前五个命令是什么?

  • lsblk 以查看所有的块设备信息
  • who 查看谁登录到服务器
  • top,以了解服务器上正在运行的进程
  • df -khT 以查看服务器上可用的磁盘容量
  • netstat 以查看哪些 TCP 网络连接处于活动状态

2、如何使进程在后台运行,这样做的好处是什么?

你可以通过在命令末尾添加特殊字符 来使进程在后台运行。通常,执行时间太长并且不需要用户交互的应用程序可以放到后台,以便我们可以在终端中继续工作。(引文

3、以 root 用户身份运行这些命令是好事还是坏事?

由于两个主要问题,以 root 身份运行(任何命令)是不好的。第一个是风险。当你以 root 身份登录时,无法避免你由于粗心大意而犯错。如果你尝试以带有潜在危害的方式更改系统,则需要使用 sudo,它会引入一个暂停(在你输入密码时),以确保你不会犯错。

第二个原因是安全。如果你不知道管理员用户的登录信息,则系统更难被攻击。拥有 root 的访问权限意味着你已经能够进行管理员身份下的一半工作任务。

4、rmrm -rf 有什么区别?

rm 命令本身仅删除指明的文件(而不删除目录)。使用 -rf 标志,你添加了两个附加功能:-r(或等价的 -R--recursive)标志可以递归删除目录的内容,包括隐藏的文件和子目录;而 -f(或 --force)标志使 rm 忽略不存在的文件,并且从不提示你进行确认。

5、有一个大小约为 15GB 的 Compress.tgz 文件。你如何列出其内容,以及如何仅提取出特定文件?

要列出文件的内容:

tar tf archive.tgz

要提取特定文件:

tar xf archive.tgz filename

有点难度的问题

这是你可能会遇到的一些较难的问题,以及我的答案:

6、什么是 RAID?什么是 RAID 0、RAID 1、RAID 5、RAID 6 和 RAID 10?

RAID( 廉价磁盘冗余阵列 Redundant Array of Inexpensive Disks )是一种用于提高数据存储性能和/或可靠性的技术。RAID 级别为:

  • RAID 0:也称为磁盘条带化,这是一种分解文件并将数据分布在 RAID 组中所有磁盘驱动器上的技术。它没有防止磁盘失败的保障。(引文
  • RAID 1:一种流行的磁盘子系统,通过在两个驱动器上写入相同的数据来提高安全性。RAID 1 被称为镜像,它不会提高写入性能,但读取性能可能会提高到每个磁盘性能的总和。另外,如果一个驱动器发生故障,则会使用第二个驱动器,发生故障的驱动器需要手动更换。更换后,RAID 控制器会将可工作的驱动器的内容复制到新驱动器上。
  • RAID 5:一种磁盘子系统,可通过计算奇偶校验数据来提高安全性和提高速度。RAID 5 通过跨三个或更多驱动器交错数据(条带化)来实现此目的。在单个驱动器发生故障时,后续读取可以从分布式奇偶校验计算出,从而不会丢失任何数据。
  • RAID 6:通过添加另一个奇偶校验块来扩展 RAID 5。此级别至少需要四个磁盘,并且可以在任何两个并发磁盘故障的情况下继续执行读/写操作。RAID 6 不会对读取操作造成性能损失,但由于与奇偶校验计算相关的开销,因此确实会对写入操作造成性能损失。
  • RAID 10:RAID 10 也称为 RAID 1 + 0,它结合了磁盘镜像和磁盘条带化功能来保护数据。它至少需要四个磁盘,并且跨镜像对对数据进行条带化。只要每个镜像对中的一个磁盘起作用,就可以检索数据。如果同一镜像对中的两个磁盘发生故障,则所有数据将丢失,因为带区集中没有奇偶校验。(引文

7、ping 命令使用哪个端口?

ping 命令使用 ICMP。具体来说,它使用 ICMP 回显请求和应答包。

ICMP 不使用 UDP 或 TCP 通信服务:相反,它使用原始的 IP 通信服务。这意味着,ICMP 消息直接承载在 IP 数据报数据字段中。

8、路由器和网关之间有什么区别?什么是默认网关?

路由器描述的是一种通用技术功能(第 3 层转发)或用于该目的的硬件设备,而网关描述的是本地网段的功能(提供到其他地方的连接性)。你还可以说“将路由器设置为网关”。另一个术语是“跳”,它描述了子网之间的转发。

术语默认网关表示局域网上的路由器,它的责任是作为对局域网外部的计算机通信的第一个联系点。

9、解释一下 Linux 的引导过程。

BIOS -> 主引导记录(MBR) -> GRUB -> 内核 -> 初始化 -> 运行级

10、服务器启动时如何检查错误消息?

内核消息始终存储在 kmsg 缓冲区中,可通过 dmesg 命令查看。

引导出现的问题和错误要求系统管理员结合某些特定命令来查看某些重要文件,这些文件不同版本的 Linux 处理方式不同:

  • /var/log/boot.log 是系统引导日志,其中包含系统引导过程中展开的所有内容。
  • /var/log/messages 存储全局系统消息,包括系统引导期间记录的消息。
  • /var/log/dmesg 包含内核环形缓冲区信息。

11、符号链接和硬链接有什么区别?

符号链接软链接)实际是到原始文件的链接,而硬链接是原始文件的镜像副本。如果删除原始文件,则该软链接就没有用了,因为它指向的文件不存在了。如果是硬链接,则完全相反。如果删除原始文件,则硬链接仍然包含原始文件中的数据。(引文

12、如何更改内核参数?你可能需要调整哪些内核选项?

要在类 Unix 系统中设置内核参数,请首先编辑文件 /etc/sysctl.conf。进行更改后,保存文件并运行 sysctl -p 命令。此命令使更改永久生效,而无需重新启动计算机

13、解释一下 /proc 文件系统。

/proc 文件系统是虚拟的,并提供有关内核、硬件和正在运行的进程的详细信息。由于 /proc 包含虚拟文件,因此称为“虚拟文件系统”。这些虚拟文件具有独特性。其中大多数显示为零字节。

虚拟文件,例如 /proc/interrupts/proc/meminfo/proc/mounts/proc/partitions,提供了系统硬件的最新信息。其他诸如 /proc/filesystems/proc/sys 目录提供系统配置信息和接口。

14、如何在没有密码的情况下以其他用户身份运行脚本?

例如,如果你可以编辑 sudoers 文件(例如 /private/etc/sudoers),则可以使用 visudo 添加以下内容

user1 ALL =(user2)NOPASSWD:/opt/scripts/bin/generate.sh

15、什么是 UID 0 toor 帐户?是被入侵了么?

toor 用户是备用的超级用户帐户,其中 toorroot 反向拼写。它预期与非标准 shell 一起使用,因此 root 的默认 shell 不需要更改。

此用途很重要。这些 shell 不是基本发行版的一部分,而是从 ports 或软件包安装的,它们安装在 /usr/local/bin 中,默认情况下,位于其他文件系统上。如果 root 的 shell 位于 /usr/local/bin 中,并且未挂载包含 /usr/local/bin 的文件系统,则 root 无法登录以解决问题,并且系统管理员必须重新启动进入单用户模式来输入 shell 程序的路径。

更难的问题

这是你可能会遇到的甚至更困难的问题:

16、tracert 如何工作,使用什么协议?

命令 tracert(或 traceroute,具体取决于操作系统)使你可以准确地看到在连接到最终目的地的连接链条中所触及的路由器。如果你遇到无法连接或无法 ping 通最终目的地的问题,则可以使用 tracert 来帮助你确定连接链在何处停止。(引文

通过此信息,你可以联系正确的人;无论是你自己的防火墙、ISP、目的地的 ISP 还是中间的某个位置。 tracert 命令像 ping 一样使用 ICMP 协议,但也可以使用 TCP 三步握手的第一步来发送 SYN 请求以进行响应。

17、使用 chroot 的主要优点是什么?我们何时以及为什么使用它?在 chroot 环境中,mount /devmount /procmount /sys 命令的作用是什么?

chroot 环境的优点是文件系统与物理主机是隔离的,因为 chroot 在文件系统内部有一个单独的文件系统。区别在于 chroot 使用新创建的根目录(/)作为其根目录。

chroot 监狱可让你将进程及其子进程与系统其余部分隔离。它仅应用于不以 root 身份运行的进程,因为 root 用户可以轻松地脱离监狱。

该思路是创建一个目录树,在其中复制或链接运行该进程所需的所有系统文件。然后,你可以使用 chroot() 系统调用来告诉它根目录现在位于此新树的基点上,然后启动在该 chroot 环境中运行的进程。由于该命令因此而无法引用修改后的根目录之外的路径,因此它无法在这些位置上执行恶意操作(读取、写入等)。(引文

18、如何保护你的系统免遭黑客攻击?

遵循最低特权原则和这些做法:

  • 使用公钥加密,它可提供出色的安全性。
  • 增强密码复杂性。
  • 了解为什么要对上述规则设置例外。
  • 定期检查你的例外情况。
  • 让具体的人对失败负责。(它使你保持警惕。)(引文

19、什么是 LVM,使用 LVM 有什么好处?

LVM(逻辑卷管理)是一种存储设备管理技术,该技术使用户能够合并和抽象化组件存储设备的物理布局,从而可以更轻松、灵活地进行管理。使用设备映射器的 Linux 内核框架,当前迭代(LVM2)可用于将现有存储设备收集到组中,并根据需要从组合的空间分配逻辑单元。

20、什么是粘性端口?

粘性端口是网络管理员最好的朋友,也是最头痛的事情之一。它们允许你设置网络,以便通过将交换机上的每个端口锁定到特定的 MAC 地址,仅允许一台(或你指定的数字)计算机在该端口上进行连接。

21、解释一下端口转发?

尝试与安全的网络内部的系统进行通信时,从外部进行通信可能非常困难,这是很显然的。因此,在路由器本身或其他连接管理设备中使用端口转发表可以使特定流量自动转发到特定目的地。例如,如果你的网络上运行着一台 Web 服务器,并且想从外部授予对该服务器的访问权限,则可以将端口转发设置为该服务器上的端口 80。这意味着在 Web 浏览器中输入你的(外网)IP 地址的任何人都将立即连接到该服务器的网站。

请注意,通常不建议允许从你的网络外部直接访问服务器。

22、对于 IDS,误报和漏报是什么?

当入侵检测系统(IDS)设备为实际上没有发生的入侵生成警报时,这是 误报(假阳性) false positive 。如果设备未生成任何警报,而入侵实际上已发生,则为 漏报(假阴性)

23、解释一下 :(){ :|:& };:,如果已经登录系统,如何停止此代码?

这是一枚复刻炸弹。它分解如下:

  • :() 定义了函数,以 : 作为函数名,并且空括号表示它不接受任何参数。
  • {} 是函数定义的开始和结束。
  • :|: 将函数 : 的副本加载到内存中,并将其输出通过管道传递给函数 : 的另一个副本,该副本也必须加载到内存中。
  • 使前一个命令行成为后台进程,因此即使父进程被自动杀死,子进程也不会被杀死。
  • : 执行该函数,因此连锁反应开始。

保护多用户系统的最佳方法是使用特权访问管理(PAM)来限制用户可以使用的进程数。

复刻炸弹的最大问题是它发起了太多进程。因此,如果你已经登录系统,我们有两种尝试解决此问题的方法。一种选择是执行一个 SIGSTOP 命令来停止进程,例如:

killall -STOP -u user1

如果由于占用了所有进程而无法使用命令行,则必须使用 exec 强制其运行:

exec killall -STOP -u user1

对于复刻炸弹,最好的选择是防患于未然。

24、什么是 OOM 杀手,它如何决定首先杀死哪个进程?

如果内存被进程彻底耗尽,可能会威胁到系统的稳定性,那么 内存不足 out of memory (OOM)杀手就登场了。

OOM 杀手首先必须选择要杀死的最佳进程。最佳在这里指的是在被杀死时将释放最大内存的进程,并且对系统来说最不重要。主要目标是杀死最少数量的进程,以最大程度地减少造成的损害,同时最大化释放的内存量。

为了实现此目标,内核为每个进程维护一个 oom_score。你可以在 /proc 文件系统中的 pid 目录下的看到每个进程的 oom_score

$ cat /proc/10292/oom_score

任何进程的 oom_score 值越高,在内存不足的情况下被 OOM 杀手杀死的可能性就越高。(引文

总结

系统管理人员的薪水差别很大,有些网站上说年薪在 70,000 到 100,000 美元之间,具体取决于地点、组织的规模以及你的教育水平以及多年的工作经验。系统管理的职业道路最终归结为你对使用服务器和解决那些酷问题的兴趣。现在,我要说,继续前进,实现你的梦想之路吧!


via: https://opensource.com/article/19/7/sysadmin-job-interview-questions

作者:DirectedSoul 选题:lujun9972 译者:wxy 校对:wxy

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