Linux 上查看系统/服务器运行时间的 11 种方法
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/15/100936fvejs5lsgwkws552.jpg">Media</a>你是否想知道自己的 Linux 系统正常运行了多长时间而没有宕机?系统是什么时候启动的?Linux 上有多个查看服务器/系统运行时间的命令,大多数用户喜欢使用标准并且很有名的 uptime 命令获取这些具体的信息。服务器的运行时间对一些用户来说不那么重要,但是当服务器运行诸如在线商城门户portal、网上银行门户等关键任务应用mission-critical applications时,它对于服务器管理员server adminstrators来说就至关重要。它必须做到零宕机,因为一旦停机就会影响到数百万用户。正如我所说,许多命令都可以让用户看到 Linux 服务器的运行时间。在这篇教程里我会教你如何使用下面 11 种方式来查看。正常运行时间uptime指的是服务器自从上次关闭或重启以来经过的时间。uptime 命令获取 /proc 文件中的详细信息并输出正常运行时间,而 /proc 文件并不适合人直接看。以下这些命令会输出系统运行和启动的时间。也会显示一些额外的信息。方法 1:使用 uptime 命令uptime 命令会告诉你系统运行了多长时间。它会用一行显示以下信息。当前时间、系统运行时间、当前登录用户的数量、过去 1 分钟/5 分钟/15 分钟系统负载的均值。<pre class="prettyprint linenums"># uptime 08:34:29 up 21 days, 5:46, 1 user, load average: 0.06, 0.04, 0.00</pre>方法 2:使用 w 命令w 命令为每个登录进系统的用户,每个用户当前所做的事情,所有活动…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/15/100936fvejs5lsgwkws552.jpg">Media</a>你是否想知道自己的 Linux 系统正常运行了多长时间而没有宕机?系统是什么时候启动的?Linux 上有多个查看服务器/系统运行时间的命令,大多数用户喜欢使用标准并且很有名的 uptime 命令获取这些具体的信息。服务器的运行时间对一些用户来说不那么重要,但是当服务器运行诸如在线商城门户portal、网上银行门户等关键任务应用mission-critical applications时,它对于服务器管理员server adminstrators来说就至关重要。它必须做到零宕机,因为一旦停机就会影响到数百万用户。正如我所说,许多命令都可以让用户看到 Linux 服务器的运行时间。在这篇教程里我会教你如何使用下面 11 种方式来查看。正常运行时间uptime指的是服务器自从上次关闭或重启以来经过的时间。uptime 命令获取 /proc 文件中的详细信息并输出正常运行时间,而 /proc 文件并不适合人直接看。以下这些命令会输出系统运行和启动的时间。也会显示一些额外的信息。方法 1:使用 uptime 命令uptime 命令会告诉你系统运行了多长时间。它会用一行显示以下信息。当前时间、系统运行时间、当前登录用户的数量、过去 1 分钟/5 分钟/15 分钟系统负载的均值。<pre class="prettyprint linenums"># uptime 08:34:29 up 21 days, 5:46, 1 user, load average: 0.06, 0.04, 0.00</pre>方法 2:使用 w 命令w 命令为每个登录进系统的用户,每个用户当前所做的事情,所有活动…
为什么 cat 命令查看文件不会修改 atime
首先,在只读文件系统上你根本不可能修改文件的 atime,更重要的是这增加了磁盘 IO 数量。Media
via https://linux.cn/article-10444-1.html
首先,在只读文件系统上你根本不可能修改文件的 atime,更重要的是这增加了磁盘 IO 数量。Media
via https://linux.cn/article-10444-1.html
为什么 cat 命令查看文件不会修改 atime
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/15/110042y3esr3cvjjj0f0kr.jpg">Media</a>今天在 QQ 群里有人问了一个问题:“为什么用 cat 查看文件内容后不会修改它的 atime 呢?”我试了一下,发现真的是这样的!例如下面这个例子<pre class="prettyprint linenums">export LANG=Ccd /tmptmpfile=$(mktemp)echo "-------------------------------" >${tmpfile}stat ${tmpfile} |grep Accesssleep 5cat ${tmpfile}stat ${tmpfile} |grep Access</pre><pre class="prettyprint linenums">Access: (0600/-rw-------) Uid: ( 1000/lujun9972) Gid: ( 1000/lujun9972)Access: 2018-10-10 21:15:35.195471306 +0800-------------------------------Access: (0600/-rw-------) Uid: ( 1000/lujun9972) Gid: ( 1000/lujun9972)Access: 2018-10-10 21:15:40.198804743 +0800</pre>这跟我们所熟知的 atime(访问时间)的说法不一样啊。经过一番探查,最终从 <a href="https://en.m.wikipedia.org/wiki/Stat_(system_call)#Criticism_of_atime">Criticism of atime</a> 中发现了原因。根据 <a href="https://en.m.wikipedia.org/wiki/Stat_(system_call)#Criticism_of_atime">Criticism of atime</a> 的说法,读取文件要修改 atime 本身是一件很不合理的事情,因为要修改文件的 atime 就意味着要对磁盘进行写操作。首先,在只读文件系统上你根本不可能修改文件的 atime,更重要的是这增加了磁盘 IO 数量。为了提高磁盘性能,我们可以完全禁止 atime 的修改(参看 mount 的 --noatime 和 --nodiratime 选项),但这会破坏 POSIX 兼容性,而且某些备份软件需要通过对比 atime 和 mtime/ctime (修改时间/创建时间)的时间来判断是否需要进行备份。针对这个问题,Linux 内核 2.6.20 开始为 mount 引入了一个 --relatime 选项,并从 2.6.30 开始这一选项默认是开启的。当开启了 --relatime 选项后,只有当 atime < mtime 或 atime < ctime 时,才会去更新 atime。通过这种方式,一方面可以大幅度减少 atime 引起的磁盘写操作,另一方面又保证了备份软件不受到影响,…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/15/110042y3esr3cvjjj0f0kr.jpg">Media</a>今天在 QQ 群里有人问了一个问题:“为什么用 cat 查看文件内容后不会修改它的 atime 呢?”我试了一下,发现真的是这样的!例如下面这个例子<pre class="prettyprint linenums">export LANG=Ccd /tmptmpfile=$(mktemp)echo "-------------------------------" >${tmpfile}stat ${tmpfile} |grep Accesssleep 5cat ${tmpfile}stat ${tmpfile} |grep Access</pre><pre class="prettyprint linenums">Access: (0600/-rw-------) Uid: ( 1000/lujun9972) Gid: ( 1000/lujun9972)Access: 2018-10-10 21:15:35.195471306 +0800-------------------------------Access: (0600/-rw-------) Uid: ( 1000/lujun9972) Gid: ( 1000/lujun9972)Access: 2018-10-10 21:15:40.198804743 +0800</pre>这跟我们所熟知的 atime(访问时间)的说法不一样啊。经过一番探查,最终从 <a href="https://en.m.wikipedia.org/wiki/Stat_(system_call)#Criticism_of_atime">Criticism of atime</a> 中发现了原因。根据 <a href="https://en.m.wikipedia.org/wiki/Stat_(system_call)#Criticism_of_atime">Criticism of atime</a> 的说法,读取文件要修改 atime 本身是一件很不合理的事情,因为要修改文件的 atime 就意味着要对磁盘进行写操作。首先,在只读文件系统上你根本不可能修改文件的 atime,更重要的是这增加了磁盘 IO 数量。为了提高磁盘性能,我们可以完全禁止 atime 的修改(参看 mount 的 --noatime 和 --nodiratime 选项),但这会破坏 POSIX 兼容性,而且某些备份软件需要通过对比 atime 和 mtime/ctime (修改时间/创建时间)的时间来判断是否需要进行备份。针对这个问题,Linux 内核 2.6.20 开始为 mount 引入了一个 --relatime 选项,并从 2.6.30 开始这一选项默认是开启的。当开启了 --relatime 选项后,只有当 atime < mtime 或 atime < ctime 时,才会去更新 atime。通过这种方式,一方面可以大幅度减少 atime 引起的磁盘写操作,另一方面又保证了备份软件不受到影响,…
开源分布式数据库能否支撑银行海量非结构化数据应用?
随着柜面无纸化、“一站式”综合店员、人工智能等系统的陆续应用,各大商业银行也将全面实现网点智能化转型建设。Media
via https://linux.cn/article-10445-1.html
随着柜面无纸化、“一站式”综合店员、人工智能等系统的陆续应用,各大商业银行也将全面实现网点智能化转型建设。Media
via https://linux.cn/article-10445-1.html
开源分布式数据库能否支撑银行海量非结构化数据应用?
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/15/112835ysm3czzmc6zjb2fo.jpg">Media</a>随着银行业务的拓展以及网点业务的需求量加大,在新一轮技术浪潮驱动下,各大商业银行也在纷纷推进智能网点的建设。其中,商业银行的柜面无纸化就是最先推进的业务之一。银行智慧化业务转型包括广发银行、民生银行在内的大型商业银行,已经于近几年陆续上线柜面无纸化业务,并开始在全国网点进行推广使用。今后,随着柜面无纸化、“一站式”综合店员、人工智能等系统的陆续应用,各大商业银行也将全面实现网点智能化转型建设。 “无纸化”业务作为商业银行的新一代应用业务,对于数据管理带来了新的挑战。针对银行在新一代柜面无纸化业务上的痛点需求,巨杉数据库在保证稳定安全的基础上,利用其所支持的非结构化存储、结构化事务、可弹性扩张、高可用、以及多数据中心灾备等能力,全面支持广发、民生银行的柜面无纸化业务,为业务带来巨大提升。金融级分布式数据库助力大型商业银行巨杉数据库(SequoiaDB)为底层数据引擎的分布式非结构化数据管理平台,已经在包括民生银行、广发银行在内的超过 50 家大型银行业务应用。在某大型股份制商业银行业务系统中,巨杉数据库总集群部署节点数达到 122 台物理服务器,部署๬…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/15/112835ysm3czzmc6zjb2fo.jpg">Media</a>随着银行业务的拓展以及网点业务的需求量加大,在新一轮技术浪潮驱动下,各大商业银行也在纷纷推进智能网点的建设。其中,商业银行的柜面无纸化就是最先推进的业务之一。银行智慧化业务转型包括广发银行、民生银行在内的大型商业银行,已经于近几年陆续上线柜面无纸化业务,并开始在全国网点进行推广使用。今后,随着柜面无纸化、“一站式”综合店员、人工智能等系统的陆续应用,各大商业银行也将全面实现网点智能化转型建设。 “无纸化”业务作为商业银行的新一代应用业务,对于数据管理带来了新的挑战。针对银行在新一代柜面无纸化业务上的痛点需求,巨杉数据库在保证稳定安全的基础上,利用其所支持的非结构化存储、结构化事务、可弹性扩张、高可用、以及多数据中心灾备等能力,全面支持广发、民生银行的柜面无纸化业务,为业务带来巨大提升。金融级分布式数据库助力大型商业银行巨杉数据库(SequoiaDB)为底层数据引擎的分布式非结构化数据管理平台,已经在包括民生银行、广发银行在内的超过 50 家大型银行业务应用。在某大型股份制商业银行业务系统中,巨杉数据库总集群部署节点数达到 122 台物理服务器,部署๬…
将旧的 Linux 台式机变成家庭媒体中心
重新利用过时的计算机来浏览互联网并在大屏电视上观看视频。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/16/083919nakdodn7qbl78fqg.jpg">Media</a>我第一次尝试搭建一台“娱乐电脑”是在 20 世纪 90 年代后期,使用了一台带 Trident ProVidia 9685 PCI 显卡的普通旧台式电脑。我使用了所谓的“电视输出”卡,它有一个额外的输出可以连接到标准电视端子上。屏幕显示看起来不太好,而且没有音频输出。并且外观很丑:有一条 S-Video 线穿过了客厅地板连接到我的 19 英寸 Sony Trinitron CRT 电视机上。我在 Linux 和 Windows 98 上得到了同样令人遗憾的结果。在和那些看起来不对劲的系统挣扎之后,我放弃了几年。值得庆幸的是,如今的 HDMI 拥有更好的性能和标准化的分辨率,这使得廉价的家庭媒体中心成为现实。我的新媒体中心娱乐电脑实际上是我的旧 Ubuntu Linux 桌面,最近我用更快的电脑替换了它。这台电脑在工作中太慢,但是它的 3.4GHz 的 AMD Phenom II X4 965 处理器和 8GB 的 RAM 足以满足一般浏览和视频流的要求。以下是我让旧系统在新角色中发挥最佳性能所采取的步骤。硬件首先,我移除了不必要的设备,包括读卡器、硬盘驱动器、DVD 驱动器和后置 USB 卡,我添加了一块 PCI-Express 无线网卡。我将 Ubuntu 安装到单个固态硬盘 (SSD) 上,这可以切实提高任何旧系统的性能。BIOS在 BIOS 中,我禁用了所有未使用的设备,例如软盘和 IDE 驱动器控制器。我禁用了Ĉ…
重新利用过时的计算机来浏览互联网并在大屏电视上观看视频。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/16/083919nakdodn7qbl78fqg.jpg">Media</a>我第一次尝试搭建一台“娱乐电脑”是在 20 世纪 90 年代后期,使用了一台带 Trident ProVidia 9685 PCI 显卡的普通旧台式电脑。我使用了所谓的“电视输出”卡,它有一个额外的输出可以连接到标准电视端子上。屏幕显示看起来不太好,而且没有音频输出。并且外观很丑:有一条 S-Video 线穿过了客厅地板连接到我的 19 英寸 Sony Trinitron CRT 电视机上。我在 Linux 和 Windows 98 上得到了同样令人遗憾的结果。在和那些看起来不对劲的系统挣扎之后,我放弃了几年。值得庆幸的是,如今的 HDMI 拥有更好的性能和标准化的分辨率,这使得廉价的家庭媒体中心成为现实。我的新媒体中心娱乐电脑实际上是我的旧 Ubuntu Linux 桌面,最近我用更快的电脑替换了它。这台电脑在工作中太慢,但是它的 3.4GHz 的 AMD Phenom II X4 965 处理器和 8GB 的 RAM 足以满足一般浏览和视频流的要求。以下是我让旧系统在新角色中发挥最佳性能所采取的步骤。硬件首先,我移除了不必要的设备,包括读卡器、硬盘驱动器、DVD 驱动器和后置 USB 卡,我添加了一块 PCI-Express 无线网卡。我将 Ubuntu 安装到单个固态硬盘 (SSD) 上,这可以切实提高任何旧系统的性能。BIOS在 BIOS 中,我禁用了所有未使用的设备,例如软盘和 IDE 驱动器控制器。我禁用了Ĉ…
2 的威力,Linux 的威力:终端中的 2048
正在寻找基于终端的游戏来打发时间么?来看看 2048-cli 吧。Media
via https://linux.cn/article-10447-1.html
正在寻找基于终端的游戏来打发时间么?来看看 2048-cli 吧。Media
via https://linux.cn/article-10447-1.html
2 的威力,Linux 的威力:终端中的 2048
正在寻找基于终端的游戏来打发时间么?来看看 2048-cli 吧。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/16/085325rtbawhbxb55z1skk.png">Media</a>你好,欢迎来到今天的 Linux 命令行玩具日历。每天,我们会为你的终端带来一个不同的玩具:它可能是一个游戏或任何简单的消遣,可以帮助你获得乐趣。很可能你们中的一些人之前已经看过我们日历中的各种玩具,但我们希望每个人至少见到一件新事物。今天的玩具是我最喜欢的休闲游戏之一 <a href="https://github.com/gabrielecirulli/2048">2048</a> (它本身就是另外一个克隆品的克隆)的<a href="https://github.com/tiehuis/2048-cli">命令行版本</a>。要进行游戏,你只需将滑块向上、向下、向左、向右移动,组合成对的数字,并增加数值,直到你得到数字为 2048 的块。最吸引人的地方(以及挑战)是你不能只移动一个滑块,而是需要移动屏幕上的每一块。(LCTT 译注:不知道有没有人在我们 Linux 中国的网站上遇到过 <a href="https://linux.cn/404">404</a> 页面?那就是一个 2048 游戏,经常我错误地打开一个不存在的页面时,本应该去修复这个问题,却不小心沉迷于其中……)它简单、有趣,很容易在里面沉迷几个小时。这个 2048 的克隆 <a href="https://github.com/tiehuis/2048-cli">2048-cli</a> 是 Marc Tiehuis 用 C 编写的,并在 MIT 许可下开源。你可以在 <a href="https://github.com/tiehuis/2048-cli">GitHub</a> 上找到源代码,你也可在这找到适用于你的平台的安装说明。由于它已为 Fedora 打包,因此我来说,安装就像下面那Ċ…
正在寻找基于终端的游戏来打发时间么?来看看 2048-cli 吧。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/16/085325rtbawhbxb55z1skk.png">Media</a>你好,欢迎来到今天的 Linux 命令行玩具日历。每天,我们会为你的终端带来一个不同的玩具:它可能是一个游戏或任何简单的消遣,可以帮助你获得乐趣。很可能你们中的一些人之前已经看过我们日历中的各种玩具,但我们希望每个人至少见到一件新事物。今天的玩具是我最喜欢的休闲游戏之一 <a href="https://github.com/gabrielecirulli/2048">2048</a> (它本身就是另外一个克隆品的克隆)的<a href="https://github.com/tiehuis/2048-cli">命令行版本</a>。要进行游戏,你只需将滑块向上、向下、向左、向右移动,组合成对的数字,并增加数值,直到你得到数字为 2048 的块。最吸引人的地方(以及挑战)是你不能只移动一个滑块,而是需要移动屏幕上的每一块。(LCTT 译注:不知道有没有人在我们 Linux 中国的网站上遇到过 <a href="https://linux.cn/404">404</a> 页面?那就是一个 2048 游戏,经常我错误地打开一个不存在的页面时,本应该去修复这个问题,却不小心沉迷于其中……)它简单、有趣,很容易在里面沉迷几个小时。这个 2048 的克隆 <a href="https://github.com/tiehuis/2048-cli">2048-cli</a> 是 Marc Tiehuis 用 C 编写的,并在 MIT 许可下开源。你可以在 <a href="https://github.com/tiehuis/2048-cli">GitHub</a> 上找到源代码,你也可在这找到适用于你的平台的安装说明。由于它已为 Fedora 打包,因此我来说,安装就像下面那Ċ…
一位开源项目维护者的 5 个决心
不管怎么说,好的交流是一个活跃的开源社区的必备品。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/16/093920o0m0zi1ki1kxukg0.png">Media</a>我通常不会定下大的新年决心。当然,我在自我提升方面没有任何问题,这篇文章我希望锚定的是这个日历中的另外一部分。不过即使是这样,这里也有一些东西要从今年的免费日历上划掉,并将其替换为一些可以激发我的自省的新日历内容。在 2017 年,我从不在社交媒体上分享我从未阅读过的文章。我一直保持这样的状态,我也认为它让我成为了一个更好的互联网公民。对于 2019 年,我正在考虑让我成为更好的开源软件维护者的决心。下面是一些我在一些项目中担任维护者或共同维护者时坚持的决心:1、包含行为准则Jono Bacon 在他的文章“<a href="https://opensource.com/article/17/8/mistakes-open-source-avoid">7 个你可能犯的错误</a>”中包含了一条“不强制执行行为准则”。当然,要强制执行行为准则,你首先需要有一个行为准则。我打算默认用<a href="https://www.contributor-covenant.org/">贡献者契约</a>,但是你可以使用其他你喜欢的。关于这个许可协议,最好的方法是使用别人已经写好的,而不是你自己写的。但是重要的是,要找到一些能够定义你希望你的社区执行的,无论它们是什么样子。一旦这些被记录下来并强制执行,人们就能自行决定是否成为他们想象中社区的一份子。2、使许可证清晰且明确&#…
不管怎么说,好的交流是一个活跃的开源社区的必备品。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/16/093920o0m0zi1ki1kxukg0.png">Media</a>我通常不会定下大的新年决心。当然,我在自我提升方面没有任何问题,这篇文章我希望锚定的是这个日历中的另外一部分。不过即使是这样,这里也有一些东西要从今年的免费日历上划掉,并将其替换为一些可以激发我的自省的新日历内容。在 2017 年,我从不在社交媒体上分享我从未阅读过的文章。我一直保持这样的状态,我也认为它让我成为了一个更好的互联网公民。对于 2019 年,我正在考虑让我成为更好的开源软件维护者的决心。下面是一些我在一些项目中担任维护者或共同维护者时坚持的决心:1、包含行为准则Jono Bacon 在他的文章“<a href="https://opensource.com/article/17/8/mistakes-open-source-avoid">7 个你可能犯的错误</a>”中包含了一条“不强制执行行为准则”。当然,要强制执行行为准则,你首先需要有一个行为准则。我打算默认用<a href="https://www.contributor-covenant.org/">贡献者契约</a>,但是你可以使用其他你喜欢的。关于这个许可协议,最好的方法是使用别人已经写好的,而不是你自己写的。但是重要的是,要找到一些能够定义你希望你的社区执行的,无论它们是什么样子。一旦这些被记录下来并强制执行,人们就能自行决定是否成为他们想象中社区的一份子。2、使许可证清晰且明确&#…
使用 Ansible 来管理你的工作站:配置自动化
学习如何使 Ansible 自动对一系列台式机和笔记本应用配置。Media
via https://linux.cn/article-10449-1.html
学习如何使 Ansible 自动对一系列台式机和笔记本应用配置。Media
via https://linux.cn/article-10449-1.html
使用 Ansible 来管理你的工作站:配置自动化
学习如何使 Ansible 自动对一系列台式机和笔记本应用配置。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/16/162446gszu3hzkrewilswr.jpg">Media</a>Ansible 是一个令人惊讶的自动化的配置管理工具。其主要应用在服务器和云部署上,但在工作站上的应用(无论是台式机还是笔记本)却鲜少得到关注,这就是本系列所要关注的。在这个系列的<a href="https://linux.cn/article-10434-1.html">第一部分</a>,我向你展示了 ansible-pull 命令的基本用法,我们创建了一个安装了少量包的剧本。它本身是没有多大的用处的,但是为后续的自动化做了准备。在这篇文章中,将会达成闭环,而且在最后部分,我们将会有一个针对工作站自动配置的完整的工作解决方案。现在,我们将要设置 Ansible 的配置,这样未来将要做的改变将会自动的部署应用到我们的工作站上。现阶段,假设你已经完成了<a href="https://linux.cn/article-10434-1.html">第一部分</a>的工作。如果没有的话,当你完成的时候回到本文。你应该已经有一个包含第一篇文章中代码的 GitHub 库。我们将直接在之前创建的部分之上继续。首先,因为我们要做的不仅仅是安装包文件,所以我们要做一些重新的组织工作。现在,我们已经有一个名为 local.yml 并包含以下内容的剧本:<pre class="prettyprint linenums">- hosts: localhost become: true tasks: - name: Install packages apt: name={{item}} with_items: - htop - mc - tmux</pre>如果我们仅仅想实现一个任务那么上面的配置就足够了。随着向我们的配置中不…
学习如何使 Ansible 自动对一系列台式机和笔记本应用配置。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/16/162446gszu3hzkrewilswr.jpg">Media</a>Ansible 是一个令人惊讶的自动化的配置管理工具。其主要应用在服务器和云部署上,但在工作站上的应用(无论是台式机还是笔记本)却鲜少得到关注,这就是本系列所要关注的。在这个系列的<a href="https://linux.cn/article-10434-1.html">第一部分</a>,我向你展示了 ansible-pull 命令的基本用法,我们创建了一个安装了少量包的剧本。它本身是没有多大的用处的,但是为后续的自动化做了准备。在这篇文章中,将会达成闭环,而且在最后部分,我们将会有一个针对工作站自动配置的完整的工作解决方案。现在,我们将要设置 Ansible 的配置,这样未来将要做的改变将会自动的部署应用到我们的工作站上。现阶段,假设你已经完成了<a href="https://linux.cn/article-10434-1.html">第一部分</a>的工作。如果没有的话,当你完成的时候回到本文。你应该已经有一个包含第一篇文章中代码的 GitHub 库。我们将直接在之前创建的部分之上继续。首先,因为我们要做的不仅仅是安装包文件,所以我们要做一些重新的组织工作。现在,我们已经有一个名为 local.yml 并包含以下内容的剧本:<pre class="prettyprint linenums">- hosts: localhost become: true tasks: - name: Install packages apt: name={{item}} with_items: - htop - mc - tmux</pre>如果我们仅仅想实现一个任务那么上面的配置就足够了。随着向我们的配置中不…
在 Linux 中打扮你的冬季 Bash 提示符
你的 Linux 终端可能支持 Unicode,那么为何不利用它在提示符中添加季节性的图标呢?Media
via https://linux.cn/article-10450-1.html
你的 Linux 终端可能支持 Unicode,那么为何不利用它在提示符中添加季节性的图标呢?Media
via https://linux.cn/article-10450-1.html
在 Linux 中打扮你的冬季 Bash 提示符
你的 Linux 终端可能支持 Unicode,那么为何不利用它在提示符中添加季节性的图标呢?<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/16/184022d59vyvvkvqaa578v.png">Media</a>欢迎再次来到 Linux 命令行玩具日历的另一篇。如果这是你第一次访问该系列,你甚至可能会问自己什么是命令行玩具?我们对此比较随意:它会是终端上有任何有趣的消遣,对于任何节日主题相关的还有额外的加分。也许你以前见过其中的一些,也许你没有。不管怎样,我们希望你玩得开心。今天的玩具非常简单:它是你的 Bash 提示符。你的 Bash 提示符?是的!我们还有几个星期的假期可以盯着它看,在北半球冬天还会再多几周,所以为什么不玩玩它。目前你的 Bash 提示符号可能是一个简单的美元符号( $),或者更有可能是一个更长的东西。如果你不确定你的 Bash 提示符是什么,你可以在环境变量 $PS1 中找到它。要查看它,请输入:<pre class="prettyprint linenums">echo $PS1</pre>对于我而言,它返回:<pre class="prettyprint linenums">[\u@\h \W]\$</pre>\u、\h 和 \W 分别是用户名、主机名和工作目录的特殊字符。你还可以使用其他一些符号。为了帮助构建你的 Bash 提示符,你可以使用 <a href="http://ezprompt.net/">EzPrompt</a>,这是一个 PS1 配置的在线生成器,它包含了许多选项,包括日期和时间、Git 状态等。你可能还有其他变量来组成 Bash 提示符。对我来说,$PS2 包含了我命令提示符的结束括号。有关详细信息,请参阅…
你的 Linux 终端可能支持 Unicode,那么为何不利用它在提示符中添加季节性的图标呢?<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/16/184022d59vyvvkvqaa578v.png">Media</a>欢迎再次来到 Linux 命令行玩具日历的另一篇。如果这是你第一次访问该系列,你甚至可能会问自己什么是命令行玩具?我们对此比较随意:它会是终端上有任何有趣的消遣,对于任何节日主题相关的还有额外的加分。也许你以前见过其中的一些,也许你没有。不管怎样,我们希望你玩得开心。今天的玩具非常简单:它是你的 Bash 提示符。你的 Bash 提示符?是的!我们还有几个星期的假期可以盯着它看,在北半球冬天还会再多几周,所以为什么不玩玩它。目前你的 Bash 提示符号可能是一个简单的美元符号( $),或者更有可能是一个更长的东西。如果你不确定你的 Bash 提示符是什么,你可以在环境变量 $PS1 中找到它。要查看它,请输入:<pre class="prettyprint linenums">echo $PS1</pre>对于我而言,它返回:<pre class="prettyprint linenums">[\u@\h \W]\$</pre>\u、\h 和 \W 分别是用户名、主机名和工作目录的特殊字符。你还可以使用其他一些符号。为了帮助构建你的 Bash 提示符,你可以使用 <a href="http://ezprompt.net/">EzPrompt</a>,这是一个 PS1 配置的在线生成器,它包含了许多选项,包括日期和时间、Git 状态等。你可能还有其他变量来组成 Bash 提示符。对我来说,$PS2 包含了我命令提示符的结束括号。有关详细信息,请参阅…
Open Source 103:开源与云的商业碰撞
我们看到开源社区开始纷纷将左版调到最高音量来应对过去所没有出现过的市场环境Media
via https://linux.cn/article-10451-1.html
我们看到开源社区开始纷纷将左版调到最高音量来应对过去所没有出现过的市场环境Media
via https://linux.cn/article-10451-1.html
Open Source 103:开源与云的商业碰撞
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/16/220945ir4l826rjsulrj4s.jpg">Media</a>最近开源界还发生了一系列有代表性的事件,三个重量级的开源软件社区先后修改了开源许可证来应对公有云厂商的不当竞争,这三个开源软件社区背后的主导企业和核心产品分别是:Redis Labs(Redis。一个开源的键值对 NoSQL 数据库)MongoDB(MongoDB,一个开源的分布式文档 NoSQL 数据库)Confluent(Apache Kafka。一个开源的分布式流/消息系统)开源软件与公有云的商业碰撞正式拉开帷幕开源社区被激怒的原因在于公有云厂商实际上是在利用开源社区的成果在变现,但对开源社区却没有回馈贡献,这有悖于开源精神。几乎所有主流的公有云厂商都被点名,Amazon/Microsoft/Alibaba/Google,其中,对 AWS 的吐槽最多,原话是 “the worst behavior” 。随着云计算的渗透,公有云厂商将有机会把握住企业客户使用软件产品的『流量入口』,对于公有云厂商而言,他们很自然的选择就是上线更多的软件产品 SKU 来提升客户粘性、做高客单价、提高变现能力,于是最快的方式就是向开源社区直接『伸手』,将开源版软件封装成服务提供给客户,同时为了保证自己的产品竞争优势选择不把对开源项目的改进回馈到开源社区。所以开源社区对公有云厂商说,你必须把基于开源项目的改进也开源代码回馈社区,否则你就别『窃取』开源社区的成果。开源面临的真ઽ…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/16/220945ir4l826rjsulrj4s.jpg">Media</a>最近开源界还发生了一系列有代表性的事件,三个重量级的开源软件社区先后修改了开源许可证来应对公有云厂商的不当竞争,这三个开源软件社区背后的主导企业和核心产品分别是:Redis Labs(Redis。一个开源的键值对 NoSQL 数据库)MongoDB(MongoDB,一个开源的分布式文档 NoSQL 数据库)Confluent(Apache Kafka。一个开源的分布式流/消息系统)开源软件与公有云的商业碰撞正式拉开帷幕开源社区被激怒的原因在于公有云厂商实际上是在利用开源社区的成果在变现,但对开源社区却没有回馈贡献,这有悖于开源精神。几乎所有主流的公有云厂商都被点名,Amazon/Microsoft/Alibaba/Google,其中,对 AWS 的吐槽最多,原话是 “the worst behavior” 。随着云计算的渗透,公有云厂商将有机会把握住企业客户使用软件产品的『流量入口』,对于公有云厂商而言,他们很自然的选择就是上线更多的软件产品 SKU 来提升客户粘性、做高客单价、提高变现能力,于是最快的方式就是向开源社区直接『伸手』,将开源版软件封装成服务提供给客户,同时为了保证自己的产品竞争优势选择不把对开源项目的改进回馈到开源社区。所以开源社区对公有云厂商说,你必须把基于开源项目的改进也开源代码回馈社区,否则你就别『窃取』开源社区的成果。开源面临的真ઽ…
Caffeinated 6.828:实验 6:网络驱动程序
现在你已经有了一个文件系统,一个典型的操作系统都应该有一个网络栈。在本实验中,你将继续为一个网卡去写一个驱动程序。Media
via https://linux.cn/article-10452-1.html
现在你已经有了一个文件系统,一个典型的操作系统都应该有一个网络栈。在本实验中,你将继续为一个网卡去写一个驱动程序。Media
via https://linux.cn/article-10452-1.html
Caffeinated 6.828:实验 6:网络驱动程序
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/17/204350s86sch2hc3939xs3.jpeg">Media</a>简介这个实验是默认你能够自己完成的最终项目。现在你已经有了一个文件系统,一个典型的操作系统都应该有一个网络栈。在本实验中,你将继续为一个网卡去写一个驱动程序。这个网卡基于 Intel 82540EM 芯片,也就是众所周知的 E1000 芯片。预备知识使用 Git 去提交你的实验 5 的源代码(如果还没有提交的话),获取课程仓库的最新版本,然后创建一个名为 lab6 的本地分支,它跟踪我们的远程分支 origin/lab6:<pre class="prettyprint linenums">athena% cd ~/6.828/labathena% add gitathena% git commit -am 'my solution to lab5'nothing to commit (working directory clean)athena% git pullAlready up-to-date.athena% git checkout -b lab6 origin/lab6Branch lab6 set up to track remote branch refs/remotes/origin/lab6.Switched to a new branch "lab6"athena% git merge lab5Merge made by recursive. fs/fs.c | 42 +++++++++++++++++++ 1 files changed, 42 insertions(+), 0 deletions(-)athena%</pre>然后,仅有网卡驱动程序并不能够让你的操作系统接入互联网。在新的实验 6 的代码中,我们为你提供了网络栈和一个网络服务器。与以前的实验一样,使用 git 去拉取这个实验的代码,合并到你自己的代码中,并去浏览新的 net/ 目录中的内容,以及在 kern/ 中的新文件。除了写这个驱动程序以外,你还需要去创建一个访问你的驱动程序的系统调用。你将要去实现那些在网络服务器中缺失的代码,以便于在网络栈和你的驱动程序之间传输包。你还需要通过完成一个 web 服务器来将所有的东西连接到一起。你的新 web 服务器还需要你的文件系统来提供所需要的文件。大&…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/17/204350s86sch2hc3939xs3.jpeg">Media</a>简介这个实验是默认你能够自己完成的最终项目。现在你已经有了一个文件系统,一个典型的操作系统都应该有一个网络栈。在本实验中,你将继续为一个网卡去写一个驱动程序。这个网卡基于 Intel 82540EM 芯片,也就是众所周知的 E1000 芯片。预备知识使用 Git 去提交你的实验 5 的源代码(如果还没有提交的话),获取课程仓库的最新版本,然后创建一个名为 lab6 的本地分支,它跟踪我们的远程分支 origin/lab6:<pre class="prettyprint linenums">athena% cd ~/6.828/labathena% add gitathena% git commit -am 'my solution to lab5'nothing to commit (working directory clean)athena% git pullAlready up-to-date.athena% git checkout -b lab6 origin/lab6Branch lab6 set up to track remote branch refs/remotes/origin/lab6.Switched to a new branch "lab6"athena% git merge lab5Merge made by recursive. fs/fs.c | 42 +++++++++++++++++++ 1 files changed, 42 insertions(+), 0 deletions(-)athena%</pre>然后,仅有网卡驱动程序并不能够让你的操作系统接入互联网。在新的实验 6 的代码中,我们为你提供了网络栈和一个网络服务器。与以前的实验一样,使用 git 去拉取这个实验的代码,合并到你自己的代码中,并去浏览新的 net/ 目录中的内容,以及在 kern/ 中的新文件。除了写这个驱动程序以外,你还需要去创建一个访问你的驱动程序的系统调用。你将要去实现那些在网络服务器中缺失的代码,以便于在网络栈和你的驱动程序之间传输包。你还需要通过完成一个 web 服务器来将所有的东西连接到一起。你的新 web 服务器还需要你的文件系统来提供所需要的文件。大&…
如何在 Linux 中安装微软的 .NET Core SDK
本分步操作指南文章解释了如何在 Linux 中安装 .NET Core SDK 以及如何使用 .NET 开发出第一个应用程序。Media
via https://linux.cn/article-10453-1.html
本分步操作指南文章解释了如何在 Linux 中安装 .NET Core SDK 以及如何使用 .NET 开发出第一个应用程序。Media
via https://linux.cn/article-10453-1.html
如何在 Linux 中安装微软的 .NET Core SDK
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/17/215837aa9devtxvnqq7nb0.png">Media</a><strong>.NET Core</strong> 是微软提供的免费、跨平台和开源的开发框架,可以构建桌面应用程序、移动端应用程序、网络应用程序、物联网应用程序和游戏应用程序等。如果你是 Windows 平台下的 dotnet 开发人员的话,使用 .NET core 可以很轻松就设置好任何 Linux 和类 Unix 操作系统下的开发环境。本分步操作指南文章解释了如何在 Linux 中安装 .NET Core SDK 以及如何使用 .NET 开发出第一个应用程序。Linux 中安装 .NET Core SDK.NET Core 支持 GNU/Linux、Mac OS 和 Windows 系统,可以在主流的 GNU/Linux 操作系统上安装运行,包括 Debian、Fedora、CentOS、Oracle Linux、RHEL、SUSE/openSUSE 和 Ubuntu 。在撰写这篇教程时,其最新版本为 <strong>2.2</strong>。<strong>Debian 9</strong> 系统上安装 .NET Core SDK,请按如下步骤进行。首先,需要注册微软的密钥,接着把 .NET 源仓库地址添加进来,运行的命令如下:<pre class="prettyprint linenums">$ wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg$ sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/$ wget -q https://packages.microsoft.com/config/debian/9/prod.list$ sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list$ sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg$ sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list</pre>注册好密钥及添加完仓库源后,就可以安装 .NET SDK 了,命令如下:<pre class="prettyprint linenums">$ sudo apt-get update$ sudo apt-get install dotnet-sdk-2.2</pre><strong>Debian 8 系统上安装:</strong>增加微软密钥,添加 .NET 仓库源:<pre class="prettyprint linenums">$ wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg$ sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/$ wget -q https://packages.microsoft.com/config/debian/8/prod.list$ sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list$ sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg$ sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list</pre>安装 .NET SDK:<pre class="prettyprint linenums">$ sudo apt-get update$ sudo apt-get install dotnet-sdk-2.2</pre><strong>Fedora 28 系统上安装:</strong>…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201901/17/215837aa9devtxvnqq7nb0.png">Media</a><strong>.NET Core</strong> 是微软提供的免费、跨平台和开源的开发框架,可以构建桌面应用程序、移动端应用程序、网络应用程序、物联网应用程序和游戏应用程序等。如果你是 Windows 平台下的 dotnet 开发人员的话,使用 .NET core 可以很轻松就设置好任何 Linux 和类 Unix 操作系统下的开发环境。本分步操作指南文章解释了如何在 Linux 中安装 .NET Core SDK 以及如何使用 .NET 开发出第一个应用程序。Linux 中安装 .NET Core SDK.NET Core 支持 GNU/Linux、Mac OS 和 Windows 系统,可以在主流的 GNU/Linux 操作系统上安装运行,包括 Debian、Fedora、CentOS、Oracle Linux、RHEL、SUSE/openSUSE 和 Ubuntu 。在撰写这篇教程时,其最新版本为 <strong>2.2</strong>。<strong>Debian 9</strong> 系统上安装 .NET Core SDK,请按如下步骤进行。首先,需要注册微软的密钥,接着把 .NET 源仓库地址添加进来,运行的命令如下:<pre class="prettyprint linenums">$ wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg$ sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/$ wget -q https://packages.microsoft.com/config/debian/9/prod.list$ sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list$ sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg$ sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list</pre>注册好密钥及添加完仓库源后,就可以安装 .NET SDK 了,命令如下:<pre class="prettyprint linenums">$ sudo apt-get update$ sudo apt-get install dotnet-sdk-2.2</pre><strong>Debian 8 系统上安装:</strong>增加微软密钥,添加 .NET 仓库源:<pre class="prettyprint linenums">$ wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg$ sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/$ wget -q https://packages.microsoft.com/config/debian/8/prod.list$ sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list$ sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg$ sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list</pre>安装 .NET SDK:<pre class="prettyprint linenums">$ sudo apt-get update$ sudo apt-get install dotnet-sdk-2.2</pre><strong>Fedora 28 系统上安装:</strong>…