2016年12月

对于新手而言,在 Linux 中使用命令行可能会非常不方便。没有图形界面,很难在不同文件夹间浏览,找到需要的文件。本篇教程中,我会展示如何在 Linux 中查找特定的文件。

第一步要做的是通过 SSH 连接到你的 Linux。在 Linux 中查找文件有两种方法。一种是使用 find 命令,另外一种是使用 locate 命令。我们先看第一种。

find 命令

使用 Linux find 命令可以用不同的搜索标准如名字、类型、所属人、大小等来搜索目录树。基本语法如下:

# find path expression search-term

下面是使用 find 命令根据文件名来查找特定文件的一个例子:

# find -name test.file

命令会搜索整个目录树来查找名为 test.file 的文件,并且会提供其存放位置。你可以使用你 Linux 上一个存在的文件名来尝试一下。

find 命令有时会花费几分钟来查找整个目录树,尤其是如果系统中有很多文件和目录的话。要显著减少时间,你可以指定搜索的目录。比如,如果你知道 /var 中存在 test.file,那就没有必要搜索其它目录。这样,你可以使用下面的命令:

# find /var -name test.file

find 还可以根据时间、大小、所属人、权限等选项搜索文件。要了解更多关于这些选项的信息,你可以使用查看** Linux find 命令**的手册。

# man find

locate 命令

要在Linux中使用locate命令,首先需要安装它。

如果你正在使用 Ubuntu,运行下面的命令来安装 locate:

# apt-get update
# apt-get install mlocate

如果你使用的是 CentOS ,运行下面的命令来安装 locate:

# yum install mlocate

locate 是一种比 find 更快的方式,因为它在数据库中查找文件。要更新搜索数据库,运行下面的命令:

# updatedb

使用 locate 查找文件的语法:

# locate test.file

就像 find 命令一样,locate 也有很多选项来过滤输出。要了解更多你可以查看Linux Locate 命令的手册。

# man locate

如果你喜欢这篇文件,请使用左边的按钮分享到社交网络上,或者在下面留言,谢谢。


via: https://www.rosehosting.com/blog/linux-find-file/

作者:RoseHosting 译者:geekpi 校对:jasminepeng

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

在 Linux 系统上,其中一个最重要的需求就是保持定期更新最新的安全补丁,或者为相应的 Linux 版本更新可用的安全补丁。

在之前的文章中,我们分享了如何在 Debian 和 Ubuntu 系统上自动安装安全更新,在这篇文章中,我们将分享如何在 CentOS/RHEL 7/6 版本中设置在需要时自动更新重要的安全补丁。

和它同一家族的其它 Linux 版本(Fedora 或 Scientific Linux)中可以用类似的方法进行配置。

在 CentOS/RHEL 系统上配置自动安全更新

在 CentOS/RHEL 7/6 系统上,你需要安装下面的安装包:

# yum update -y && yum install yum-cron -y

在 CentOS/RHEL 7 系统上启用自动安全更新

安装完成以后,打开 /etc/yum/yum-cron.conf,然后找到下面这些行内容,你必须确保它们的值和下面展示的一样

update_cmd = security
update_messages = yes
download_updates = yes
apply_updates = yes

第一行表明自动更新命令行应该像这样:

# yum --security upgrade

而其它的行保证了能够通知并自动下载、安装安全升级。

为了使来自 root@localhost 的通知能够通过邮件发送给同一账户(再次说明,你可以选择其他账户,如果你想这样的话),下面这些行也是必须的。

emit_via = email
email_from = root@localhost
email_to = root

在 CentOS/RHEL 6 上启用自动安全更新

默认情况下, cron 任务被配置成了立即下载并安装所有更新,但是我们可以通过在 /etc/sysconfig/yum-cron 配置文件中把下面两个参数改为 yes,从而改变这种行为。

# 不要安装,只做检查(有效值: yes|no)
CHECK_ONLY=yes
# 不要安装,只做检查和下载(有效值: yes|no)
# 要求 CHECK_ONLY=yes(先要检查后才可以知道要下载什么)
DOWNLOAD_ONLY=yes

为了启用关于安装包更新的邮件通知,你需要把 MAILTO 参数设置为一个有效的邮件地址。

# 默认情况下 MAILTO 是没有设置的,crond 会将输出发送邮件给自己  
# (LCTT 译注:执行 cron 的用户,这里是 root)
# 例子: MAILTO=root
[email protected]

最后,打开并启用 yum-cron 服务:

------------- On CentOS/RHEL 7 ------------- 
systemctl start yum-cron
systemctl enable yum-cron
------------- On CentOS/RHEL 6 -------------  
# service yum-cron start
# chkconfig --level 35 yum-cron on

恭喜你,你已经成功的在 CentOS/RHEL 7/6 系统上设置了自动升级。

总结

在这篇文章中,我们讨论了如何保持你的服务器定期更新或升级最新的安全补丁。另外,为了保证当新的补丁被应用时你自己能够知道,你也学习了如何配置邮件通知。

如果你有任何关于这篇文章的疑问,请在下面的评论区留下你的问题。我们期待收到你的回复。


via: http://www.tecmint.com/auto-install-security-patches-updates-on-centos-rhel/

作者:Gabriel Cánepa 译者:ucasFL 校对:jasminepeng

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

计算机术语中,批处理指的是用一个非交互式的程序来执行一序列的任务的方法。这篇教程里,我们会使用 Linux 命令行工具,并提供 4 种简单的处理方式来把一些 .PNG 格式的图像批量转换成 .JPG 格式的,以及转换回来。

虽然所有示例中我们使用的都是 convert 命令行工具,但是您也可以使用 mogrify 命令来达到同样的效果。

convert 命令的语法如下:

$ convert 输入选项 输入文件 输出选项 输出文件

mogrify 的为:

$ mogrify 选项 输入文件

注意:在使用 mogrify 命令时,默认情况下源图像文件会被转换后的新文件覆盖掉,您可以使用明确的操作选项来禁止覆盖,具体的选项可以在手册页中查询得到。

下面是把所有 .PNG 格式图像批量转换为 .JPG 格式的各种实现方式。如果想把 .JPG 转换为 .PNG 格式,也可使用这些命令,按需修改。

1、 使用 lsxargs 命令来转换 PNG 和 JPG

ls 命令 可以列出所有的 png 图像文件, xargs 使得可以从标准输入构建和执行 convert 命令,从而将所有 .png 图像转换为 .jpg 图像。

----------- 从 PNG 转换到 JPG ----------- 
$ ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"'

----------- 从 JPG 转换到 PNG ----------- 
$ ls -1 *.jpg | xargs -n 1 bash -c 'convert "$0" "${0%.jpg}.png"'

关于上面命令选项的说明:

  1. -1 – 告诉 ls 每行列出一个图像名称的选项标识
  2. -n – 指定最多参数个数,例子中为 1
  3. -c – 指示 bash 运行给定的命令
  4. ${0%.png}.jpg – 设置新转换的图像文件的名字,% 符号用来删除源文件的扩展名

Convert PNG to JPG Format in Linux

Linux 中 PNG 格式转为 JPG 格式

我使用 ls -ltr 命令按修改的日期和时间列出所有文件

类似的,也可以使用上面的命令要把 .JPG 图像转换为 .PNG 格式,只需稍微调整就行。

2、 使用 GNU 的 parallel 命令来转换 PNG 和 JPG

GNU 的 parallel 使用户能够从标准输入并行构建和执行 shell 命令。确保您的系统上安装了 GNU Parallel,否则请使用以下适当的命令进行安装:

$ sudo apt-get install parallel     [在 Debian/Ubuntu 系统中]
$ sudo yum install parallel         [在 RHEL/CentOS 和 Fedora 系统中]

安装好 parallel 工具后,您就可以运行下面的命令来把所有从标准输入的 .PNG 图像转换成 .JPG 格式的图像。

----------- 从 PNG 转换到 JPG ----------- 
$ parallel convert '{}' '{.}.jpg' ::: *.png

----------- 从 JPG 转换到 PNG -----------
$ parallel convert '{}' '{.}.png' ::: *.jpg

其中:

  1. {} – 输入行替代符,代替了从输入源读取的完整行。
  2. {.} – 去除扩展名的输入行。
  3. ::: – 指定输入源的符号,即上面示例的命令行,在这里 png 或 jpg 是命令参数。

Parallel Command - Converts All PNG Images to JPG Format

Parallel 命令 – 把所有 PNG 图像转换为 JPG 格式

或者,您也可以结合 lsparallel 命令来批量转换所有图像,如图所示:

----------- 从 PNG 转换到 JPG ----------- 
$ ls -1 *.png | parallel convert '{}' '{.}.jpg'

----------- 从 JPG 转换到 PNG -----------
$ ls -1 *.jpg | parallel convert '{}' '{.}.png'

3、 使用 for 循环命令来转换 PNG 和 JPG

为了避免编写 shell 脚本的繁琐,你可以从命令行执行 for 循环语句,如下所示:

----------- 从 PNG 转换到 JPG ----------- 
$ bash -c 'for image in *.png; do convert "$image" "${image%.png}.jpg"; echo “image $image converted to ${image%.png}.jpg ”; done'

----------- 从 JPG 转换到 PNG -----------
$ bash -c 'for image in *.jpg; do convert "$image" "${image%.jpg}.png"; echo “image $image converted to ${image%.jpg}.png ”; done'

对上面的命令所使用的选项参数的描述:

  1. -c 允许执行包括在单引号中的循环语句。
  2. image 变量是目录中的图像名的数量记数器。
  3. 对于每个转换操作,在 $image 转换为 ${image%.png}.jpg 这行中,echo 命令通知用户 png 图像已经转换为 jpg 格式,反之亦然。
  4. ${image%.png}.jpg 语句创建了转换后的图像名字,其中 % 表示去除源图像文件的扩展名。

for loop - Convert PNG to JPG Format

for 循环语句 – 从 PNG 转换到 JPG 格式

4、 使用 Shell 脚本来转换 PNG 和 JPG

如果你不想像前面的例子那样让你的命令行变得邋遢的话,可以写一个小脚本,如下所示:

注意:适当地交换 .png.jpg 扩展名,如下面的例子所示,从一种格式转换到另一种格式:

#!/bin/bash
#convert
for image in *.png; do
        convert  "$image"  "${image%.png}.jpg"
        echo “image $image converted to ${image%.png}.jpg ”
done
exit 0 

把上面的脚本保存为 convert.sh 文件,然后使此脚本文件可执行,接着从存有图像文件的目录下执行。

$ chmod +x convert.sh
$ ./convert.sh

Batch Image Convert Using Shell Script

使用 Shell 脚本来批量图像转换

总之,我们介绍了一些重要的将 .PNG 图像批量转换为 .JPG 格式的方法,以及再转回来。如果还想对图像进行一些优化的话, 您可以移步到 Linux 系统中如何压缩 png 和 jpg 图像这篇指导文章。

您可以给我们分享一些包括 Linux 命令行工具在内的把图像从一种格式转成另一种格式的方式方法,或者在下面的评论部分畅所欲言。


via: http://www.tecmint.com/linux-image-conversion-tools/

作者:Aaron Kili 译者:runningwater 校对:wxy

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

WattOS

Jack Wallen 将介绍一下是什么让 WattOS 这么特别。

Linux 领域里的每个人不是听说过就是使用过某个轻量级的 Linux 发行版。大家都知道我们不断追求的是:占用内存少,配置资源要求低,包含一个轻量级的桌面环境(或者窗口管理器),并且提供和其他发行版相似的桌面布局,把赌注押在相同的需求之上。

这种发行版大多用来工作。有一个可以击垮很多轻量级 Linux 发行版的问题,它们没有真正含有一般用户完成工作需要的工具。结果就是,它们沦落为用来完成特殊任务(像数据恢复、做信息亭等)。

在某种程度上,WattOS 陷入了同样的困境(它唯一含有的生产力工具是 PDF 阅读器,而且它使用标准的“任务栏/开始菜单”象征桌面)。然而幸运的是,WattOS 通过难以置信的运行速度、稳定性以及内置新立得包管理器弥补了这些缺点;所以,WattOS 可以很容易的成为一个适合所有人的轻量级 Linux 发行版。

到底是什么让 WattOS 如此特别,让我们一起一探究竟。

内核

事实上当我发现 WattOS 基于 kernel 4.4 内核时我非常吃惊。升级系统之后,执行 uname -r 命令可以看到是 4.4.0-38-generic。鉴于这个发行版的目的是让老旧和运行卡顿的机器重获新生,它和我的 Elementary OS Loki 发行版内置相同版本的内核真是一个可爱的惊喜。这意味着 WattOS 在新旧硬件上都会有良好的工作表现。

真正的惊喜不止于此,当你去 WattOS 的网站,你会同时发现 32 位和 64 位版本的下载地址(现在大多数新的发行版都倾向于放弃 32 位发行版本)。所以,不仅系统内核对新式硬件提供支持,而且系统发行版本的多种架构也能让那些老式的 32 位机器重获新生。

运行速度

当安装上 WattOS 的时候,有那么一刻我对它有纯粹的羡慕。WattOS 的运行速度快的令人难以置信。甚至当它的桌面版作为客户机在 VirtualBox 虚拟机平台工作时,运行速度依然远远超过了我的 Elementary OS Loki 桌面发行版。后来我才了解到当时运行的宿主机是 System76 Leopard,配置有水冷装置的 i7 处理器和 16GB 的运行内存。分配给 WattOS 大约 2G 的内存,让它看起来没有什么任务可以拖慢它。WattOS 的运行速度壮观的令人难以诉说,它越来越成熟了。我从没见过火狐浏览器能打开的这么快。

接下来说说 LibreOffice 应用的启动。由于想测试 LibreOffice 的启动速度,所以我打开了新立得软件包管理器,计划安装这一开源办公软件套件的佼佼者。

无果。

安装 LibreOffice 的主要问题是缺少一个依赖软件包 python3-uno,而且无论怎么尝试都无法安装成功。然而,最后我在 LibreOffice 官方网站 上下载了 deb 格式的软件包。把下载的文件解压之后,cd 到 LibreOffice5.2.2.2Linuxx86-64deb/DEBS/ 目录下,最后通过执行 sudo dpkg -i *.deb 命令成功的安装好了 LibreOffice。

LibreOffice 运行的怎么样呢?速度快到要疯了。值得再提的是,我从没见过这个应用能像在 WattOS 上运行的这么快。点击 LibreOffice Writer 的图标,它花费的时间是在 Elementary OS Loki (已经很快了)主机上花费的一半。

桌面

我个人偏爱于桌面向更加现代化的趋势进行迭代。我是 Ubuntu 的 Unity 桌面,GNOME 3 桌面,以及(特别是) Elementary OS 的粉丝。所以使用古老风格桌面的主意意味着对我几乎没有吸引力。即便如此,WattOS 在把现代设计风格融入老式设计时做的非常好。举例来说,默认的桌面主题(图 1)。WattOS 的 UI 设计者巧妙设计了桌面主题,所以它没有完全偏离 Windows XP 或者老式 Linux CDE 风格的窗口管理器的设计理念。

WattOS

图 1:WattOS 的文件管理器展示了有些现代化的主题 使用许可

关于 WattOS 的桌面(基于 LXDE)的确有一些要说的但以前从来没说过,就是每个拥有像简洁、直接,有足够灵活度和自定义度这些特点的 Linux 桌面版,对每个使用过 Windows 95 的电脑使用者来说都会很熟悉。

惊喜之处,优点和缺点

正像每个新的 Linux 桌面版的体验那样,WattOS 有让人惊喜的地方,同时也有优点和缺点。首先,说说优点。

WattOS 除了绝对的速度(用一个简单的 “WOW” 来评论),还在桌面上固定了一些特别的惊喜(大多数都是预置的应用)。额外的软件中最好的是 KeePassX(一个极少被默认包含在桌面版的应用)。我认为密码管理器应该默认安装在每一个电脑桌面上,值得骄傲的是 WattOS 预装了这个杰出的工具。

下一个讨论的是预装火狐浏览器。许多轻量级的发行版会预装像 Surf 或者 Midori 这样的浏览器。这两个浏览器都不错,但是它们的兼容性经常达不到像谷歌文档这样网站的要求。因为 WattOS 含有成熟的火狐浏览器,你会发现该系统的功能在火狐浏览器兼容的网站上表现的很完美。

最后,算不上好的意外。正如我已经提到的,在安装 LibreOffice 时马上就有了故障。然而安装像 GIMP 这样的软件就很顺利(所以我认为这是偶然问题)。除了这一个问题,我觉得默认桌面菜单有些混乱。例如,新立得软件包管理器放在个性化菜单里。我更愿在主菜单中突出显示项中看到它,并且加上类似“软件安装”(或任何其他新用户容易理解)的标签。从我的视角来说,个性化菜单项应该用于放置配置该平台各种风格的工具,而不是安装软件的工具。

除此之外,若想在 WattOS 主攻方向上的找茬的话,特别是你要找一个面对老旧硬件 Linux 发行版时,你会发现这非常困难。

结论

尽管 WattOS 主要为老旧硬件设计,但你完全可以把它运行在现代桌面电脑上,并且会运行的很好。根据零学习曲线,你很快就会熟悉 WattOS,并发现它运行极快而且稳定。试试这个小排量的 Linux 发行版吧,相信它会给你同样深刻的印象。如果你发现 WattOS 运行的不够快(发生了一些我没有预料到的事),你完全可以去使用 Microwatt(一个更轻的轻量级发行版)。


via: https://www.linux.com/learn/wattos-rock-solid-lightning-fast-lightweight-linux-distro-all

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

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

Neofetch 是一个跨平台的易于使用的 系统信息显示命令行脚本,它收集你的系统信息,并在终端中和图像一起显示出来,这个图像可能是你的发行版的 logo 也可能是你选择的一幅 ascii 艺术字。

Neofetch 和 ScreenFetch 或者 Linux\_Logo 很像,但是它可以高度定制,并且还有一些额外的我们要在下面讨论的特点。

它的主要特点有:运行速度快,可以显示全色图像 —— 用 ASCII 字符显示的发行版 logo ,旁边显示系统信息,可以高度定制,可以随时随地显示系统信息,并且在脚本结束的时候还可以通过一个特殊的参数来启用桌面截图。

系统要求:

  1. Bash 3.0+ 带 ncurses 支持。
  2. w3m-img (有时候会打包成 w3m) 或者 iTerm2 或者 Terminology,用于显示图像。
  3. imagemagick,用于创建缩略图。
  4. 支持 [\033[14tLinux 终端模拟器 或者 xdotool 或者 xwininfo + xprop 或者 xwininfo + xdpyinfo 。
  5. Linux 系统中还需要 feh、nitrogen 或者 gsettings 来提供对墙纸的支持。

注意:你可以从 Neofetch 的 Github 页面了解更多关于可选依赖的信息,以检查你的 Linux 终端模拟器 是不是真的支持 \033[14t 或者是否需要一些额外的依赖来使这个脚本在你的发行版上工作得更好。

怎样在 Linux 系统上安装 Neofetch

Neofetch 可以从几乎所有 Linux 发行版的第三方仓库轻松安装,请按照以下各自的安装说明进行安装。

Debian

$ echo "deb http://dl.bintray.com/dawidd6/neofetch jessie main" | sudo tee -a /etc/apt/sources.list
$ curl -L "https://bintray.com/user/downloadSubjectPublicKey?username=bintray" -o Release-neofetch.key && sudo apt-key add Release-neofetch.key && rm Release-neofetch.key
$ sudo apt-get update
$ sudo apt-get install neofetch

Ubuntu 和 Linux Mint

$ sudo add-apt-repository ppa:dawidd0811/neofetch
$ sudo apt-get update
$ sudo apt-get install neofetch

RHEL, CentOS 和 Fedora

你的系统里面要安装了 dnf-plugins-core ,或者用以下命令安装它:

$ sudo yum install dnf-plugins-core

启用 COPR 仓库然后安装 neofetch。

$ sudo dnf copr enable konimex/neofetch
$ sudo dnf install neofetch

Arch Linux

你可以用 packer 或 Yaourt 从 AUR 安装 neofetch 或 neofetch-git。

$ packer -S neofetch
$ packer -S neofetch-git
或
$ yaourt -S neofetch
$ yaourt -S neofetch-git

Gentoo

从 Gentoo/Funtoo 的官方源安装 app-misc/neofetch。如果你要安装这个程序的 git 版的话,你可以安装 app-misc/neofetch-9999。

怎么在 Linux 中使用 Neofetch

一旦你安装了 Neofetch ,使用它的一般语法是:

$ neofetch

注意: 要是你没有安装 w3m-img 或者 imagemagick 的话,screenfetch 会默认被启用,neofetch 会如下图所示显示你的 [ASCII 艺术 logo]。

Linux Mint 系统信息

Linux Mint 系统信息

Linux Mint 系统信息

Ubuntu 系统信息

Ubuntu System Information

Ubuntu 系统信息

如果你想用图片显示你的发行版 logo,需要用下面的命令安装 w3m-img 或者 imagemagick 。

$ sudo apt-get install w3m-img    [On Debian/Ubuntu/Mint]
$ sudo yum install w3m-img        [On RHEL/CentOS/Fedora]

然后再次运行 neofetch,你就会看到如下图所示的用你系统的默认墙纸来显示图片。

$ neofetch

Ubuntu System Information with Logo

Ubuntu 系统信息带 logo

第一次运行 neofetch 后,它会在这里创建一个配置文件: $HOME/.config/neofetch/config

这个配置文件可以让你通过 printinfo () 函数来调整你想显示在终端的系统信息。你可以增加,修改,删除,也可以使用 bash 代码去调整你要显示的信息。

你可以如下图所示用你喜欢的编辑器打开这个配置文件:

$ vi ~/.config/neofetch/config

以下是我系统配置的片段 ,显示了 printinfo () 函数。

Neofetch 配置

#!/usr/bin/env bash
# vim:fdm=marker
#
# Neofetch config file
# https://github.com/dylanaraps/neofetch

# Speed up script by not using unicode
export LC_ALL=C
export LANG=C

# Info Options {{{

# Info
# See this wiki page for more info:
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
printinfo() {
    info title
    info underline

    info "Model" model
    info "OS" distro
    info "Kernel" kernel
    info "Uptime" uptime
    info "Packages" packages
    info "Shell" shell
    info "Resolution" resolution
    info "DE" de
    info "WM" wm
    info "WM Theme" wmtheme
    info "Theme" theme
    info "Icons" icons
    info "Terminal" term
    info "Terminal Font" termfont
    info "CPU" cpu
    info "GPU" gpu
    info "Memory" memory

    # info "CPU Usage" cpu_usage
    # info "Disk" disk
    # info "Battery" battery
    # info "Font" font
    # info "Song" song
    # info "Local IP" localip
    # info "Public IP" publicip
    # info "Users" users
    # info "Birthday" birthday

    info linebreak
    info cols
    info linebreak
}
.....

下面的命令可以显示所有你能在 neofetch 脚本中用的参数和配置值:

$ neofetch --help

要启用所有的功能和参数来运行程序,你可以用 --test 参数:

$ neofetch --test

要再次显示 ASCII 艺术 logo ,你可以用 --ascii 参数 :

$ neofetch --ascii

这篇文章中,我们向你介绍了一个可以高度定制的、用来收集系统信息并将它显示在终端上的命令行脚本。

如果你有什么问题,或者对这个脚本有什么想法,请在下面留言。

最后但是同样重要的是,如果你知道有类似的脚本,请毫不犹豫地告诉我们,感谢反馈。

在此访问 neofetch Github 仓库


via: http://www.tecmint.com/neofetch-shows-linux-system-information-with-logo

作者:Aaron Kili 译者:Yinux 校对:wxy

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

某一天,我和我的一个机械工程师朋友聊天的时候。 他最近在做一个给半挂卡车的电子辅助刹车系统,他提到他们公司的办公室里都是 Arduinos。这主要是方便员工可以快速的对新的想法进行实验。他也提到了,Arduinos 其实比自己画电路板更加昂贵。对此,我感到非常震惊,因为我从软件行业得到的印象是 Arduinos 比定制电路板更加便宜。

我常常把 Arduinos树莓派 看做是可以制作非常有趣设备的小型、Cool、特别的组件。我主要从事于软件行业,并且总是觉得运行在 x86 和 x86-64 设备上的 Linux 才算是“常规用途”。而事实是,Arduinos 并不是特殊用途。实际上,它们是很常规的用途。它们相当的小、便宜,而且非常的灵活。这就是为什么它们像野火一样流行起来的原因。它们有全品类的输入输出设备和扩展卡。它们能让创客们快速的构建非常 Cool 的设备。它们甚至可以让公司可以快速地开发产品。

一套 Arduino 的单价比批量生产的电路板高了很多,但是,看不见的时间成本却低了很多。当电路板大规模生产的时候,价格可以控制的很低,但是,之前的研发费用却高了很多。所以,总而言之,答案就是,使用 Arduino 划得来。

Unikernel、Rump 内核和容器主机

Unikernel、Rump 内核和迷你 Linux 发行版,这些操作系统是为了特有用途而构建的。这些特有的操作系统,某种程度上就像定制电路板。它们需要前期的投入,还需要设计,但是,当大规模部署的时候,它可以提供强大的性能。

迷你操作系统,例如:红帽企业版 Atomic 或者 CoreOS 是为了运行容器而构建的。它们很小,快速,易于在启动时配置,并且很适合于运行容器。缺点就是它需要额外的工程量来添加第三方插件,比如监控客户端或者虚拟化的工具。副作用就是载入的工具也需要重新设计为超级权限的容器。 如果你正在构建一个巨大的容器环境,这些额外的工作量是划算的。但是,如果只是想尝试下容器,那可能就没必要了。

容器提供了运行标准化的工作流程(比如使用 glibc 编译)的能力。一个好处就是你可以在你的电脑上构建和测试这个工作单元(Docker 镜像)并且在完全不同的硬件上或者云端非常顺利的部署,而保持着相同的特性。在生产环境中,容器的宿主机仍然由运维团队进行配置管理,但是应用被开发团队控制。这就是对双方来说最好的合作方式。

Unikernels 和 Rump 内核依旧是为了特定目标构建的,但是却更进一步。整个的操作系统在构建的时候就被开发或者架构师配置好了。这带来了好处,同时还有挑战。

一个好处就是,开发人员可以控制这个工作流程的运转。理论上说,一个开发者可以为了不同的特性,尝试 不同的 TCP 协议栈,并且选择最好的一个。在操作系统启动的时候,开发人也可以配置 IP 地址,而不是通过 DHCP。 开发人员也可以裁剪任何对于应用而言不需要的部分。这也是性能提升的保障,因为减少了不必要的上下文切换

同时,Unikernel 也带来了挑战。目前,还缺失很多的工具。 现在,和画板子的世界类似,开发人员需要花费很多时间和精力在检查是否有完整的库文件存在,不然的话,他们必须改变他们应用的执行方式。在如何让这个“嵌入式”的操作系统在运行时配置的方面,也存在挑战。最后,每次操作系统的大改动,都需要反馈到开发人员来进行修改。这并没有一个在开发和运维之间明确的界限,所以我能想象,为了接受了这个开发流程,一些组织或者公司必须要改变。

结论

在专门的容器主机比如 Rump 内核和 Unikernel 方面也有一些有趣的传闻,因为,它们会带来一个特定工作流程的潜在变革(嵌入式、云,等等)。在这个令人激动又快速发展的领域请保持你的关注,但是也要谨慎。

目前,Unikernel 看起来和定制电路板很像。它们都需要前期的研发投资,并且都是非常独特的,可以为确定的工作流程带来好处。同时,容器甚至在常规的工作流中都非常有趣,而且它不需要那么多的投入。一个简单的例子,运维团队能方便的在容器上部署一个应用,但是在 Unikernel 上部署一个应用则需要重新设计和编码,而且业界并不能完全保证,这个工作流程就可以被部署在 Unikernel 上。

容器,Rump 内核 和 Unikernel 有一个光明的未来!


via: https://opensource.com/business/16/5/containers-unikernels-learn-arduino-raspberry-pi

作者:Scott McCarty 译者:MikeCoder 校对:wxy

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