2018年8月

这个开源工具可以很简单地将老视频转换为新格式。

最近,当我的儿子让我数字化他的高中篮球比赛的一些旧 DVD 时,我马上就想到了 Handbrake。它是一个开源软件包,可轻松将视频转换为可在 MacOS、Windows、Linux、iOS、Android 和其他平台上播放的格式所需的所有工具。

Handbrake 是开源的,并在 GPLv2 许可证下分发。它很容易在 MacOS、Windows 和 Linux 包括 FedoraUbuntu 上安装。在 Linux 中,安装后就可以从命令行使用 $ handbrake 或从图形用户界面中选择它。(我的情况是 GNOME 3)

Handbrake 的菜单系统易于使用。单击 “Open Source” 选择要转换的视频源。对于我儿子的篮球视频,它是我的 Linux 笔记本中的 DVD 驱动器。将 DVD 插入驱动器后,软件会识别磁盘的内容。

正如你在上面截图中的 “Source” 旁边看到的那样,Handbrake 将其识别为 720x480 的 DVD,宽高比为 4:3,以每秒 29.97 帧的速度录制,有一个音轨。该软件还能预览视频。

如果默认转换设置可以接受,只需按下 “Start Encoding” 按钮(一段时间后,根据处理器的速度),DVD 的内容将被转换并以默认格式 M4V 保存(可以改变)。

如果你不喜欢文件名,很容易改变它。

Handbrake 有各种格式、大小和配置的输出选项。例如,它可以生成针对 YouTube、Vimeo 和其他网站以及 iPod、iPad、Apple TV、Amazon Fire TV、Roku、PlayStation 等设备优化的视频。

你可以在 “Dimensions” 选项卡中更改视频输出大小。其他选项卡允许你应用过滤器、更改视频质量和编码、添加或修改音轨,包括字幕和修改章节。“Tags” 选项卡可让你识别输出视频文件中的作者、演员、导演、发布日期等。

如果使用 Handbrake 为特定平台输出,可以使用包含的预设。

你还可以使用菜单选项创建自己的格式,具体取决于你需要的功能。

Handbrake 是一款非常强大的软件,但它并不是唯一的开源视频转换工具。你有其他喜欢的吗?如果有,请分享评论。


via: https://opensource.com/article/18/7/handbrake

作者:Don Watkins 选题:lujun9972 译者:geekpi 校对:wxy

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

通过使用 /etc/passwd 文件,getent 命令,compgen 命令这三种方法查看系统中用户的信息。

大家都知道,Linux 系统中用户信息存放在 /etc/passwd 文件中。

这是一个包含每个用户基本信息的文本文件。当我们在系统中创建一个用户,新用户的详细信息就会被添加到这个文件中。

/etc/passwd 文件将每个用户的基本信息记录为文件中的一行,一行中包含 7 个字段。

/etc/passwd 文件的一行代表一个单独的用户。该文件将用户的信息分为 3 个部分。

* 第 1 部分:`root` 用户信息
* 第 2 部分:系统定义的账号信息
* 第 3 部分:真实用户的账户信息

第一部分是 root 账户,这代表管理员账户,对系统的每个方面都有完全的权力。

第二部分是系统定义的群组和账户,这些群组和账号是正确安装和更新系统软件所必需的。

第三部分在最后,代表一个使用系统的真实用户。

在创建新用户时,将修改以下 4 个文件。

* `/etc/passwd`: 用户账户的详细信息在此文件中更新。
* `/etc/shadow`: 用户账户密码在此文件中更新。
* `/etc/group`: 新用户群组的详细信息在此文件中更新。
* `/etc/gshadow`: 新用户群组密码在此文件中更新。

** 建议阅读 : **

方法 1 :使用 /etc/passwd 文件

使用任何一个像 catmoreless 等文件操作命令来打印 Linux 系统上创建的用户列表。

/etc/passwd 是一个文本文件,其中包含了登录 Linux 系统所必需的每个用户的信息。它保存用户的有用信息,如用户名、密码、用户 ID、群组 ID、用户 ID 信息、用户的家目录和 Shell 。

/etc/passwd 文件将每个用户的详细信息写为一行,其中包含七个字段,每个字段之间用冒号 : 分隔:

# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
2gadmin:x:500:10::/home/viadmin:/bin/bash
apache:x:48:48:Apache:/var/www:/sbin/nologin
zabbix:x:498:499:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
mysql:x:497:502::/home/mysql:/bin/bash
zend:x:502:503::/u01/zend/zend/gui/lighttpd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
2daygeek:x:503:504::/home/2daygeek:/bin/bash
named:x:25:25:Named:/var/named:/sbin/nologin
mageshm:x:506:507:2g Admin - Magesh M:/home/mageshm:/bin/bash

7 个字段的详细信息如下。

  • 用户名magesh): 已创建用户的用户名,字符长度 1 个到 12 个字符。
  • 密码x):代表加密密码保存在 `/etc/shadow 文件中。
  • **用户 ID(506):代表用户的 ID 号,每个用户都要有一个唯一的 ID 。UID 号为 0 的是为 root 用户保留的,UID 号 1 到 99 是为系统用户保留的,UID 号 100-999 是为系统账户和群组保留的。
  • **群组 ID (507):代表群组的 ID 号,每个群组都要有一个唯一的 GID ,保存在 /etc/group 文件中。
  • **用户信息(2g Admin - Magesh M):代表描述字段,可以用来描述用户的信息(LCTT 译注:此处原文疑有误)。
  • **家目录(/home/mageshm):代表用户的家目录。
  • **Shell(/bin/bash):代表用户使用的 shell 类型。

你可以使用 awkcut 命令仅打印出 Linux 系统中所有用户的用户名列表。显示的结果是相同的。

# awk -F':' '{ print $1}' /etc/passwd
or
# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
ftp
postfix
sshd
tcpdump
2gadmin
apache
zabbix
mysql
zend
rpc
2daygeek
named
mageshm

方法 2 :使用 getent 命令

getent 命令显示 Name Service Switch 库支持的数据库中的条目。这些库的配置文件为 /etc/nsswitch.conf

getent 命令显示类似于 /etc/passwd 文件的用户详细信息,它将每个用户详细信息显示为包含七个字段的单行。

# getent passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
2gadmin:x:500:10::/home/viadmin:/bin/bash
apache:x:48:48:Apache:/var/www:/sbin/nologin
zabbix:x:498:499:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
mysql:x:497:502::/home/mysql:/bin/bash
zend:x:502:503::/u01/zend/zend/gui/lighttpd:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
2daygeek:x:503:504::/home/2daygeek:/bin/bash
named:x:25:25:Named:/var/named:/sbin/nologin
mageshm:x:506:507:2g Admin - Magesh M:/home/mageshm:/bin/bash

7 个字段的详细信息如上所述。(LCTT 译注:此处内容重复,删节)

你同样可以使用 awkcut 命令仅打印出 Linux 系统中所有用户的用户名列表。显示的结果是相同的。

方法 3 :使用 compgen 命令

compgenbash 的内置命令,它将显示所有可用的命令,别名和函数。

# compgen -u
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
ftp
postfix
sshd
tcpdump
2gadmin
apache
zabbix
mysql
zend
rpc
2daygeek
named
mageshm

via: https://www.2daygeek.com/3-methods-to-list-all-the-users-in-linux-system/

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

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

探索如何将 Android Things 与 Tensorflow 集成起来,以及如何应用机器学习到物联网系统上。学习如何在装有 Android Things 的树莓派上使用 Tensorflow 进行图片分类。

这个项目探索了如何将机器学习应用到物联网上。具体来说,物联网平台我们将使用 Android Things,而机器学习引擎我们将使用 Google TensorFlow

现如今,Android Things 处于名为 Android Things 1.0 的稳定版本,已经可以用在生产系统中了。如你可能已经知道的,树莓派是一个可以支持 Android Things 1.0 做开发和原型设计的平台。本教程将使用 Android Things 1.0 和树莓派,当然,你可以无需修改代码就能换到其它所支持的平台上。这个教程是关于如何将机器学习应用到物联网的,这个物联网平台就是 Android Things Raspberry Pi。

物联网上的机器学习是最热门的话题之一。要给机器学习一个最简单的定义,可能就是 维基百科上的定义

机器学习是计算机科学中,让计算机不需要显式编程就能去“学习”(即,逐步提升在特定任务上的性能)使用数据的一个领域。

换句话说就是,经过训练之后,那怕是它没有针对它们进行特定的编程,这个系统也能够预测结果。另一方面,我们都知道物联网和联网设备的概念。其中前景最看好的领域之一就是如何在物联网上应用机器学习,构建专家系统,这样就能够去开发一个能够“学习”的系统。此外,还可以使用这些知识去控制和管理物理对象。在深入了解 Android Things 的细节之前,你应该先将其安装在你的设备上。如果你是第一次使用 Android Things,你可以阅读一下这篇如何在你的设备上安装 Android Things 的教程。

这里有几个应用机器学习和物联网产生重要价值的领域,以下仅提到了几个有趣的领域,它们是:

  • 在工业物联网(IIoT)中的预见性维护
  • 消费物联网中,机器学习可以让设备更智能,它通过调整使设备更适应我们的习惯

在本教程中,我们希望去探索如何使用 Android Things 和 TensorFlow 在物联网上应用机器学习。这个 Adnroid Things 物联网项目的基本想法是,探索如何去构建一个能够识别前方道路上基本形状(比如箭头)并控制其道路方向的无人驾驶汽车。我们已经介绍了 如何使用 Android Things 去构建一个无人驾驶汽车,因此,在开始这个项目之前,我们建议你去阅读那个教程。

这个机器学习和物联网项目包含如下的主题:

  • 如何使用 Docker 配置 TensorFlow 环境
  • 如何训练 TensorFlow 系统
  • 如何使用 Android Things 去集成 TensorFlow
  • 如何使用 TensorFlow 的成果去控制无人驾驶汽车

这个项目起源于 Android Things TensorFlow 图像分类器

我们开始吧!

如何使用 Tensorflow 图像识别

在开始之前,需要安装和配置 TensorFlow 环境。我不是机器学习方面的专家,因此,我需要找到一些快速而能用的东西,以便我们可以构建 TensorFlow 图像识别器。为此,我们使用 Docker 去运行一个 TensorFlow 镜像。以下是操作步骤:

1、 克隆 TensorFlow 仓库:

git clone https://github.com/tensorflow/tensorflow.git
cd /tensorflow
git checkout v1.5.0

2、 创建一个目录(/tf-data),它将用于保存这个项目中使用的所有文件。

3、 运行 Docker:

docker run -it \
--volume /tf-data:/tf-data \
--volume /tensorflow:/tensorflow \
--workdir /tensorflow tensorflow/tensorflow:1.5.0 bash

使用这个命令,我们运行一个交互式 TensorFlow 环境,可以挂载一些在使用项目期间使用的目录。

如何训练 TensorFlow 去识别图像

在 Android Things 系统能够识别图像之前,我们需要去训练 TensorFlow 引擎,以使它能够构建它的模型。为此,我们需要去收集一些图像。正如前面所言,我们需要使用箭头来控制 Android Things 无人驾驶汽车,因此,我们至少要收集四种类型的箭头:

  • 向上的箭头
  • 向下的箭头
  • 向左的箭头
  • 向右的箭头

为训练这个系统,需要使用这四类不同的图像去创建一个“知识库”。在 /tf-data 目录下创建一个名为 images 的目录,然后在它下面创建如下名字的四个子目录:

  • up-arrow
  • down-arrow
  • left-arrow
  • right-arrow

现在,我们去找图片。我使用的是 Google 图片搜索,你也可以使用其它的方法。为了简化图片下载过程,你可以安装一个 Chrome 下载插件,这样你只需要点击就可以下载选定的图片。别忘了多下载一些图片,这样训练效果更好,当然,这样创建模型的时间也会相应增加。

扩展阅读

打开浏览器,开始去查找四种箭头的图片:

TensorFlow image classifier

每个类别我下载了 80 张图片。不用管图片文件的扩展名。

为所有类别的图片做一次如下的操作(在 Docker 界面下):

python /tensorflow/examples/image_retraining/retrain.py \ 
--bottleneck_dir=tf_files/bottlenecks \
--how_many_training_steps=4000 \
--output_graph=/tf-data/retrained_graph.pb \
--output_labels=/tf-data/retrained_labels.txt \
--image_dir=/tf-data/images

这个过程你需要耐心等待,它需要花费很长时间。结束之后,你将在 /tf-data 目录下发现如下的两个文件:

  1. retrained_graph.pb
  2. retrained_labels.txt

第一个文件包含了 TensorFlow 训练过程产生的结果模型,而第二个文件包含了我们的四个图片类相关的标签。

如何测试 Tensorflow 模型

如果你想去测试这个模型,去验证它是否能按预期工作,你可以使用如下的命令:

python scripts.label_image \
--graph=/tf-data/retrained-graph.pb \
--image=/tf-data/images/[category]/[image_name.jpg]

优化模型

在 Android Things 项目中使用我们的 TensorFlow 模型之前,需要去优化它:

python /tensorflow/python/tools/optimize_for_inference.py \
--input=/tf-data/retrained_graph.pb \
--output=/tf-data/opt_graph.pb \
--input_names="Mul" \
--output_names="final_result"

那个就是我们全部的模型。我们将使用这个模型,把 TensorFlow 与 Android Things 集成到一起,在物联网或者更多任务上应用机器学习。目标是使用 Android Things 应用程序智能识别箭头图片,并反应到接下来的无人驾驶汽车的方向控制上。

如果你想去了解关于 TensorFlow 以及如何生成模型的更多细节,请查看官方文档以及这篇 教程

如何使用 Android Things 和 TensorFlow 在物联网上应用机器学习

TensorFlow 的数据模型准备就绪之后,我们继续下一步:如何将 Android Things 与 TensorFlow 集成到一起。为此,我们将这个任务分为两步来完成:

  1. 硬件部分,我们将把电机和其它部件连接到 Android Things 开发板上
  2. 实现这个应用程序

Android Things 示意图

在深入到如何连接外围部件之前,先列出在这个 Android Things 项目中使用到的组件清单:

  1. Android Things 开发板(树莓派 3)
  2. 树莓派摄像头
  3. 一个 LED 灯
  4. LN298N 双 H 桥电机驱动模块(连接控制电机)
  5. 一个带两个轮子的无人驾驶汽车底盘

我不再重复 如何使用 Android Things 去控制电机 了,因为在以前的文章中已经讲过了。

下面是示意图:

Integrating Android Things with IoT

上图中没有展示摄像头。最终成果如下图:

Integrating Android Things with TensorFlow

使用 TensorFlow 实现 Android Things 应用程序

最后一步是实现 Android Things 应用程序。为此,我们可以复用 Github 上名为 TensorFlow 图片分类器示例 的示例代码。开始之前,先克隆 Github 仓库,这样你就可以修改源代码。

这个 Android Things 应用程序与原始的应用程序是不一样的,因为:

  1. 它不使用按钮去开启摄像头图像捕获
  2. 它使用了不同的模型
  3. 它使用一个闪烁的 LED 灯来提示,摄像头将在 LED 停止闪烁后拍照
  4. 当 TensorFlow 检测到图像时(箭头)它将控制电机。此外,在第 3 步的循环开始之前,它将打开电机 5 秒钟。

为了让 LED 闪烁,使用如下的代码:

private Handler blinkingHandler = new Handler();
private Runnable blinkingLED = new Runnable() {
  @Override
  public void run() {
    try {
     // If the motor is running the app does not start the cam
     if (mc.getStatus())
       return ;

     Log.d(TAG, "Blinking..");
     mReadyLED.setValue(!mReadyLED.getValue());
     if (currentValue <= NUM_OF_TIMES) {
       currentValue++;
       blinkingHandler.postDelayed(blinkingLED, 
                       BLINKING_INTERVAL_MS);
     }
     else {
      mReadyLED.setValue(false);
      currentValue = 0;
      mBackgroundHandler.post(mBackgroundClickHandler);
     }
   } catch (IOException e) {
     e.printStackTrace();
   }
  }
};

当 LED 停止闪烁后,应用程序将捕获图片。

现在需要去关心如何根据检测到的图片去控制电机。修改这个方法:

@Override
public void onImageAvailable(ImageReader reader) {
  final Bitmap bitmap;
   try (Image image = reader.acquireNextImage()) {
     bitmap = mImagePreprocessor.preprocessImage(image);
   }

   final List<Classifier.Recognition> results = 
      mTensorFlowClassifier.doRecognize(bitmap);

   Log.d(TAG, 
    "Got the following results from Tensorflow: " + results);

   // Check the result
   if (results == null || results.size() == 0) {
     Log.d(TAG, "No command..");
     blinkingHandler.post(blinkingLED);
     return ;
    }

    Classifier.Recognition rec = results.get(0);
    Float confidence = rec.getConfidence();
    Log.d(TAG, "Confidence " + confidence.floatValue());

    if (confidence.floatValue() &lt; 0.55) {
     Log.d(TAG, "Confidence too low..");
     blinkingHandler.post(blinkingLED);
     return ;
    }

    String command = rec.getTitle();
    Log.d(TAG, "Command: " + rec.getTitle());

    if (command.indexOf("down") != -1)
       mc.backward();
    else if (command.indexOf("up") != -1)
       mc.forward();
    else if (command.indexOf("left") != -1)
       mc.turnLeft();
    else if (command.indexOf("right") != -1)
       mc.turnRight();
}

在这个方法中,当 TensorFlow 返回捕获的图片匹配到的可能的标签之后,应用程序将比较这个结果与可能的方向,并因此来控制电机。

最后,将去使用前面创建的模型了。拷贝 assets 文件夹下的 opt_graph.pbreatrained_labels.txt 去替换现在的文件。

打开 Helper.java 并修改如下的行:

public static final int IMAGE_SIZE = 299;
private static final int IMAGE_MEAN = 128;
private static final float IMAGE_STD = 128;
private static final String LABELS_FILE = "retrained_labels.txt";
public static final String MODEL_FILE = "file:///android_asset/opt_graph.pb";
public static final String INPUT_NAME = "Mul";
public static final String OUTPUT_OPERATION = "output";
public static final String OUTPUT_NAME = "final_result";

运行这个应用程序,并给摄像头展示几种箭头,以检查它的反应。无人驾驶汽车将根据展示的箭头进行移动。

总结

教程到此结束,我们讲解了如何使用 Android Things 和 TensorFlow 在物联网上应用机器学习。我们使用图片去控制无人驾驶汽车的移动。


via: https://www.survivingwithandroid.com/2018/03/apply-machine-learning-iot-using-android-things-tensorflow.html

作者:Francesco Azzola 译者:qhwdw 校对:wxy

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

经过半年的调研、学习和讨论,Linux 中国终于迎来了新的时代——通证化的开源社区阶段。根据我们掌握的信息,这可能是中国第一个公开发行通证的技术社区。

缘起

一直以来,开源社区存在难以找到可持续化发展道路、贡献与收获不对等、过分依赖于开源领袖的支持和付出、经济模式与开源文化难以平衡等问题。这也造成了国内外很多开源社区难以持续壮大,开源爱好者很少可以长期参与开源贡献的困境。Linux 中国建立也有 5 年多了,我们也一直在思考和追索这个问题的答案,而区块链所带来的通证经济的新模式,让我们眼前一亮,似乎这正是一个补上开源社区和开源生态的短板的解决方案。

去年以来,区块链及通证经济席卷全球,以一种势不可挡的形势冲击了人们对现在的经济、技术、组织形式的看法。这也为我们对社区进行通证化改造创造了良好的认知环境。

我们进行通证化改造的想法始于去年在上海举办的中国开源年会,当时在与国内的开源意见领袖们和区块链专业人士们的一场闭门会议上,谈到了开源社区、开源文化和区块链经济体系(那时还没有“通证”这个说法),我们感觉到开源和区块链正是天作之合,能够很好的解决开源社区和开源文化中的一些不足。

虽然我们很早就在关注区块链及数字货币相关的技术和动态,但是真正将区块链、通证与开源生态结合到一起来思考,还是首次。经过观察和思考,我们设计了几个模型,而最终我们决定删繁就简,以一个最小可行模型来启动 Linux 中国开源社区的通证化改造之路。

我们发行了一个总量为 1 亿枚的通证,名为 LCCN(Linux.Cn CoiN)。对这个通证我们不会进行 ICO,在可预见的未来也没有上交易所的计划。我们认为,如果说通证经济是一条逻辑上可行的经济模式,如果说开源社区能够通过通证经济达成自洽,那么,我们做的这种通证化改造就是有意义的,其自然会体现出自身的经济价值,而无需通过杠杆、金融手法等方式营造虚假的经济流动。

我们希望,Linux 中国的这个通证化改造之路,无论将来的事实会证明是正确还是错误,这期间得到的经验、教训,积累的工具链,都可以分享给其它开源社区。我们希望,每个开源社区都可以成长为一个可以经济自足、社区自治、价值独特的一个“城邦”;让各个开源社区像雨后春笋般成长为不同的“城邦”,它们之间可以进行经济合作、价值互补、风险分担,从而构建出一个开源的大同世界。

通证经济的模式设计是最重要的,因此,我们舍弃了先建立自主公链的想法,而是以以太坊为依托,在其上发行和流通 LCCN。考虑到开源生态和开源社区的复杂性,我们简化了最初设计的复合模式,抓住核心矛盾,先发行一种单一价值载体的通证,以此为基础来承载、传输社区贡献,以合理的方式激励开源贡献者。

发行计划

LCCN 总量 1 亿枚,其中 3 千万枚用于通证化改造,另外 7 千万枚用于将来的流通释出:每年释出剩余总量的 10% 。

这 3 千万枚 LCCN 中,其中约计 1 千万枚用于奖励 Linux 中国旗下最重要的贡献者组织 LCTT 的成员,根据 LCTT 成员这 5 年来的贡献量,采用一个相对科学的统计方式授予各个贡献者不等的 LCCN。另外 1 千万枚保留给技术团队成员、管理团队成员持有;最后 1 千万枚由 Linux 中国开源基金会持有,以维护通证价值和确保管理权。

除了 LCTT 贡献者之外,社区核心成员、社区积极分子和广泛的开源爱好者,均可以得到不同份额的 LCCN 授予。我们也会拨出部分份额来进行社区空投,并联合“陀螺财经”进行糖果空投,以扩大影响面。

模式设计

LCCN 并无实物价值对照,它用来将点点滴滴的贡献者的贡献汇聚起来,并以此为凭证沟通社区所反映出来的现实价值,如社区管理权、经济收益等。

通证的价值在于流通,流通就需要有生产、有增值、有消费。

生产渠道。我们采用“贡献即挖矿”的理念,依据不同的贡献行为,分别给贡献者奖励不等的 LCCN。除了显然的如代码贡献、翻译贡献、文档贡献,一些隐性的行为,如阅读文章、分享文章、参与线下活动等也被视为贡献行为。但是对贡献行为的量化工作,我们会逐步进行,在当前阶段,率先识别并奖励的贡献行为就是 LCTT 贡献

增值渠道,我们会通过合作伙伴,为持有 LCCN 的成员不定期分发各种福利,如合作伙伴空投的通证、合作伙伴的通证兑换等。

消费渠道,我们为 LCCN 的使用提供了几个出口:

  • 合作伙伴资源兑换。如,LCCN 可用于兑换我们的重要合作伙伴的相应服务和商品(排名不分先后,细则容后公布):

    • IT 类专业图书品牌社区「人民邮电出版社异步社区」:可兑换 IT 类书籍
    • IT 类专业培训机构「马哥教育」:可兑换高端 Linux 云计算和 Python+AI 就业培训课程
    • Linux 专业认证培训机构「Linux 就该这么学」:可兑换 RHCE 认证培训课程及该书籍
    • 数据库专业培训机构「知数堂」:可兑换 Oracle、MySQL DBA 培训课程
    • 互联网技术人才内推专家「人才链 TalentChain」:可兑换知名企业的快速内推机会
    • (更多合作伙伴在持续支持中……)
  • 独有资源兑换。如,可用于兑换 Linux 中国本站所拥有的媒介资源(主站、微信、微博等),发布符合社区定位的广告和宣传。
  • 通用资源兑换。如,可用于兑换各类云服务资源、书籍和电子书、兑换码等。
  • Linux 中国社区通证孵化项目。如,我们正在内部孵化一个基于区块链的项目(非常值得期待),LCCN 可作为通用通证在这些项目中使用流通。
  • 社区赎回。对于需要将持有的通证兑换为现金的,我们会根据社区营收情况,不定期的按比例投放赎回凭证,凭此凭证可赎回对应份额。

通过这样的设计,我们可以有效地促进 LCCN 的流通,从而激励社区的开源生态发展,让开源贡献者有所贡献、有所回报,与社区共同成长,分享社区的成功,最终避免商业利益对开源生态的剥削和压制。

起航

我们的通证化实验之路才刚刚开始,而通证经济也处于极早期的野蛮生长阶段,这期间或许我们会遇到很多困难,也可能会走入歧途,但是我们坚信,我们以无私的贡献者心态,以推动社会进步为宏伟目标,即便是失败,也可以为后来者,为开源文化、开源技术提供有益的经验和帮助。

最后,邀请大家一起来参与和建设通证化的开源社区!

一个使管理服务器和网络更轻松的 Linux 工具和命令的参考列表。

如果你是一位系统管理员,那么你的日常工作应该包括管理服务器和数据中心的网络。以下的 Linux 实用工具和命令 —— 从基础的到高级的 —— 将帮你更轻松地管理你的网络。

在几个命令中,你将会看到 <fqdn>,它是“完全合格域名”的全称。当你看到它时,你应该用你的网站 URL 或你的服务器来代替它(比如,server-name.company.com),具体要视情况而定。

Ping

正如它的名字所表示的那样,ping 是用于去检查从你的系统到你想去连接的系统之间端到端的连通性。当一个 ping 成功时,它使用的 ICMP 的 echo 包将会返回到你的系统中。它是检查系统/网络连通性的一个良好开端。你可以在 IPv4 和 IPv6 地址上使用 ping 命令。(阅读我的文章 "如何在 Linux 系统上找到你的 IP 地址" 去学习更多关于 IP 地址的知识)

语法:

  • IPv4: ping <ip address>/<fqdn>
  • IPv6: ping6 <ip address>/<fqdn>

你也可以使用 ping 去解析出网站所对应的 IP 地址,如下图所示:

Traceroute

ping 是用于检查端到端的连通性,traceroute 实用工具将告诉你到达对端系统、网站,或服务器所经过的路径上所有路由器的 IP 地址。traceroute 在网络连接调试中经常用于在 ping 之后的第二步。

这是一个跟踪从你的系统到其它对端的全部网络路径的非常好的工具。在检查端到端的连通性时,这个实用工具将告诉你到达对端系统、网站、或服务器上所经历的路径上的全部路由器的 IP 地址。通常用于网络连通性调试的第二步。

语法:

  • traceroute <ip address>/<fqdn>

Telnet

语法:

  • telnet <ip address>/<fqdn> 是用于 telnet 进入任何支持该协议的服务器。

Netstat

这个网络统计(netstat)实用工具是用于去分析解决网络连接问题和检查接口/端口统计数据、路由表、协议状态等等的。它是任何管理员都应该必须掌握的工具。

语法:

  • netstat -l 显示所有处于监听状态的端口列表。
  • netstat -a 显示所有端口;如果去指定仅显示 TCP 端口,使用 -at(指定信显示 UDP 端口,使用 -au)。
  • netstat -r 显示路由表。

  • netstat -s 显示每个协议的状态总结。

  • netstat -i 显示每个接口传输/接收(TX/RX)包的统计数据。

Nmcli

nmcli 是一个管理网络连接、配置等工作的非常好的实用工具。它能够去管理网络管理程序和修改任何设备的网络配置详情。

语法:

  • nmcli device 列出网络上的所有设备。
  • nmcli device show <interface> 显示指定接口的网络相关的详细情况。
  • nmcli connection 检查设备的连接情况。
  • nmcli connection down <interface> 关闭指定接口。
  • nmcli connection up <interface> 打开指定接口。
  • nmcli con add type vlan con-name <connection-name> dev <interface> id <vlan-number> ipv4 <ip/cidr> gw4 <gateway-ip> 在特定的接口上使用指定的 VLAN 号添加一个虚拟局域网(VLAN)接口、IP 地址、和网关。

路由

检查和配置路由的命令很多。下面是其中一些比较有用的:

语法:

  • ip route 显示各自接口上所有当前的路由配置。

  • route add default gw <gateway-ip> 在路由表中添加一个默认的网关。
  • route add -net <network ip/cidr> gw <gateway ip> <interface> 在路由表中添加一个新的网络路由。还有许多其它的路由参数,比如,添加一个默认路由,默认网关等等。
  • route del -net <network ip/cidr> 从路由表中删除一个指定的路由条目。

  • ip neighbor 显示当前的邻接表和用于去添加、改变、或删除新的邻居。

  • arp (它的全称是 “地址解析协议”)类似于 ip neighborarp 映射一个系统的 IP 地址到它相应的 MAC(介质访问控制)地址。

Tcpdump 和 Wireshark

Linux 提供了许多包捕获工具,比如 tcpdumpwiresharktshark 等等。它们被用于去捕获传输/接收的网络流量中的数据包,因此它们对于系统管理员去诊断丢包或相关问题时非常有用。对于热衷于命令行操作的人来说,tcpdump 是一个非常好的工具,而对于喜欢 GUI 操作的用户来说,wireshark 是捕获和分析数据包的不二选择。tcpdump 是一个 Linux 内置的用于去捕获网络流量的实用工具。它能够用于去捕获/显示特定端口、协议等上的流量。

语法:

  • tcpdump -i <interface-name> 显示指定接口上实时通过的数据包。通过在命令中添加一个 -w 标志和输出文件的名字,可以将数据包保存到一个文件中。例如:tcpdump -w <output-file.> -i <interface-name>

  • tcpdump -i <interface> src <source-ip> 从指定的源 IP 地址上捕获数据包。
  • tcpdump -i <interface> dst <destination-ip> 从指定的目标 IP 地址上捕获数据包。
  • tcpdump -i <interface> port <port-number> 从一个指定的端口号(比如,53、80、8080 等等)上捕获数据包。
  • tcpdump -i <interface> <protocol> 捕获指定协议的数据包,比如:TCP、UDP、等等。

Iptables

iptables 是一个包过滤防火墙工具,它能够允许或阻止某些流量。这个实用工具的应用范围非常广泛;下面是它的其中一些最常用的使用命令。

语法:

  • iptables -L 列出所有已存在的 iptables 规则。
  • iptables -F 删除所有已存在的规则。

下列命令允许流量从指定端口到指定接口:

  • iptables -A INPUT -i <interface> -p tcp –dport <port-number> -m state –state NEW,ESTABLISHED -j ACCEPT
  • iptables -A OUTPUT -o <interface> -p tcp -sport <port-number> -m state – state ESTABLISHED -j ACCEPT

下列命令允许 环回 loopback 接口访问系统:

  • iptables -A INPUT -i lo -j ACCEPT
  • iptables -A OUTPUT -o lo -j ACCEPT

Nslookup

nslookup 工具是用于去获得一个网站或域名所映射的 IP 地址。它也能用于去获得你的 DNS 服务器的信息,比如,一个网站的所有 DNS 记录(具体看下面的示例)。与 nslookup 类似的一个工具是 dig(Domain Information Groper)实用工具。

语法:

  • nslookup <website-name.com> 显示你的服务器组中 DNS 服务器的 IP 地址,它后面就是你想去访问网站的 IP 地址。
  • nslookup -type=any <website-name.com> 显示指定网站/域中所有可用记录。

网络/接口调试

下面是用于接口连通性或相关网络问题调试所需的命令和文件的汇总。

语法:

  • ss 是一个转储套接字统计数据的实用工具。
  • nmap <ip-address>,它的全称是 “Network Mapper”,它用于扫描网络端口、发现主机、检测 MAC 地址,等等。
  • ip addr/ifconfig -a 提供一个系统上所有接口的 IP 地址和相关信息。
  • ssh -vvv user@<ip/domain> 允许你使用指定的 IP/域名和用户名通过 SSH 协议登入到其它服务器。-vvv 标志提供 SSH 登入到服务器过程中的 "最详细的" 信息。
  • ethtool -S <interface> 检查指定接口上的统计数据。
  • ifup <interface> 启动指定的接口。
  • ifdown <interface> 关闭指定的接口
  • systemctl restart network 重启动系统上的一个网络服务。
  • /etc/sysconfig/network-scripts/<interface-name> 是一个对指定的接口设置 IP 地址、网络、网关等等的接口配置文件。DHCP 模式也可以在这里设置。
  • /etc/hosts 这个文件包含自定义的主机/域名到 IP 地址的映射。
  • /etc/resolv.conf 指定系统上的 DNS 服务器的 IP 地址。
  • /etc/ntp.conf 指定 NTP 服务器域名。

via: https://opensource.com/article/18/7/sysadmin-guide-networking-commands

作者:Archit Modi 选题:lujun9972 译者:qhwdw 校对:wxy

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