mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-22 23:00:57 +08:00
commit
bfcb597680
@ -1,31 +1,37 @@
|
||||
如何记录有关 Linux 机器正常运行时间的统计信息
|
||||
如何记录 Linux 的系统运行时间的统计信息
|
||||
=====
|
||||
|
||||
Linux/Unix 系统管理员对服务器正常运行时间有一种奇怪的痴迷。这有一个关于这个主题的 xkcd 漫画,一个好的系统管理员是一股不可阻挡的力量,它站在黑暗势力和你的猫博客服务器之间。(这句话实在理解不了。)
|
||||
Linux/Unix 系统管理员对服务器的系统运行时间有一种奇怪的痴迷。这里有一个关于这个主题的 xkcd 漫画,一个好的系统管理员是一股不可阻挡的力量,他伫立在你家猫咪博客的服务器之前,对抗黑暗势力。
|
||||
|
||||
[![Fig.01: Devotion to Duty https://xkcd.com/705/][1]][1]
|
||||
|
||||
我们可以使用 uptime 命令或 [w 命令][2] 或 top 命令来判断 Linux 系统运行了多久。我可以[获得系统的历史和统计运行时间的报告][3],使用 tuptime 工具将其保持在重新启动之间。
|
||||
我们可以使用 `uptime` 命令或 [w 命令][2] 或 `top` 命令来判断 Linux 系统运行了多久。我可以使用 `tuptime` 工具保留每次重新启动的运行时间,以[获得系统运行时间的历史和统计报告][3]。
|
||||
|
||||
就像 uptime 命令一样,但输出结果更令人印象深刻。最近我发现了另一种称为 uptimed 的工具,用于记录关于机器正常运行时间和统计信息。让我们看看如何使用 Linux 操作系统上的 uptimed 和 uprecords 来获得正常运行时间的记录统计信息。
|
||||
这就像 `uptime` 命令一样,但输出结果更令人印象深刻。最近我发现了另一种称为 `uptimed` 的工具,用于记录关于机器的系统运行时间和统计信息。让我们看看如何使用 Linux 操作系统上的 `uptimed` 和 `uprecords` 来获得运行时间的记录统计信息。
|
||||
|
||||
查找系统运行时间非常简单,只需在基于 Linux 的系统上键入以下命令即可:
|
||||
|
||||
查找正常运行时间非常简单,只需在基于 Linux 的系统上键入以下命令即可:
|
||||
```
|
||||
$ **uptime -p**
|
||||
$ uptime -p
|
||||
up 2 weeks, 4 days, 7 hours, 28 minutes
|
||||
```
|
||||
|
||||
要保留有关 uptime 的历史统计信息,请使用 [tuptime][3] 或 uptime 工具。
|
||||
要保留有关 `uptime` 的历史统计信息,请使用 [tuptime][3] 或 `uptimed` 工具。
|
||||
|
||||
## 安装 uptimed
|
||||
### 安装 uptimed
|
||||
|
||||
安装 uptimed 的最简单的方式是通过你的软件包管理器,比如 apt/apt-get/yum,这些你的 Linux 发行版的朋友。
|
||||
安装 `uptimed` 的最简单的方式是通过你的软件包管理器,比如 apt/apt-get/yum 这些你的 Linux 发行版的朋友。
|
||||
|
||||
### 在 Debian/Ubuntu Linux 上安装 uptimed
|
||||
#### 在 Debian/Ubuntu Linux 上安装 uptimed
|
||||
|
||||
键入以下 [apt 命令][4]/[apt-get 命令][5]:
|
||||
|
||||
```
|
||||
$ sudo apt-get install uptimed
|
||||
```
|
||||
|
||||
键入以下 [apt 命令][4]/[apt-get 命令][5]:
|
||||
`$ sudo apt-get install uptimed`
|
||||
示例输出:
|
||||
|
||||
```
|
||||
Reading package lists... Done
|
||||
Building dependency tree
|
||||
@ -59,13 +65,22 @@ Processing triggers for systemd (229-4ubuntu21) ...
|
||||
Processing triggers for ureadahead (0.100.0-19) ...
|
||||
```
|
||||
|
||||
### 在 CentOS/RHEL/Fedora/Oracle/Scientific Linux 上安装 uptimed
|
||||
#### 在 CentOS/RHEL/Fedora/Oracle/Scientific Linux 上安装 uptimed
|
||||
|
||||
首先 [在 CentOS/RHEL 使用 EPEL 仓库][6]:
|
||||
|
||||
```
|
||||
$ sudo yum -y install epel-release
|
||||
```
|
||||
|
||||
然后,键入以下 [yum 命令][7]:
|
||||
|
||||
```
|
||||
$ sudo yum install uptimed
|
||||
```
|
||||
|
||||
首先 [在 CentOS/RHEL 使用 EPEL repo][6]:
|
||||
`$ sudo yum -y install epel-release`
|
||||
然后,键入以下 [yum 命令][7]:
|
||||
`$ sudo yum install uptimed`
|
||||
示例输出:
|
||||
|
||||
```
|
||||
Loaded plugins: fastestmirror
|
||||
Loading mirror speeds from cached hostfile
|
||||
@ -108,33 +123,51 @@ Installed:
|
||||
Complete!
|
||||
```
|
||||
|
||||
如果你正在使用 **Fedora Linux**,运行以下 dnf 命令:
|
||||
`$ sudo dnf install uptimed`
|
||||
如果你正在使用 Fedora Linux,运行以下 `dnf` 命令:
|
||||
|
||||
### 在 Arch Linux 上安装 uptimed
|
||||
```
|
||||
$ sudo dnf install uptimed
|
||||
```
|
||||
|
||||
键入以下 pacman 命令:
|
||||
`$ sudo pacman -S uptimed`
|
||||
#### 在 Arch Linux 上安装 uptimed
|
||||
|
||||
### 在 Gentoo Linux 上安装 uptimed
|
||||
键入以下 `pacman` 命令:
|
||||
|
||||
键入以下 emerge 命令:
|
||||
`$ sudo emerge --ask uptimed`
|
||||
```
|
||||
$ sudo pacman -S uptimed
|
||||
```
|
||||
|
||||
## 如何配置 uptimed
|
||||
#### 在 Gentoo Linux 上安装 uptimed
|
||||
|
||||
键入以下 `emerge` 命令:
|
||||
|
||||
```
|
||||
$ sudo emerge --ask uptimed
|
||||
```
|
||||
|
||||
### 如何配置 uptimed
|
||||
|
||||
使用文本编辑器编辑 `/etc/uptimed.conf` 文件,例如 `vim` 命令:
|
||||
|
||||
```
|
||||
$ sudo vim /etc/uptimed.conf
|
||||
```
|
||||
|
||||
最少设置一个 email 地址来发送记录。假定有个兼容 sendmail 的 MTA 安装在 `/usr/lib/sendmail`。
|
||||
|
||||
使用文本编辑器编辑 /etc/uptimed.conf 文件,例如 vim 命令:
|
||||
`$ sudo vim /etc/uptimed.conf`
|
||||
最少设置一个 email 地址来发送记录。假定发送邮件兼容 MTA。
|
||||
```
|
||||
EMAIL=vivek@server1.cyberciti.biz
|
||||
```
|
||||
|
||||
保存并关闭文件。
|
||||
|
||||
### 如何在系统启动时启动 uptimed 服务?
|
||||
|
||||
使用 systemctl 命令启动 uptimed 服务:
|
||||
`$ sudo systemctl enable uptimed`
|
||||
使用 `systemctl` 命令启动 `uptimed` 服务:
|
||||
|
||||
```
|
||||
$ sudo systemctl enable uptimed
|
||||
```
|
||||
|
||||
### 我该如何 启动/停止/重启 或者查看 uptimed 服务的状态?
|
||||
|
||||
@ -144,7 +177,9 @@ $ sudo systemctl stop uptimed ## stop it ##
|
||||
$ sudo systemctl restart uptimed ## restart it ##
|
||||
$ sudo systemctl status uptimed ## view status ##
|
||||
```
|
||||
|
||||
示例输出:
|
||||
|
||||
```
|
||||
● uptimed.service - uptime record daemon
|
||||
Loaded: loaded (/lib/systemd/system/uptimed.service; enabled; vendor preset: enabled)
|
||||
@ -156,21 +191,26 @@ $ sudo systemctl status uptimed ## view status ##
|
||||
Nov 09 17:49:14 gfs04 systemd[1]: Started uptime record daemon.
|
||||
```
|
||||
|
||||
## 如何查看 uptime 记录
|
||||
### 如何查看 uptime 记录
|
||||
|
||||
只需键入以下命令即可查看 `uptimed(8)` 程序的统计信息:
|
||||
|
||||
只需键入以下命令即可查看 uptimed(8) 程序的统计信息:
|
||||
```
|
||||
$ uprecords
|
||||
```
|
||||
|
||||
示例输出:
|
||||
|
||||
[![Fig.02: uprecords in action][9]][9]
|
||||
|
||||
uprecords 有一些选项:
|
||||
`uprecords` 有一些选项:
|
||||
|
||||
```
|
||||
$ uprecords -?
|
||||
```
|
||||
|
||||
示例输出:
|
||||
|
||||
```
|
||||
usage: uprecords [OPTION]...
|
||||
|
||||
@ -191,9 +231,9 @@ usage: uprecords [OPTION]...
|
||||
-v version information
|
||||
```
|
||||
|
||||
## 结论
|
||||
### 结论
|
||||
|
||||
这是一个极好的小工具,可以显示服务器正常运行时间的记录,以证明机器正常运行时间和你的业务连续性。在相关说明中,你将获得官方的 [XKCD 系统管理员 T恤][10] 因为漫画被制作成衬衫,其中包括背面的新插图。
|
||||
这是一个极好的小工具,可以显示服务器正常运行时间的记录,以证明机器正常运行时间和你的业务连续性。在相关说明中,你可以看到官方的 [XKCD 系统管理员 T恤][10] 因为漫画被制作成衬衫,其中包括背面的新插图。
|
||||
|
||||
[![Fig.03: Sysadmin XKCD shirt features the original comic on the front and a new illustration on the back.][11]][11]
|
||||
|
||||
@ -201,9 +241,9 @@ usage: uprecords [OPTION]...
|
||||
|
||||
via: https://www.cyberciti.biz/hardware/see-records-statistics-about-a-linux-servers-uptime/
|
||||
|
||||
作者:[][a]
|
||||
作者:[Vivek Gite][a]
|
||||
译者:[MjSeven](https://github.com/MjSeven)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -3,125 +3,140 @@ Oh My Fish! 让你的 Shell 漂亮起来
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2017/12/oh-my-fish-720x340.jpg)
|
||||
|
||||
几天前,我们讨论了如何 [**安装** **Fish shell**][1],一个健壮的,完全可用的 shell,带有许多很酷的功能,如自动建议,内置搜索功能,语法高亮显示,基于 web 配置等等。今天,我们将讨论如何使用 **Oh My Fish** (简称 **omf** ) 让我们的 Fish shell 变得漂亮且优雅。它是一个 Fishshell 框架,允许你安装扩展或更改 shell 外观的软件包。它简单易用,快速可扩展。使用 omf,你可以根据你的想法,很容易地安装主题,丰富你的外观和安装插件来调整你的 fish shell。
|
||||
几天前,我们讨论了如何[安装 Fish shell][1],这是一个健壮的、完全可用的 shell,带有许多很酷的功能,如自动建议、内置搜索功能、语法高亮显示、基于 web 配置等等。今天,我们将讨论如何使用 Oh My Fish (简称 `omf` ) 让我们的 Fish shell 变得漂亮且优雅。它是一个 Fishshell 框架,允许你安装扩展或更改你的 shell 外观的软件包。它简单易用,快速可扩展。使用 `omf`,你可以根据你的想法,很容易地安装主题,丰富你的外观和安装插件来调整你的 Fish shell。
|
||||
|
||||
#### 安装 Oh My Fish
|
||||
### 安装 Oh My Fish
|
||||
|
||||
安装 omf 很简单。你要做的只是在你的 Fish shell 中运行下面的命令。
|
||||
|
||||
安装 omf 很简单。你要做的只是在你的 fish shell 中运行下面的命令。
|
||||
```
|
||||
curl -L https://get.oh-my.fish | fish
|
||||
```
|
||||
|
||||
![][3]
|
||||
|
||||
一旦安装完成,你将看到提示已经自动更改,如上图所所示。另外,你会注意到当前时间在 shell 窗口的右边。
|
||||
一旦安装完成,你将看到提示符已经自动更改,如上图所所示。另外,你会注意到当前时间在 shell 窗口的右边。
|
||||
|
||||
就是这样。让我们继续并调整我们的 fish shell。
|
||||
|
||||
#### 现在,让我们将 Fish Shell 变漂亮
|
||||
### 现在,让我们将 Fish Shell 变漂亮
|
||||
|
||||
列出所有的安装包,运行:
|
||||
|
||||
```
|
||||
omf list
|
||||
```
|
||||
|
||||
这条命令将显示已安装的主题和插件。请注意,包可以是主题或插件。安装包意味着安装主题和插件。
|
||||
|
||||
所有官方和社区支持的包(包括插件和主题)都托管在 [**Omf 主仓库**][4] 中。在这个主仓库中,你可以看到大量的仓库,其中包含大量的插件和主题。
|
||||
所有官方和社区支持的包(包括插件和主题)都托管在 [Omf 主仓库][4] 中。在这个主仓库中,你可以看到大量的仓库,其中包含大量的插件和主题。
|
||||
|
||||
现在让我们看一下可用的和已安装的主题列表。为此,运行:
|
||||
|
||||
```
|
||||
omf theme
|
||||
```
|
||||
|
||||
![][5]
|
||||
|
||||
如你所见,我们只有一个已安装的主题,这是默认的,但是还有大量可用的主题。在安装之前,你在[**这里**][6]可以预览所有可用的主题。这个页面包含了所有的主题细节,特性,每个主题的截图示例,以及哪个主题适合谁。
|
||||
如你所见,我们只有一个已安装的主题,这是默认的,但是还有大量可用的主题。在安装之前,你在[这里][6]可以预览所有可用的主题。这个页面包含了所有的主题细节,特性,每个主题的截图示例,以及哪个主题适合谁。
|
||||
|
||||
**安装一个新主题**
|
||||
#### 安装一个新主题
|
||||
|
||||
请允许我安装一个主题,例如 clearance 主题,这是一个极简的 fish shell 主题,供那些经常使用 `git` 的人使用。为此,运行:
|
||||
|
||||
请允许我安装一个主题,例如 **clearance theme - **一个极简的 fish shell 主题,供那些经常使用 git 的人使用。为此,运行:
|
||||
```
|
||||
omf install clearance
|
||||
```
|
||||
|
||||
![][7]
|
||||
|
||||
如上图所示,在安装新主题后,fish 的提示立即发生了变化。
|
||||
如上图所示,在安装新主题后,Fish shell 的提示立即发生了变化。
|
||||
|
||||
让我浏览一下系统文件,看看它如何显示。
|
||||
|
||||
![][8]
|
||||
|
||||
看起来不坏!这是一个非常简单的主题。它将当前工作目录,文件夹和文件以不同的颜色区分开来。你可能会注意到,它还会在提示符的顶部显示当前工作目录。现在,**clearance** 是我的默认主题。
|
||||
看起来不错!这是一个非常简单的主题。它将当前工作目录,文件夹和文件以不同的颜色区分开来。你可能会注意到,它还会在提示符的顶部显示当前工作目录。现在,clearance 是我的默认主题。
|
||||
|
||||
**改变主题**
|
||||
#### 改变主题
|
||||
|
||||
就像我之前说的一样,这个主题在安装后被立即应用。如果你有多个主题,你可以使用以下命令切换到另一个不同的主题:
|
||||
|
||||
```
|
||||
omf theme <theme-name>
|
||||
```
|
||||
|
||||
例如:
|
||||
|
||||
```
|
||||
omf theme agnoster
|
||||
```
|
||||
|
||||
现在我正在使用 "agnoster" 主题。 agnoster 就是这样改变了我 shell 的外观。
|
||||
现在我正在使用 agnoster 主题。 agnoster 就是这样改变了我 shell 的外观。
|
||||
|
||||
![][9]
|
||||
|
||||
**安装插件**
|
||||
#### 安装插件
|
||||
|
||||
例如,我想安装一个天气插件。为此,只要运行:
|
||||
|
||||
例如,我想安装一个天气插件。为此,,只要运行:
|
||||
```
|
||||
omf install weather
|
||||
```
|
||||
|
||||
天气插件依赖于 [jq][10](LCTT 译注:jq 是一个轻量级且灵活的命令行JSON处理器)。所以,你可能也需要安装 jq。它通常在 Linux 发行版的默认仓库中存在。因此,你可以使用默认的包管理器来安装它。例如,以下命令将在 Arch Linux 及其衍生版中安装 jq。
|
||||
天气插件依赖于 [jq][10](LCTT 译注:jq 是一个轻量级且灵活的命令行JSON处理器)。所以,你可能也需要安装 `jq`。它通常在 Linux 发行版的默认仓库中存在。因此,你可以使用默认的包管理器来安装它。例如,以下命令将在 Arch Linux 及其衍生版中安装 `jq`。
|
||||
|
||||
```
|
||||
sudo pacman -S jq
|
||||
```
|
||||
|
||||
现在,在 fish shell 中使用以下命令查看天气:
|
||||
现在,在 Fish shell 中使用以下命令查看天气:
|
||||
|
||||
```
|
||||
weather
|
||||
```
|
||||
|
||||
![][11]
|
||||
|
||||
**寻找包**
|
||||
#### 寻找包
|
||||
|
||||
要搜索主题或插件,请执行以下操作:
|
||||
|
||||
```
|
||||
omf search <search_string>
|
||||
```
|
||||
|
||||
例如:
|
||||
|
||||
```
|
||||
omf search nvm
|
||||
```
|
||||
|
||||
为了限制搜索的主题范围,使用 **-t** 选项。
|
||||
为了限制搜索的主题范围,使用 `-t` 选项。
|
||||
|
||||
```
|
||||
omf search -t chain
|
||||
omf search -t chain
|
||||
```
|
||||
|
||||
这条命令只会搜索主题名字中包含 "chain" 的主题。
|
||||
这条命令只会搜索主题名字中包含 “chain” 的主题。
|
||||
|
||||
为了限制搜索的插件范围,使用 `-p` 选项。
|
||||
|
||||
为了限制搜索的插件范围,使用 **-p** 选项。
|
||||
```
|
||||
omf search -p emacs
|
||||
omf search -p emacs
|
||||
```
|
||||
|
||||
**更新包**
|
||||
#### 更新包
|
||||
|
||||
要仅更新核心功能(`omf` 本身),运行:
|
||||
|
||||
要仅更新核心功能(omf 本身),运行:
|
||||
```
|
||||
omf update omf
|
||||
```
|
||||
|
||||
如果是最新的,你会看到以下输出:
|
||||
|
||||
```
|
||||
Oh My Fish is up to date.
|
||||
You are now using Oh My Fish version 6.
|
||||
@ -129,23 +144,27 @@ Updating https://github.com/oh-my-fish/packages-main master... Done!
|
||||
```
|
||||
|
||||
更新所有包:
|
||||
|
||||
```
|
||||
omf update
|
||||
```
|
||||
|
||||
要有选择地更新软件包,只需包含如下所示的包名称:
|
||||
|
||||
```
|
||||
omf update clearance agnoster
|
||||
```
|
||||
|
||||
**显示关于包的信息**
|
||||
#### 显示关于包的信息
|
||||
|
||||
当你想知道关于一个主题或插件的信息时,使用以下命令:
|
||||
|
||||
```
|
||||
omf describe clearance
|
||||
```
|
||||
|
||||
这条命令将显示关于包的信息。
|
||||
|
||||
```
|
||||
Package: clearance
|
||||
Description: A minimalist fish shell theme for people who use git
|
||||
@ -153,78 +172,89 @@ Repository: https://github.com/oh-my-fish/theme-clearance
|
||||
Maintainer:
|
||||
```
|
||||
|
||||
**移除包**
|
||||
#### 移除包
|
||||
|
||||
移除一个包,例如 emacs,运行:
|
||||
|
||||
```
|
||||
omf remove emacs
|
||||
```
|
||||
|
||||
**管理仓库**
|
||||
#### 管理仓库
|
||||
|
||||
默认情况下,当你安装了 Oh My Fish 时,会自动添加官方仓库。这个仓库包含了开发人员构建的所有包。要管理用户安装的仓库包,使用这条命令:
|
||||
|
||||
```
|
||||
omf repositories [list|add|remove]
|
||||
```
|
||||
|
||||
列出所有安装的仓库,运行:
|
||||
|
||||
```
|
||||
omf repositories list
|
||||
```
|
||||
|
||||
添加一个仓库:
|
||||
|
||||
```
|
||||
omf repositories add <URL>
|
||||
```
|
||||
|
||||
例如:
|
||||
|
||||
```
|
||||
omf repositories add https://github.com/ostechnix/theme-sk
|
||||
```
|
||||
|
||||
移除一个仓库:
|
||||
|
||||
```
|
||||
omf repositories remove <repository-name>
|
||||
```
|
||||
|
||||
**Troubleshooting Oh My Fish**
|
||||
#### Oh My Fish 排错
|
||||
|
||||
如果出现了错误,`omf` 足够聪明来帮助你,它可以列出解决问题的方法。例如,我安装了 clearance 包,得到了文件冲突的错误。幸运的是,在继续之前,Oh My Fish 会指示我该怎么做。因此,我只是简单地运行了以下代码来了解如何修正错误。
|
||||
|
||||
如果出现了错误,omf 足够聪明来帮助你,它可以列出解决问题的方法。例如,我删除并安装了 clearance 包(这句不太理解,希望校正者注意),得到了文件冲突的错误。幸运的是,在继续之前,Oh My Fish 会指示我该怎么做。因此,我只是简单地运行了以下代码来了解如何修正错误。
|
||||
```
|
||||
omf doctor
|
||||
```
|
||||
|
||||
通过运行以下命令来解决错误:
|
||||
|
||||
```
|
||||
rm ~/.config/fish/functions/fish_prompt.fish
|
||||
```
|
||||
|
||||
![][12]
|
||||
|
||||
无论你何时遇到问题,只要运行 'omf doctor' 命令,并尝试所有的建议方法。
|
||||
无论你何时遇到问题,只要运行 `omf doctor` 命令,并尝试所有的建议方法。
|
||||
|
||||
**获取帮助**
|
||||
#### 获取帮助
|
||||
|
||||
显示帮助部分,运行:
|
||||
|
||||
```
|
||||
omf -h
|
||||
```
|
||||
|
||||
或者
|
||||
|
||||
```
|
||||
omf --help
|
||||
```
|
||||
|
||||
**卸载 Oh My Fish**
|
||||
#### 卸载 Oh My Fish
|
||||
|
||||
卸载 Oh My Fish,运行以下命令:
|
||||
|
||||
```
|
||||
omf destroy
|
||||
```
|
||||
|
||||
继续前进,开始自定义你的 fish shell。获取更多细节,请参考项目的 GitHub 页面。
|
||||
|
||||
这就是全部了。我很快将会在这里开始另一个有趣的指导。在此之前,请继续关注 OSTechNix!
|
||||
这就是全部了。我很快将会在这里开始另一个有趣的指导。在此之前,请继续关注我们!
|
||||
|
||||
干杯!
|
||||
|
||||
@ -233,8 +263,8 @@ omf destroy
|
||||
via: https://www.ostechnix.com/oh-fish-make-shell-beautiful/
|
||||
|
||||
作者:[SK][a]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[MjSeven](https://github.com/MjSeven)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -1,28 +1,33 @@
|
||||
如何使用 CGI 脚本生成网页
|
||||
======
|
||||
回到互联网的开端,当我第一次创建了我的第一个商业网站,生活是无比的美好。
|
||||
> 通用网关接口(CGI)提供了使用任何语言生成动态网站的简易方法。
|
||||
|
||||
我安装 Apache 并写了一些简单的 HTML 网页,网页上列出了一些关于我的业务的重要信息,比如产品概览以及如何联系我。这是一个静态网站,因为内容很少改变。由于网站的内容很少改变这一性质,因此维护起来也很简单。
|
||||
回到互联网的开端,当我第一次创建了我的第一个商业网站,生活是如此的美好。
|
||||
|
||||
## 静态内容
|
||||
我安装 Apache 并写了一些简单的 HTML 网页,网页上列出了一些关于我的业务的重要信息,比如产品概览以及如何联系我。这是一个静态网站,因为内容很少改变。由于网站的内容很少发生改变这一性质,因此维护起来也很简单。
|
||||
|
||||
静态内容很简单,同时也很常见。让我们快速的浏览一些静态网页的例子。你不需要一个可运行网站来执行这些小实验,只需要把这些文件放到 home 目录,然后使用浏览器打开。你所看到的内容将和通过 web 服务器提供这一文件看到的内容一样。
|
||||
### 静态内容
|
||||
|
||||
静态内容很简单,同时也很常见。让我们快速的浏览一些静态网页的例子。你不需要一个可运行网站来执行这些小实验,只需要把这些文件放到家目录,然后使用浏览器打开。你所看到的内容将和通过 Web 服务器提供这一文件看到的内容一样。
|
||||
|
||||
对于一个静态网站,你需要的第一件东西就是 `index.html` 文件,该文件通常放置在 `/var/www/html` 目录下。这个文件的内容可以非常简单,比如可以是像 “Hello, world” 这样一句短文本,没有任何 HTML 标记。它将简单的展示文本串内容。在你的家目录创建 `index.html` 文件,并添加 “hello, world” 作为内容(不需要引号)。在浏览器中通过下面的链接来打开这一文件:
|
||||
|
||||
对于一个静态网站,你需要的第一件东西就是 index.html 文件,该文件通常放置在 `/var/www/html` 目录下。这个文件的内容可以非常简单,比如可以是像 "Hello, world" 这样一句短文本,没有任何 HTML 标记。它将简单的展示文本串内容。在你的 home 目录创建 index.html 文件,并添加 "hello, world" 作为内容(不需要引号)。在浏览器中通过下面的链接来打开这一文件:
|
||||
```
|
||||
file:///home/<yourhomedirectory>/index.html
|
||||
file:///home/<你的家目录>/index.html
|
||||
```
|
||||
|
||||
所以 HTML 不是必须的,但是,如果你有大量需要格式化的文本,那么,不用 HTML 编码的网页的结果将会令人难以理解。
|
||||
|
||||
所以,下一步就是通过使用一些 HTML 编码来提供格式化,从而使内容更加可读。下面这一命令创建了一个具有 HTML 静态网页所需要的绝对最小标记的页面。你也可以使用你最喜欢的编辑器来创建这一内容。
|
||||
|
||||
```
|
||||
echo "<h1>Hello World</h1>" > test1.html
|
||||
```
|
||||
|
||||
现在,再次查看 index.html 文件,将会看到和刚才有些不同。
|
||||
现在,再次查看 `index.html` 文件,将会看到和刚才有些不同。
|
||||
|
||||
当然,你可以在实际的内容行上添加大量的 HTML 标记,以形成更加完整和标准的网页。下面展示的是更加完整的版本,尽管在浏览器中会看到同样的内容,但这也为更加标准化的网站奠定了基础。继续在 `index.html` 中写入这些内容并通过浏览器查看。
|
||||
|
||||
当然,你可以在实际的内容行上添加大量的 HTML 标记,以形成更加完整和标准的网页。下面展示的是更加完整的版本,尽管在浏览器中会看到同样的内容,但这也为更加标准化的网站奠定了基础。继续在 index.html 中写入这些内容并通过浏览器查看。
|
||||
```
|
||||
<!DOCTYPE HTML PUBLIC "-//w3c//DD HTML 4.0//EN">
|
||||
<html>
|
||||
@ -37,24 +42,25 @@ echo "<h1>Hello World</h1>" > test1.html
|
||||
|
||||
我使用这些技术搭建了一些静态网站,但我的生活正在改变。
|
||||
|
||||
## 动态网页
|
||||
### 动态网页
|
||||
|
||||
我找了一份新工作,这份工作的主要任务就是创建并维护用于一个动态网站的 CGI([公共网关接口][6])代码。字面意思来看,动态意味着在浏览器中生成的网页所需要的 HTML 是由每次访问页面时所访问到的数据生成的。这些数据包括网页表格中的用户输入,以用来在数据库中进行数据查找,结果数据被一些恰当的 HTML 包围着并展示在所请求的浏览器中。但是这不需要非常复杂。
|
||||
我找了一份新工作,这份工作的主要任务就是创建并维护用于一个动态网站的 CGI(<ruby>[公共网关接口][6]<rt>Common Gateway InterfaceM</rt></ruby>)代码。字面意思来看,动态意味着在浏览器中生成的网页所需要的 HTML 是由每次访问页面时不同的数据所生成的。这些数据包括网页表单中的用户输入,以用来在数据库中进行数据查找,结果数据被一些恰当的 HTML 包围着并展示在所请求的浏览器中。但是这不需要非常复杂。
|
||||
|
||||
通过使用 CGI 脚本,你可以创建一些简单或复杂的交互式程序,通过运行这些程序能够生成基于输入、计算、服务器的当前条件等改变的动态页面。有许多种语言可以用来写 CGI 脚本,在这篇文章中,我将谈到的是 Perl 和 Bash ,其他非常受欢迎的 CGI 语言包括 PHP 和 Python 。
|
||||
|
||||
这篇文章不会介绍 Apache 或其他任何 web 服务器的安装和配置。如果你能够访问一个你可以进行实验的 web 服务器,那么你可以直接查看它们在浏览器中出现的结果。否则,你可以在命令行中运行程序来查看它们所创建的 HTML 文本。你也可以重定向 HTML 输出到一个文件中,然后通过浏览器查看结果文件。
|
||||
这篇文章不会介绍 Apache 或其他任何 web 服务器的安装和配置。如果你能够访问一个你可以进行实验的 Web 服务器,那么你可以直接查看它们在浏览器中出现的结果。否则,你可以在命令行中运行程序来查看它们所创建的 HTML 文本。你也可以重定向 HTML 输出到一个文件中,然后通过浏览器查看结果文件。
|
||||
|
||||
### 使用 Perl
|
||||
|
||||
Perl 是一门非常受欢迎的 CGI 脚本语言,它的优势是强大的文本操作能力。
|
||||
|
||||
为了使 CGI 脚本可执行,你需要在你的网站的 httpd.conf 中添加下面这行内容。这会告诉服务器可执行 CGI 文件的位置。在这次实验中,不必担心这个问题。
|
||||
为了使 CGI 脚本可执行,你需要在你的网站的 `httpd.conf` 中添加下面这行内容。这会告诉服务器可执行 CGI 文件的位置。在这次实验中,不必担心这个问题。
|
||||
|
||||
```
|
||||
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
|
||||
```
|
||||
|
||||
把下面的 Perl 代码添加到文件 index.cgi,在这次实验中,这个文件应该放在你的 home 目录下。如果你使用 web 服务器,那么应把文件的所有者更改为 apache.apache,同时将文件权限设置为 755,因为无论位于哪,它必须是可执行的。
|
||||
把下面的 Perl 代码添加到文件 `index.cgi`,在这次实验中,这个文件应该放在你的家目录下。如果你使用 Web 服务器,那么应把文件的所有者更改为 `apache.apache`,同时将文件权限设置为 755,因为无论位于哪,它必须是可执行的。
|
||||
|
||||
```
|
||||
#!/usr/bin/perl
|
||||
@ -67,11 +73,11 @@ print "</body></html>\n";
|
||||
|
||||
在命令行中运行这个程序并查看结果,它将会展示出它所生成的 HTML 内容
|
||||
|
||||
现在,在浏览器中查看 index.cgi 文件,你所看到的只是文件的内容。浏览器的确将它看做 CGI 内容,但是,Apache 不知道需要将这个文件作为 CGI 程序运行,除非 Apache 的配置中包括上面所展示的 "ScriptAlias" 定义。没有这一配置,Apache 只会简单地将文件中的数据发送给浏览器。如果你能够访问 web 服务器,那么你可以将可执行文件放到 `/var/www/cgi-bin` 目录下。
|
||||
现在,在浏览器中查看 `index.cgi` 文件,你所看到的只是文件的内容。浏览器需要将它看做 CGI 内容,但是,Apache 不知道需要将这个文件作为 CGI 程序运行,除非 Apache 的配置中包括上面所展示的 `ScriptAlias` 定义。没有这一配置,Apache 只会简单地将文件中的数据发送给浏览器。如果你能够访问 Web 服务器,那么你可以将可执行文件放到 `/var/www/cgi-bin` 目录下。
|
||||
|
||||
如果想知道这个脚本的运行结果在浏览器中长什么样,那么,重新运行程序并把输出重定向到一个新文件,名字可以是任何你想要的。然后使用浏览器来查看这一文件,它包含了脚本所生成的内容。
|
||||
|
||||
上面这个 CGI 程序依旧生成静态内容,因为它总是生成相同的输出。把下面这行内容添加到 CGI 程序中 "Hello, world" 这一行后面。Perl 的 "system" 命令将会执行跟在它后面的 shell 命令,并把结果返回给程序。此时,我们将会通过 `free` 命令获得当前的 RAM 使用量。
|
||||
上面这个 CGI 程序依旧生成静态内容,因为它总是生成相同的输出。把下面这行内容添加到 CGI 程序中 “Hello, world” 这一行后面。Perl 的 `system` 命令将会执行跟在它后面的 shell 命令,并把结果返回给程序。此时,我们将会通过 `free` 命令获得当前的内存使用量。
|
||||
|
||||
```
|
||||
system "free | grep Mem\n";
|
||||
@ -83,7 +89,7 @@ system "free | grep Mem\n";
|
||||
|
||||
Bash 可能是用于 CGI 脚本中最简单的语言。用 Bash 来进行 CGI 编程的最大优势是它能够直接访问所有的标准 GNU 工具和系统程序。
|
||||
|
||||
把已经存在的 index.cgi 文件重命名为 Perl.index.cgi ,然后创建一个新的 index.cgi 文件并添加下面这些内容。记得设置权限使它可执行。
|
||||
把已经存在的 `index.cgi` 文件重命名为 `Perl.index.cgi`,然后创建一个新的 `index.cgi 文件并添加下面这些内容。记得设置权限使它可执行。
|
||||
|
||||
```
|
||||
#!/bin/bash
|
||||
@ -105,7 +111,7 @@ exit 0
|
||||
|
||||
在命令行中执行这个文件并查看输出,然后再次运行并把结果重定向到一个临时结果文件中。然后,刷新浏览器查看它所展示的网页是什么样子。
|
||||
|
||||
## 结论
|
||||
### 结论
|
||||
|
||||
创建能够生成许多种动态网页的 CGI 程序实际上非常简单。尽管这是一个很简单的例子,但是现在你应该看到一些可能性了。
|
||||
|
||||
@ -115,7 +121,7 @@ via: https://opensource.com/article/17/12/cgi-scripts
|
||||
|
||||
作者:[David Both][a]
|
||||
译者:[ucasFL](https://github.com/ucasFL)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -1,65 +1,73 @@
|
||||
Translating by kennethXia
|
||||
|
||||
How to add network bridge with nmcli (NetworkManager) on Linux
|
||||
如何在 Linux 里使用 nmcli 添加网桥
|
||||
======
|
||||
|
||||
I am using Debian Linux 9 "stretch" on the desktop. I would like to create network bridge with NetworkManager. But, I am unable to find the option to add br0. How can I create or add network bridge with nmcli for NetworkManager on Linux?
|
||||
Q:我正在电脑上使用 Debian Linux 9 “stretch”。 我想用 NetworkManager 来建网桥。但是根本就没有添加 br0的选项。我该如何在 Linux 里使用 nmcli 来为 NetworkManager 创建或者添加网桥呢?
|
||||
|
||||
A bridge is nothing but a device which joins two local networks into one network. It works at the data link layer, i.e., layer 2 of the OSI model. Network bridge often used with virtualization and other software. Disabling NetworkManager for a simple bridge especially on Linux Laptop/desktop doesn't make any sense. The nmcli tool can create Persistent bridge configuration without editing any files. **This page shows how to create a bridge interface using the Network Manager command line tool called nmcli**.
|
||||
网桥没什么特别的,只是把两个网络连在一起。它工作在数据链路层,即 OSI 模型的第二层。网桥经常用在虚拟机或别的一些软件中。为了使用网桥而关闭桌面 Linux 上的 NetworkManager 显然是不明智的。`nmcli` 可以创建一个永久的网桥而不需要编辑任何文件。
|
||||
|
||||
本文将展示如何使用 NetworkManager 的命令行工具 `nmcli` 来创建网桥。
|
||||
|
||||
### 如何使用 nmcli 来创建/添加网桥
|
||||
|
||||
### How to create/add network bridge with nmcli
|
||||
使用 NetworkManager 在 Linux 上添加网桥接口的步骤如下:
|
||||
|
||||
The procedure to add a bridge interface on Linux is as follows when you want to use Network Manager:
|
||||
|
||||
1. Open the Terminal app
|
||||
2. Get info about the current connection:
|
||||
1. 打开终端
|
||||
2. 获取当前连接状态:
|
||||
```
|
||||
nmcli con show
|
||||
```
|
||||
3. Add a new bridge:
|
||||
3. 添加新的网桥:
|
||||
```
|
||||
nmcli con add type bridge ifname br0
|
||||
```
|
||||
4. Create a slave interface:
|
||||
4. 创建子网卡:
|
||||
```
|
||||
nmcli con add type bridge-slave ifname eno1 master br0
|
||||
```
|
||||
5. Turn on br0:
|
||||
5. 打开 br0:
|
||||
```
|
||||
nmcli con up br0
|
||||
```
|
||||
|
||||
Let us see how to create a bridge, named br0 in details.
|
||||
让我们从细节层面看看如何创建一个名为 br0 的网桥。
|
||||
|
||||
### Get current network config
|
||||
### 获取当前网络配置
|
||||
|
||||
你可以通过 NetworkManager 的 GUI 来了解本机的网络连接:
|
||||
|
||||
You can view connection from the Network Manager GUI in settings:
|
||||
[![Getting Network Info on Linux][1]][1]
|
||||
Another option is to type the following command:
|
||||
|
||||
也可以使用如下命令行来查看:
|
||||
|
||||
```
|
||||
$ nmcli con show
|
||||
$ nmcli connection show --active
|
||||
```
|
||||
[![View the connections with nmcli][2]][2]
|
||||
I have a "Wired connection 1" which uses the eno1 Ethernet interface. My system has a VPN interface too. I am going to setup a bridge interface named br0 and add, (or enslave) an interface to eno1.
|
||||
|
||||
### How to create a bridge, named br0
|
||||
[![View the connections with nmcli][2]][2]
|
||||
|
||||
我有一个使用网卡 `eno1` 的 “有线连接”。我的系统还有一个 VPN 接口。我将要创建一个名为 `br0` 的网桥,并连接到 `eno1`。
|
||||
|
||||
### 如何创建一个名为 br0 的网桥
|
||||
|
||||
```
|
||||
$ sudo nmcli con add ifname br0 type bridge con-name br0
|
||||
$ sudo nmcli con add type bridge-slave ifname eno1 master br0
|
||||
$ nmcli connection show
|
||||
```
|
||||
|
||||
[![Create bridge interface using nmcli on Linux][3]][3]
|
||||
You can disable STP too:
|
||||
|
||||
你也可以禁用 STP:
|
||||
|
||||
```
|
||||
$ sudo nmcli con modify br0 bridge.stp no
|
||||
$ nmcli con show
|
||||
$ nmcli -f bridge con show br0
|
||||
```
|
||||
The last command shows the bridge settings including disabled STP:
|
||||
|
||||
最后一条命令展示了禁用 STP 后的网桥参数:
|
||||
|
||||
```
|
||||
bridge.mac-address: --
|
||||
bridge.stp: no
|
||||
@ -71,27 +79,35 @@ bridge.ageing-time: 300
|
||||
bridge.multicast-snooping: yes
|
||||
```
|
||||
|
||||
### 如何打开网桥
|
||||
|
||||
### How to turn on bridge interface
|
||||
你必须先关闭 `Wired connection 1` ,然后打开 `br0`:
|
||||
|
||||
You must turn off "Wired connection 1" and turn on br0:
|
||||
```
|
||||
$ sudo nmcli con down "Wired connection 1"
|
||||
$ sudo nmcli con up br0
|
||||
$ nmcli con show
|
||||
```
|
||||
Use [ip command][4] to view the IP settings:
|
||||
|
||||
使用 [ip 命令][4] 来查看 IP 信息:
|
||||
|
||||
```
|
||||
$ ip a s
|
||||
$ ip a s br0
|
||||
```
|
||||
|
||||
[![Build a network bridge with nmcli on Linux][5]][5]
|
||||
|
||||
### Optional: How to use br0 with KVM
|
||||
### 附录: 如何在 KVM 上使用 br0
|
||||
|
||||
现在你可以使用 KVM/VirtualBox/VMware workstation 创建的 VM(虚拟机)来直接连接网络而非通过 NAT。使用 `vi` 或者 [cat 命令][6]为虚拟机创建一个名为 `br0.xml` 的文件:
|
||||
|
||||
```
|
||||
$ cat /tmp/br0.xml
|
||||
```
|
||||
|
||||
添加以下代码:
|
||||
|
||||
Now you can connect VMs (virtual machine) created with KVM/VirtualBox/VMware workstation to a network directly without using NAT. Create a file named br0.xml for KVM using vi command or [cat command][6]:
|
||||
`$ cat /tmp/br0.xml`
|
||||
Append the following code:
|
||||
```
|
||||
<network>
|
||||
<name>br0</name>
|
||||
@ -100,14 +116,17 @@ Append the following code:
|
||||
</network>
|
||||
```
|
||||
|
||||
Run virsh command as follows:
|
||||
如下所示运行 `virsh`命令:
|
||||
|
||||
```
|
||||
# virsh net-define /tmp/br0.xml
|
||||
# virsh net-start br0
|
||||
# virsh net-autostart br0
|
||||
# virsh net-list --all
|
||||
```
|
||||
Sample outputs:
|
||||
|
||||
输出:
|
||||
|
||||
```
|
||||
Name State Autostart Persistent
|
||||
----------------------------------------------------------
|
||||
@ -115,24 +134,24 @@ Sample outputs:
|
||||
default inactive no yes
|
||||
```
|
||||
|
||||
阅读 man 页面获取更多信息:
|
||||
|
||||
For more info read the following man page:
|
||||
```
|
||||
$ man ip
|
||||
$ man nmcli
|
||||
```
|
||||
|
||||
### about the author
|
||||
### 关于作者
|
||||
|
||||
The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on [Twitter][7], [Facebook][8], [Google+][9].
|
||||
作者是 nixCraft 的创建者、老练的系统管理员和一个 Linux/Unix shell 脚本编程培训师。他为全球客户和各种公司工作,包括 IT,教育,国防,空间研究以及非营利组织。 他的联系方式 [Twitter][7]、 [Facebook][8]、 [Google+][9]。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.cyberciti.biz/faq/how-to-add-network-bridge-with-nmcli-networkmanager-on-linux/
|
||||
|
||||
作者:[Vivek Gite][a]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
译者:[kennethXia](https://github.com/kennethXia)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -1,29 +1,28 @@
|
||||
在 Git 中怎样克隆,修改,添加和删除文件?
|
||||
在 Git 中怎样克隆、修改、添加和删除文件?
|
||||
=====
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/LIFE_cat.png?itok=ta54QTAf)
|
||||
|
||||
在 [本系列的第一篇文章][1] 开始使用 Git 时,我们创建了一个简单的 Git 仓库,并通过它连接到我们的计算机向其中添加一个文件。在本文中,我们将学习一些关于 Git 的其他内容,即如何克隆(下载),修改,添加和删除 Git 仓库中的文件。
|
||||
|
||||
在 [本系列的第一篇文章][1] 开始使用 Git 时,我们创建了一个简单的 Git 仓库,并用我们的计算机连接到它,向其中添加一个文件。在本文中,我们将学习一些关于 Git 的其他内容,即如何克隆(下载)、修改、添加和删除 Git 仓库中的文件。
|
||||
|
||||
### 让我们来克隆一下
|
||||
|
||||
假设你在 GitHub 上已经有一个 Git 仓库,并且想从它那里获取你的文件-也许你在你的计算机上丢失了本地副本,或者你正在另一台计算机上工作,但是想访问仓库中的文件,你该怎么办?从 GitHub 下载你的文件?没错!我们称之为 Git 术语中的“克隆”。(你也可以将仓库作为 ZIP 文件下载,但我们将在本文中探讨克隆方法。)
|
||||
假设你在 GitHub 上已经有一个 Git 仓库,并且想从它那里获取你的文件——也许你在你的计算机上丢失了本地副本,或者你正在另一台计算机上工作,但是想访问仓库中的文件,你该怎么办?从 GitHub 下载你的文件?没错!在 Git 术语中我们称之为“<ruby>克隆<rt>clone</rt></ruby>”。(你也可以将仓库作为 ZIP 文件下载,但我们将在本文中探讨克隆方式。)
|
||||
|
||||
让我们克隆在上一篇文章中创建的称为 Demo 的仓库。(如果你还没有创建 Demo 仓库,请跳回到那篇文章并在继续之前执行那些步骤。)要克隆文件,只需打开浏览器并导航到 `https://github.com/<your_username>/Demo` (其中 `<your_username>` 是你仓库的名称。例如,我的仓库是 `https://github.com/kedark3/Demo`)。一旦你导航到该 URL,点击“克隆或下载”按钮,你的浏览器看起来应该是这样的:
|
||||
让我们克隆在上一篇文章中创建的名为 Demo 的仓库。(如果你还没有创建 Demo 仓库,请跳回到[那篇文章][1]并在继续之前执行那些步骤)要克隆文件,只需打开浏览器并导航到 `https://github.com/<your_username>/Demo` (其中 `<your_username>` 是你仓库的名称。例如,我的仓库是 `https://github.com/kedark3/Demo`)。一旦你导航到该 URL,点击“<ruby>克隆或下载<rt>Clone or download</rt></ruby>”按钮,你的浏览器看起来应该是这样的:
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/git_guide11.png?itok=wJYqZyBX)
|
||||
|
||||
正如你在上面看到的,“使用 HTTPS 克隆”选项已打开。从该下拉框中复制你的仓库地址(`https://github.com/<your_username>/Demo.git`),打开终端并输入以下命令将 GitHub 仓库克隆到你的计算机:
|
||||
正如你在上面看到的,“<ruby>使用 HTTPS 克隆<rt>Clone with HTTPS</rt></ruby>”选项已打开。从该下拉框中复制你的仓库地址(`https://github.com/<your_username>/Demo.git`),打开终端并输入以下命令将 GitHub 仓库克隆到你的计算机:
|
||||
|
||||
```
|
||||
git clone https://github.com/<your_username>/Demo.git
|
||||
|
||||
```
|
||||
|
||||
然后,要查看 `Demo` 目录中的文件列表,请输入以下命令:
|
||||
|
||||
```
|
||||
ls Demo/
|
||||
|
||||
```
|
||||
|
||||
终端看起来应该是这样的:
|
||||
@ -33,19 +32,14 @@ ls Demo/
|
||||
### 修改文件
|
||||
|
||||
现在我们已经克隆了仓库,让我们修改文件并在 GitHub 上更新它们。首先,逐个输入下面的命令,将目录更改为 `Demo/`,检查 `README.md` 中的内容,添加新的(附加的)内容到 `README.md`,然后使用 `git status` 检查状态:
|
||||
|
||||
```
|
||||
cd Demo/
|
||||
|
||||
ls
|
||||
|
||||
cat README.md
|
||||
|
||||
echo "Added another line to REAMD.md" >> README.md
|
||||
|
||||
cat README.md
|
||||
|
||||
git status
|
||||
|
||||
```
|
||||
|
||||
如果你逐一运行这些命令,终端看起开将会是这样:
|
||||
@ -53,13 +47,13 @@ git status
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/git_guide12.5.png?itok=jhb-EPH1)
|
||||
|
||||
让我们看一下 `git status` 的输出,并了解它的意思。不要担心这样的语句:
|
||||
|
||||
```
|
||||
On branch master
|
||||
|
||||
Your branch is up-to-date with 'origin/master'.".
|
||||
|
||||
```
|
||||
因为我们还没有学习这些。(译注:学了你就知道了)下一行说:`Changes not staged for commit`;这是告诉你,它下面列出的文件没有标记就绪(“分阶段”)提交。如果你运行 `git add`,Git 会把这些文件标记为 `Ready for commit`;换句话说就是 `Changes staged for commit`。在我们这样做之前,让我们用 `git diff` 命令来检查我们添加了什么到 Git 中,然后运行 `git add`。
|
||||
|
||||
因为我们还没有学习这些。(LCTT 译注:学了你就知道了)下一行说:`Changes not staged for commit`(变化未筹划提交);这是告诉你,它下面列出的文件没有被标记准备(“<ruby>筹划<rt>stage</rt></ruby>”)提交。如果你运行 `git add`,Git 会把这些文件标记为 `Ready for commit`(准备提交);换句话说就是 `Changes staged for commit`(变化筹划提交)。在我们这样做之前,让我们用 `git diff` 命令来检查我们添加了什么到 Git 中,然后运行 `git add`。
|
||||
|
||||
这里是终端输出:
|
||||
|
||||
@ -70,12 +64,11 @@ Your branch is up-to-date with 'origin/master'.".
|
||||
* `diff --git a/README.md b/README.md` 是 Git 比较的内容(在这个例子中是 `README.md`)。
|
||||
* `--- a/README.md` 会显示从文件中删除的任何东西。
|
||||
* `+++ b/README.md` 会显示从文件中添加的任何东西。
|
||||
* 任何添加到文件中的内容都以绿色文本打印,并在该行的开头加上 + 号。
|
||||
* 如果我们删除了任何内容,它将以红色文本打印,并在该行的开头加上 - 号。
|
||||
* 现在 git status 显示“Changes to be committed:”,并列出文件名(即 `README.md`)以及该文件发生了什么(即它已经被 `modified` 并准备提交)。
|
||||
* 任何添加到文件中的内容都以绿色文本打印,并在该行的开头加上 `+` 号。
|
||||
* 如果我们删除了任何内容,它将以红色文本打印,并在该行的开头加上 `-` 号。
|
||||
* 现在 `git status` 显示 `Changes to be committed:`(变化将被提交),并列出文件名(即 `README.md`)以及该文件发生了什么(即它已经被 `modified` 并准备提交)。
|
||||
|
||||
|
||||
提示:如果你已经运行了 `git add`,现在你想看看文件有什么不同,通常 `git diff` 不会产生任何东西,因为你已经添加了文件。相反,你必须使用 `git diff --cached`。它会告诉你 Git 添加的当前版本和以前版本文件之间的差别。你的终端输出看起来会是这样:
|
||||
提示:如果你已经运行了 `git add`,现在你想看看文件有什么不同,通常 `git diff` 不会输出任何东西,因为你已经添加了文件。相反,你必须使用 `git diff --cached`。它会告诉你 Git 添加的当前版本和以前版本文件之间的差别。你的终端输出看起来会是这样:
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/git_guide14.png?itok=bva9fHJj)
|
||||
|
||||
@ -84,47 +77,47 @@ Your branch is up-to-date with 'origin/master'.".
|
||||
我们用一些新内容修改了 `README.md` 文件,现在是时候将它上传到 GitHub。
|
||||
|
||||
让我们提交更改并将其推送到 GitHub。运行:
|
||||
```
|
||||
git commit -m "更新文件的名字"
|
||||
|
||||
```
|
||||
git commit -m "Updated Readme file"
|
||||
```
|
||||
|
||||
这告诉 Git 你正在“提交”已经“添加”的更改,你可能还记得,从本系列的第一部分中,添加一条消息来解释你在提交中所做的操作是非常重要的,以便你在稍后回顾 Git 日志时了解当时的目的。(我们将在下一篇文章中更多地关注这个话题。)`Updated Readme file` 是这个提交的消息--如果你认为这不是解释你所做的事情的最合理的方式,那么请随便写下你的提交消息。
|
||||
这告诉 Git 你正在“提交”已经“添加”的更改,你可能还记得,从本系列的第一部分中,添加一条消息来解释你在提交中所做的操作是非常重要的,以便你在稍后回顾 Git 日志时了解当时的目的。(我们将在下一篇文章中更多地关注这个话题。)`Updated Readme file` 是这个提交的消息——如果你认为这没有合理解释你所做的事情,那么请根据需要写下你的提交消息。
|
||||
|
||||
运行 `git push -u origin master`,这会提示你输入用户名和密码,然后将文件上传到你的 GitHub 仓库。刷新你的 GitHub 页面,你应该会看到刚刚对 `README.md` 所做的更改。
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/git_guide15.png?itok=Qa3spy13)
|
||||
|
||||
终端的右下角显示我提交了更改,检查了 Git 状态,并将更改推送到了 GitHub。git status 显示:
|
||||
终端的右下角显示我提交了更改,检查了 Git 状态,并将更改推送到了 GitHub。`git status` 显示:
|
||||
|
||||
```
|
||||
Your branch is ahead of 'origin/master' by 1 commit
|
||||
|
||||
(use "git push" to publish your local commits)
|
||||
|
||||
```
|
||||
|
||||
第一行表示在本地仓库中有一个提交,但不在原始/主文件中(即在 GitHub 上)。下一行指示我们将这些更改推送到原始/主文件中,这就是我们所做的。(在本例中,请参阅本系列的第一篇文章,以唤醒你对“原始”含义的记忆。我将在下一篇文章中讨论分支的时候,解释“主文件”的含义。)
|
||||
第一行表示在本地仓库中有一个提交,但不在 `origin/master` 中(即在 GitHub 上)。下一行指示我们将这些更改推送到 `origin/master` 中,这就是我们所做的。(在本例中,请参阅本系列的第一篇文章,以唤醒你对 `origin` 含义的记忆。我将在下一篇文章中讨论分支的时候,解释 `master` 的含义。)
|
||||
|
||||
### 添加新文件到 Git
|
||||
|
||||
现在我们修改了一个文件并在 GitHub 上更新了它,让我们创建一个新文件,将它添加到 Git,然后将其上传到 GitHub。
|
||||
运行:
|
||||
|
||||
```
|
||||
echo "This is a new file" >> file.txt
|
||||
|
||||
```
|
||||
|
||||
这将会创建一个名为 `file.txt` 的新文件。
|
||||
|
||||
如果使用 `cat` 查看它:
|
||||
|
||||
```
|
||||
cat file.txt
|
||||
|
||||
```
|
||||
|
||||
你将看到文件的内容。现在继续运行:
|
||||
|
||||
```
|
||||
git status
|
||||
|
||||
```
|
||||
|
||||
Git 报告说你的仓库中有一个未跟踪的文件(名为 `file.txt`)。这是 Git 告诉你说在你的计算机中的仓库目录下有一个新文件,然而你并没有告诉 Git,Git 也没有跟踪你所做的任何修改。
|
||||
@ -132,17 +125,17 @@ Git 报告说你的仓库中有一个未跟踪的文件(名为 `file.txt`)
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/git_guide16.png?itok=UZpSKL13)
|
||||
|
||||
我们需要告诉 Git 跟踪这个文件,以便我们可以提交并上传文件到我们的仓库。以下是执行该操作的命令:
|
||||
|
||||
```
|
||||
git add file.txt
|
||||
|
||||
git status
|
||||
|
||||
```
|
||||
|
||||
终端输出如下:
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/git_guide17.png?itok=quV-75Na)
|
||||
|
||||
git status 告诉你有 `file.txt` 被修改,对于 Git 来说它是一个 `new file`,Git 在此之前并不知道。现在我们已经为 Git 添加了 `file.txt`,我们可以提交更改并将其推送到 原始/主文件。
|
||||
`git status` 告诉你有 `file.txt` 被修改,对于 Git 来说它是一个 `new file`,Git 在此之前并不知道。现在我们已经为 Git 添加了 `file.txt`,我们可以提交更改并将其推送到 `origin/master`。
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/git_guide18.png?itok=e0D7-eol)
|
||||
|
||||
@ -155,26 +148,25 @@ Git 现在已经将这个新文件上传到 GitHub;如果刷新 GitHub 页面
|
||||
### 从 Git 中删除文件
|
||||
|
||||
如果我们发现我们犯了一个错误,并且需要从我们的仓库中删除 `file.txt`,该怎么办?一种方法是使用以下命令从本地副本中删除文件:
|
||||
|
||||
```
|
||||
rm file.txt
|
||||
|
||||
```
|
||||
|
||||
如果你现在做 `git status`,Git 就会说有一个文件 `not staged for commit`,并且它已经从仓库的本地拷贝中删除了。如果我们现在运行:
|
||||
如果你现在做 `git status`,Git 就会说有一个文件 `not staged for commit`(未筹划提交),并且它已经从仓库的本地拷贝中删除了。如果我们现在运行:
|
||||
|
||||
```
|
||||
git add file.txt
|
||||
|
||||
git status
|
||||
|
||||
```
|
||||
我知道我们正在删除这个文件,但是我们仍然运行 `git add`,因为我们需要告诉 Git 我们正在做的**更改**,`git add` 可以用在我们添加新文件,修改一个已存在文件的内容,或者从仓库中删除文件。实际上,`git add` 将所有更改考虑在内,并将这些更改分阶段进行提交。如果有疑问,请仔细查看下面终端屏幕截图中每个命令的输出。
|
||||
|
||||
我知道我们正在删除这个文件,但是我们仍然运行 `git add`,因为我们需要告诉 Git 我们正在做的**更改**,`git add` 可以用于我们添加新文件、修改一个已存在文件的内容、或者从仓库中删除文件时。实际上,`git add` 将所有更改考虑在内,并将这些筹划提交这些更改。如果有疑问,请仔细查看下面终端屏幕截图中每个命令的输出。
|
||||
|
||||
Git 会告诉我们已删除的文件正在进行提交。只要你提交此更改并将其推送到 GitHub,该文件也将从 GitHub 的仓库中删除。运行以下命令:
|
||||
|
||||
```
|
||||
git commit -m "Delete file.txt"
|
||||
|
||||
git push -u origin master
|
||||
|
||||
```
|
||||
|
||||
现在你的终端看起来像这样:
|
||||
@ -185,8 +177,7 @@ git push -u origin master
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/git_guide21.png?itok=RhXM4Gua)
|
||||
|
||||
现在你知道如何从你的仓库克隆,添加,修改和删除 Git 文件。本系列的下一篇文章将检查 Git 分支。
|
||||
|
||||
现在你知道如何从你的仓库克隆、添加、修改和删除 Git 文件。本系列的下一篇文章将检查 Git 分支。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -194,9 +185,9 @@ via: https://opensource.com/article/18/2/how-clone-modify-add-delete-git-files
|
||||
|
||||
作者:[Kedar Vijay Kulkarni][a]
|
||||
译者:[MjSeven](https://github.com/MjSeven)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/kkulkarn
|
||||
[1]:https://opensource.com/article/18/1/step-step-guide-git
|
||||
[1]:https://linux.cn/article-9319-1.html
|
@ -1,111 +1,113 @@
|
||||
如何知道 CPU 是否支持虚拟化技术 (VT)
|
||||
如何知道 CPU 是否支持虚拟化技术(VT)
|
||||
======
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/03/Virtualization-Technology-720x340.png)
|
||||
我们已经知道如何[**检查你的 Linux 操作系统是 32 位还是 64 位**] [1]以及如何[**知道你的 Linux 系统是物理机还是虚拟机**] [2]。今天,我们将学习另一个有用的话题 - 如何知道 CPU 是否支持虚拟化技术 (VT)?在安装虚拟化程序(如 VirtualBox 或 VMWare workstation)以在 Linux 系统上运行虚拟机之前,你应该首先验证这一点。现在让我们来看看你的电脑是否支持 VT。相信我,这真的很简单!
|
||||
|
||||
我们已经知道如何[检查你的 Linux 操作系统是 32 位还是 64 位] [1]以及如何[知道你的 Linux 系统是物理机还是虚拟机] [2]。今天,我们将学习另一个有用的话题 - 如何知道 CPU 是否支持虚拟化技术 (VT)?在安装虚拟化程序(如 VirtualBox 或 VMWare workstation)以在 Linux 系统上运行虚拟机之前,你应该首先验证这一点。现在让我们来看看你的电脑是否支持 VT。相信我,这真的很简单!
|
||||
|
||||
### 了解 CPU 是否支持虚拟化技术 (VT)
|
||||
|
||||
我们可以通过几种方法检查 CPU 是否支持 VT。在这里我向你展示四种方法。
|
||||
|
||||
#### 方法 1:使用 “egrep” 命令
|
||||
#### 方法 1:使用 egrep 命令
|
||||
|
||||
**egrep** 是 [**grep**][3] 命令的变体之一,用于使用正则表达式搜索文本文件。为了本指南的目的,我们将grep **/cpu/procinfo/** 文件来确定 CPU 是否支持 VT。
|
||||
`egrep` 是 [grep][3] 命令的变体之一,用于使用正则表达式搜索文本文件。为了本指南的目的,我们将 grep `/cpu/procinfo/` 文件来确定 CPU 是否支持 VT。
|
||||
|
||||
要使用 `egrep` 命令查明你的CPU是否支持VT,请运行:
|
||||
|
||||
要使用 egrep 命令查明你的CPU是否支持VT,请运行:
|
||||
```
|
||||
$ egrep "(svm|vmx)" /proc/cpuinfo
|
||||
|
||||
```
|
||||
|
||||
**示例输出**
|
||||
示例输出:
|
||||
|
||||
你将在输出中看到 `vmx`(Intel-VT 技术)或 `svm` (AMD-V 支持)。
|
||||
|
||||
你将在输出中看到 **“vmx”**(Intel-VT 技术)或 **“svm”** (AMD-V 支持)。
|
||||
```
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb pti tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm arat pln pts
|
||||
[...]
|
||||
|
||||
```
|
||||
|
||||
由于输出很长,你可能会发现很难在输出中找到 “vmx” 或 “svm”。别担心!你可以像下面那样用颜色来区分这些术语。
|
||||
由于输出很长,你可能会发现很难在输出中找到 `vmx` 或 `svm`。别担心!你可以像下面那样用颜色来区分这些术语。
|
||||
|
||||
```
|
||||
$ egrep --color -i "svm|vmx" /proc/cpuinfo
|
||||
|
||||
```
|
||||
|
||||
![][5]
|
||||
|
||||
如果你没有看到任何输出,这意味着你的系统不支持虚拟化。
|
||||
|
||||
请注意,cpuinfo 中的这些 CPU 标志(vmx 或 svm)表示你的系统支持 VT。在某些 CPU 型号中,默认情况下,可能会在 BIOS 中禁用 VT 支持。在这种情况下,你应该检查 BIOS 设置以启用 VT 支持。
|
||||
请注意,`cpuinfo` 中的这些 CPU 标志(`vmx` 或 `svm`)表示你的系统支持 VT。在某些 CPU 型号中,默认情况下,可能会在 BIOS 中禁用 VT 支持。在这种情况下,你应该检查 BIOS 设置以启用 VT 支持。
|
||||
|
||||
有关 `grep`/`egrep` 命令的更多详细信息,请参阅手册页。
|
||||
|
||||
有关 grep/egrep 命令的更多详细信息,请参阅手册页。
|
||||
```
|
||||
$ man grep
|
||||
|
||||
```
|
||||
|
||||
#### 方法 2: 使用 “lscpu” 命令
|
||||
#### 方法 2: 使用 lscpu 命令
|
||||
|
||||
“lscpu” 命令用于显示有关 CPU 架构的信息。它从 sysfs、/proc/cpuinfo 收集信息,并显示主机系统的 CPU、线程、内核、套接字和非统一内存访问 (NUMA) 节点的数量。
|
||||
`lscpu` 命令用于显示有关 CPU 架构的信息。它从 `sysfs`、`/proc/cpuinfo` 收集信息,并显示主机系统的 CPU、线程、内核、套接字和非统一内存访问 (NUMA) 节点的数量。
|
||||
|
||||
要确定是否启用 VT 支持,只需运行:
|
||||
|
||||
```
|
||||
$ lscpu
|
||||
|
||||
```
|
||||
|
||||
![][6]
|
||||
|
||||
有关更多详细信息,请查看手册页。
|
||||
|
||||
```
|
||||
$ man lscpu
|
||||
|
||||
```
|
||||
|
||||
#### 方法 3:使用 “Cpu-checker” 工具
|
||||
#### 方法 3:使用 cpu-checker 工具
|
||||
|
||||
cpu-checker 是另一个有用的工具,用于测试你的 CPU 是否支持虚拟化。就我在网上搜索得到的,该程序仅适用于基于 Ubuntu 的系统。要安装它,请运行:
|
||||
|
||||
**Cpu-checker** 是另一个有用的工具,用于测试你的 CPU 是否支持虚拟化。就我在网上搜索得到的,该程序仅适用于基于 Ubuntu 的系统。要安装它,请运行:
|
||||
```
|
||||
$ sudo apt-get install cpu-checker
|
||||
|
||||
```
|
||||
|
||||
安装 cpu-checker 包之后,运行以下命令来检查是否启用 VT 支持:
|
||||
|
||||
```
|
||||
$ sudo kvm-ok
|
||||
|
||||
```
|
||||
|
||||
如果您的 CPU 支持 VT,你将得到以下输出:
|
||||
|
||||
```
|
||||
INFO: /dev/kvm exists
|
||||
KVM acceleration can be used
|
||||
|
||||
```
|
||||
|
||||
如果你的 CPU 不支持 VT,你会看到如下的输出。
|
||||
|
||||
```
|
||||
INFO: Your CPU does not support KVM extensions
|
||||
KVM acceleration can NOT be used
|
||||
|
||||
```
|
||||
|
||||
#### 方法 4:使用 “virt-host-validate” 工具
|
||||
#### 方法 4:使用 virt-host-validate 工具
|
||||
|
||||
该工具专门用于基于 RHEL 的发行版,如 CentOS 和 Scientific Linux。 libvirt-client 包提供 `virt-host-validate` 二进制文件。所以你需要安装 libvert-client 包来使用这个工具。
|
||||
|
||||
该工具专门用于基于 RHEL 的发行版,如 CentOS 和 Scientific Linux。 **libvirt-client** 包提供 **virt-host-validate** 二进制文件。所以你需要安装 “libvert-client” 包来使用这个工具。
|
||||
```
|
||||
$ sudo yum install libvirt-client
|
||||
|
||||
```
|
||||
|
||||
现在,运行 “virt-host-validate” 命令来确定基于 RHEL 的系统中是否启用了 VT。
|
||||
现在,运行 `virt-host-validate` 命令来确定基于 RHEL 的系统中是否启用了 VT。
|
||||
|
||||
```
|
||||
$ sudo virt-host-validate
|
||||
|
||||
```
|
||||
|
||||
如果所有的结果是 **pass**,那么你的系统支持 VT。
|
||||
如果所有的结果是 `pass`,那么你的系统支持 VT。
|
||||
|
||||
```
|
||||
QEMU: Checking for hardware virtualization : PASS
|
||||
QEMU: Checking if device /dev/vhost-net exists : PASS
|
||||
@ -142,14 +144,13 @@ $ sudo virt-host-validate
|
||||
LXC: Checking for cgroup 'devices' controller mount-point : PASS
|
||||
LXC: Checking for cgroup 'blkio' controller support : PASS
|
||||
LXC: Checking for cgroup 'blkio' controller mount-point : PASS
|
||||
|
||||
```
|
||||
|
||||
如果你的系统不支持 VT,你会看到下面的输出。
|
||||
|
||||
```
|
||||
QEMU: Checking for hardware virtualization : FAIL (Only emulated CPUs are available, performance will be significantly limited)
|
||||
[...]
|
||||
|
||||
```
|
||||
|
||||
就是这样了。在本文中,我们讨论了确定 CPU 是否支持 VT 的不同方法。如你所见,这很简单。希望这个有用。还有更多好的东西。敬请关注!
|
||||
@ -163,7 +164,7 @@ via: https://www.ostechnix.com/how-to-find-if-a-cpu-supports-virtualization-tech
|
||||
|
||||
作者:[SK][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -1,3 +1,5 @@
|
||||
Translating by MjSeven
|
||||
|
||||
Best Linux Distros for the Enterprise
|
||||
======
|
||||
In this article, I'll share the top Linux distros for enterprise environments. Some of these distros are used in server and cloud environments along with desktop duties. The one constant that all of these Linux options have is that they are enterprise grade Linux distributions -- so you can expect a high greater degree of functionality and, of course, support.
|
||||
|
@ -1,3 +1,4 @@
|
||||
translating by Auk7F7
|
||||
How to set GNOME to display a custom slideshow
|
||||
======
|
||||
A very cool, yet lesser known, feature in GNOME is its ability to display a slideshow as your wallpaper. You can select a wallpaper slideshow from the background settings panel in the [GNOME Control Center][1]. Wallpaper slideshows can be distinguished from static wallpapers by a small clock emblem displayed in the lower-right corner of the preview.
|
||||
|
@ -1,93 +0,0 @@
|
||||
Translating by MjSeven
|
||||
|
||||
|
||||
Getting started with Jupyter Notebooks
|
||||
======
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/email_paper_envelope_document.png?itok=uPj_kouJ)
|
||||
Since the days of papyrus, publishers have struggled with formatting data in ways that engage readers. This is a particular issue in the areas of mathematics, science, and programming, where well-designed charts, illustrations, and equations can be key to helping people understand technical information.
|
||||
|
||||
[The Jupyter Notebook][1] is addressing this problem by reimagining how we produce instructional texts. Jupyter (which I first learned about at [All Things Open][2] in October 2017) is an open source application that enables users to create interactive, shareable notebooks that contain live code, equations, visualizations, and text.
|
||||
|
||||
Jupyter evolved from the [IPython Project][3], which features an interactive shell and a browser-based notebook with support for code, text, and mathematical expressions. Jupyter offers support for over 40 programming languages, including Python, R, and Julia, and its code can be exported to HTML, LaTeX, PDF, images, and videos or as [IPython][4] notebooks to be shared with other users.
|
||||
|
||||
Fun fact: "Jupyter" is an acronym for "Julia, Python, and R."
|
||||
|
||||
Some of its uses, according to Project Jupyter's website, include "data cleaning and transformation, numerical simulation, statistical modeling, data visualization, machine learning, and much more." Scientific institutions are using Jupyter Notebooks to explain research results. The code, which can come from actual data, can be tweaked and re-tweaked to visualize different results and scenarios. In this way, Jupyter Notebooks have become living texts and reports.
|
||||
|
||||
### Installing and starting Jupyter
|
||||
|
||||
The Jupyter software is open source, licensed under the [modified BSD license][5], and it can be [installed on Linux, MacOS, or Windows][6]. There are a number of ways to install Jupyter; I tried the PIP and the [Anaconda][7] installs on Linux and MacOS. A PIP install requires that Python is already installed on your computer; Jupyter recommends Python 3.
|
||||
|
||||
Since Python 3 was already installed on my computers, I installed Jupyter by running the following commands in the terminal (on Linux or Mac):
|
||||
```
|
||||
$ python3 -m pip install --upgrade pip
|
||||
|
||||
$ python3 -m pip install jupyter
|
||||
|
||||
```
|
||||
|
||||
Entering the following command at the terminal prompt started the application right away:
|
||||
```
|
||||
$ jupyter notebook
|
||||
|
||||
```
|
||||
|
||||
Soon my browser opened and displayed my Jupyter Notebook server at `http://localhost:8888`. (Supported browsers are Google Chrome, Firefox, and Safari.)
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/jupyter_1.png?itok=UyM1GuVG)
|
||||
|
||||
There's a drop-down menu labeled "New" in the upper-right corner. It enabled me to quickly create a new notebook for my own instructions and code. Note that my new notebook defaults to Python 3, which is my current environment.
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/jupyter_2.png?itok=alDI432q)
|
||||
|
||||
A new notebook with some default values, which can be changed (including the name of the notebook), opened.
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/jupyter_3.png?itok=9zjG-5JC)
|
||||
Notebooks have two different modes: Command and Edit. Command mode allows you to add or delete cells. You can enter Command mode by pressing the Escape key, and you can get into Edit mode by pressing the Enter key or by clicking in a cell.
|
||||
|
||||
A green highlight around a cell indicates you are in Edit mode, and a blue highlight means you're in Command mode. The following notebook is in Command mode and ready for me to execute the Python code in the cell. Note that I've changed the name of the notebook to First Notebook.
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/jupyter_4.png?itok=-QPxcuFX)
|
||||
|
||||
### Using Jupyter
|
||||
|
||||
A strength of Jupyter Notebooks is that besides being able to enter code, you can also add Markdown with narrative and explanatory text. I wanted to add a heading, so I added a cell above my code and typed a heading in Markdown. When I pressed `Ctrl+Enter`, my heading converted to HTML.
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/jupyter_5.png?itok=-sr9A8-W)
|
||||
|
||||
I can add output from a Bash command or script by appending an `!` to a command.
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/jupyter_6.png?itok=o_g38ECp)
|
||||
|
||||
I can also take advantage of IPython's [line magic and cell magic][8] commands. You can list the magic commands by appending a `%` or `%%` sign to commands inside a code cell. For example, `%lsmagic` produces all the magic commands that can be used in Jupyter notebooks.
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/jupyter_7.png?itok=uit0PtND)
|
||||
|
||||
Examples of these magic commands include `%pwd`, which outputs the present working directory (e.g., `/Users/YourName`) and `%ls`, which lists all the files and subdirectories in the current working directory. Another magic command displays charts generated from `matplotlib` in the notebook. `%%html` renders anything in that cell as HTML, which is useful for embedding video and links. There are cell magic commands for JavaScript and Bash, also.
|
||||
|
||||
If you need more information about using Jupyter Notebooks and its features, the Help section is incredibly complete.
|
||||
|
||||
People are using Jupyter Notebooks in many interesting ways; you can find some great examples in this [gallery][9]. How are you using Jupyter notebooks? Please share your ideas in the comments below.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/18/3/getting-started-jupyter-notebooks
|
||||
|
||||
作者:[Don Watkins][a]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
选题:[lujun9972](https://github.com/lujun9972)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/don-watkins
|
||||
[1]:http://jupyter.org/
|
||||
[2]:https://allthingsopen.org/
|
||||
[3]:http://ipython.org/
|
||||
[4]:https://en.wikipedia.org/wiki/IPython
|
||||
[5]:https://opensource.org/licenses/BSD-3-Clause
|
||||
[6]:http://jupyter.org/install.html
|
||||
[7]:https://www.anaconda.com/download/#linux
|
||||
[8]:http://ipython.readthedocs.io/en/stable/interactive/magics.html
|
||||
[9]:https://github.com/jupyter/jupyter/wiki/a-gallery-of-interesting-jupyter-notebooks#mathematics
|
@ -0,0 +1,90 @@
|
||||
Jupyter Notebooks 入门
|
||||
=====
|
||||
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/email_paper_envelope_document.png?itok=uPj_kouJ)
|
||||
自从 papyrus 发布以来,出版社一直在努力以吸引读者的方式来格式化数据。在数学、科学、和编程领域,这是一个特别的问题,设计良好的图表、插图和方程式可以成为帮助人们理解技术信息的关键。
|
||||
|
||||
[Jupyter Notebook][1] 通过重新构想我们如何制作教学文本来解决这个问题。Jupyter (我在 2017 年 10 月在 [All Things Open][2] 上首次了解到)是一款开源应用程序,它使用户能够创建包含实时代码,方程式,可视化和文本的交互式共享笔记本。
|
||||
|
||||
Jupyter 从 [IPython 项目][3]发展而来,该项目具有交互式 shell 和基于浏览器的笔记本,支持代码,文本和数学表达式。Jupyter 支持超过 40 种编程语言,包括 Python,R 和 Julia,其代码可以导出为 HTML,LaTeX,PDF,图像和视频,或者作为 [IPyhton][4] 笔记本与其他用户共享。
|
||||
|
||||
一个有趣的事实是:"Jupyter" 是 "Julia, Python, 和 R" 的缩写。
|
||||
|
||||
根据 Jupyter 项目网站介绍,它的一些用途包括“数据清理和转换,数值模拟,统计建模,数据可视化,机器学习等等”。科学机构正在使用 Jupyter Notebooks 来解释研究结果。代码可以来自实际数据,可以调整和重新调整以可视化成不同的结果和情景。通过这种方式,Jupyter Notebooks 已成为生动的文本和报告。
|
||||
|
||||
### 安装并开始 Jupyter
|
||||
|
||||
Jupyter 软件是开源的,在[修改过的 BSD 许可证][5] 下获得许可,它可以[安装在 Linux,MacOS 或 Windows 上][6]。有很多种方法可以安装 Jupyter;我尝试在 Linux 和 MacOS 上安装 PIP 和 [Anaconda][7]。PIP 安装要求你的计算机上已经安装了 Python;Jupyter 推荐 Python 3。
|
||||
|
||||
由于 Python 3 已经安装在我的电脑上,我通过在终端(在 Linux 或 Mac 上)运行以下命令来安装 Jupyter:
|
||||
|
||||
```
|
||||
$ python3 -m pip install --upgrade pip
|
||||
|
||||
$ python3 -m pip install jupyter
|
||||
|
||||
```
|
||||
|
||||
在终端提示种输入以下命令立即启动应用程序:
|
||||
```
|
||||
$ jupyter notebook
|
||||
|
||||
```
|
||||
|
||||
很快,我的浏览器打开并显示了我的 Jupyter Notebook 服务器在 `http://localhost:8888`。(支持的浏览器有 Google Chrome,Firefox 和 Safari)
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/jupyter_1.png?itok=UyM1GuVG)
|
||||
|
||||
在右上角有一个标有 “New” 的下拉菜单,它使我能够根据自己的指示和代码快速创建新的笔记本。请注意,我的新笔记本默认为 Python 3,这是我目前的环境。
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/jupyter_2.png?itok=alDI432q)
|
||||
|
||||
一个带有一些默认值的新笔记本,它可以被改变(包括笔记本的名字),打开它。
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/jupyter_3.png?itok=9zjG-5JC)
|
||||
笔记本有两种不同的模式:命令和编辑。命令模式允许你添加或删除单元格。你可以通过按下 Escape 键进入命令模式,按 Enter 键或单击单元格进入编辑模式。
|
||||
|
||||
单元格周围的绿色突出显示你处于编辑模式,蓝色突出显示你处于命令模式。以下笔记本处于命令模式并准备好执行单元中的 Python 代码。注意,我已将笔记本的名称更改为 First Notebook。
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/jupyter_4.png?itok=-QPxcuFX)
|
||||
|
||||
### 使用 Jupyter
|
||||
|
||||
Jupyter Notebooks 的强大之处在于除了能够输入代码之外,你还可以将 Markdown 与叙述性和解释性文本相结合。我想添加一个标题,所以我在代码上面添加了一个单元格,并在 Markdown 中输入了一个标题。当我按下 `Ctrl+Enter` 时,我的标题转换为 HTML。(译注:或者可以按下 Run 按钮。)
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/jupyter_5.png?itok=-sr9A8-W)
|
||||
|
||||
我可以通过在命令前追加 `!` 来添加 Bash 命令或脚本的输出。
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/jupyter_6.png?itok=o_g38ECp)
|
||||
|
||||
我也可以利用 IPython 的 [line magic 和 cell magic][8] 命令。你可以通过在代码单元内附加 `%` 或 `%%` 符号来列出魔术命令。例如,`%lsmagic` 产生所有可用于 Jupyter notebooks 的魔法命令。
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/panopoly_image_original/public/u128651/jupyter_7.png?itok=uit0PtND)
|
||||
|
||||
这些魔术命令的例子包括 `%pwd`,它输出当前工作目录(例如 `/Users/YourName`)和 `%ls`,它列出当前工作目录中的所有文件和子目录。另一个神奇命令显示从笔记本中的 `matplotlib` 生成的图表。`%%html` 将该单元格中的任何内容呈现为 HTML,这对嵌入视频和链接很有用,还有 JavaScript 和 Bash 的单元魔术命令。
|
||||
|
||||
如果你需要更多关于使用 Jupyter Notebooks 和它的特性的信息,帮助部分是非常完整的。
|
||||
|
||||
人们用许多有趣的方式使用 Jupyter Notebooks;你可以在这个 [gallery][9] 里找到一些很好的例子。你如何使用Jupyter笔记本?请在下面的评论中分享你的想法。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/18/3/getting-started-jupyter-notebooks
|
||||
|
||||
作者:[Don Watkins][a]
|
||||
译者:[MjSeven](https://github.com/MjSeven)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
选题:[lujun9972](https://github.com/lujun9972)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/don-watkins
|
||||
[1]:http://jupyter.org/
|
||||
[2]:https://allthingsopen.org/
|
||||
[3]:http://ipython.org/
|
||||
[4]:https://en.wikipedia.org/wiki/IPython
|
||||
[5]:https://opensource.org/licenses/BSD-3-Clause
|
||||
[6]:http://jupyter.org/install.html
|
||||
[7]:https://www.anaconda.com/download/#linux
|
||||
[8]:http://ipython.readthedocs.io/en/stable/interactive/magics.html
|
||||
[9]:https://github.com/jupyter/jupyter/wiki/a-gallery-of-interesting-jupyter-notebooks#mathematics
|
Loading…
Reference in New Issue
Block a user