Caffeinated 6.828:实验 5:文件系统、Spawn 和 Shell
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/27/125429u3xhxx1urgh9zkkl.jpg">Media</a>简介在本实验中,你将要去实现 spawn,它是一个加载和运行磁盘上可运行文件的库调用。然后,你接着要去充实你的内核和库,以使操作系统能够在控制台上运行一个 shell。而这些特性需要一个文件系统,本实验将引入一个可读/写的简单文件系统。预备知识使用 Git 去获取最新版的课程仓库,然后创建一个命名为 lab5 的本地分支,去跟踪远程的 origin/lab5 分支:<pre class="prettyprint linenums">athena% cd ~/6.828/labathena% add gitathena% git pullAlready up-to-date.athena% git checkout -b lab5 origin/lab5Branch lab5 set up to track remote branch refs/remotes/origin/lab5.Switched to a new branch "lab5"athena% git merge lab4Merge made by recursive......athena%</pre>在实验中这一部分的主要新组件是文件系统环境,它位于新的 fs 目录下。通过检查这个目录中的所有文件,我们来看一下新的文件都有什么。另外,在 user 和 lib 目录下还有一些文件系统相关的源文件。fs/fs.c 维护文件系统在磁盘上结构的代码fs/bc.c 构建在我们的用户级页故障处理功能之上的一个简单的块缓存fs/ide.c 极简的基于 PIO(非中断驱动的)IDE 驱动程序代码fs/serv.c 使用文件系统 IPC 与客户端环境交互的文件系统服务器lib/fd.c 实现一个常见的类 UNIX 的文件描述符接口的代码lib/file.c 磁盘上文件类型的驱动,实现为一个文件系统 IPC 客户端lib/console.c 控制台输入/输出文件类型的驱动lib/spawn.c spawn 库调用的框架代码你应该再次去运行 pingpong、primes 和 forktree,测试实验 4 完成后合并到新的实验 5 中的代码能否正…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/27/125429u3xhxx1urgh9zkkl.jpg">Media</a>简介在本实验中,你将要去实现 spawn,它是一个加载和运行磁盘上可运行文件的库调用。然后,你接着要去充实你的内核和库,以使操作系统能够在控制台上运行一个 shell。而这些特性需要一个文件系统,本实验将引入一个可读/写的简单文件系统。预备知识使用 Git 去获取最新版的课程仓库,然后创建一个命名为 lab5 的本地分支,去跟踪远程的 origin/lab5 分支:<pre class="prettyprint linenums">athena% cd ~/6.828/labathena% add gitathena% git pullAlready up-to-date.athena% git checkout -b lab5 origin/lab5Branch lab5 set up to track remote branch refs/remotes/origin/lab5.Switched to a new branch "lab5"athena% git merge lab4Merge made by recursive......athena%</pre>在实验中这一部分的主要新组件是文件系统环境,它位于新的 fs 目录下。通过检查这个目录中的所有文件,我们来看一下新的文件都有什么。另外,在 user 和 lib 目录下还有一些文件系统相关的源文件。fs/fs.c 维护文件系统在磁盘上结构的代码fs/bc.c 构建在我们的用户级页故障处理功能之上的一个简单的块缓存fs/ide.c 极简的基于 PIO(非中断驱动的)IDE 驱动程序代码fs/serv.c 使用文件系统 IPC 与客户端环境交互的文件系统服务器lib/fd.c 实现一个常见的类 UNIX 的文件描述符接口的代码lib/file.c 磁盘上文件类型的驱动,实现为一个文件系统 IPC 客户端lib/console.c 控制台输入/输出文件类型的驱动lib/spawn.c spawn 库调用的框架代码你应该再次去运行 pingpong、primes 和 forktree,测试实验 4 完成后合并到新的实验 5 中的代码能否正…
在你的终端里探索海洋的秘密
“亲爱的,当您的命令行变得更湿润的时候会更好。这多亏了 ASCII。”<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/27/192002aozxs5jrwnqwq2xj.png">Media</a>现在,我们即将数完长达 24 天的 Linux 命令行玩具日历。离今天只剩一周了!如果这是您第一次访问本系列文章,那么您可能会问自己什么是命令行玩具。我们一边走,一边说,但一般来说,这可能是一个游戏,或者可以帮助你在终端玩得开心的任何简单的娱乐活动。你们其中的一些人可能已经在以前的系列文章中看到了各种各样的命令行玩具。但是,我们希望每个人都能够获得一个新玩具。今天的玩具有一点鱼的味道。先和 asciiquarium 打个招呼,一个在你终端里海底冒险的玩具。我是在我的 Fedora 仓库里发现 asciiquarium 的,因此安装它非常容易:<pre class="prettyprint linenums">$ sudo dnf install asciiquarium</pre>如果您正在运行不同的发行版,那么它也可能已经为您打包。 只需在您的终端中运行 asciiquarium 即可感受到蛤蜊的快乐。 该项目也在终端之外进行了“翻译”,所有水族伙伴的屏保都是为几个非 Linux 操作系统制作的,甚至还有一个 Android 动态壁纸版本。访问 asciiquarium <a href="https://robobunny.com/projects/asciiquarium/html/">主页</a>了解更多信息或下载 Perl 源代码。 该项目是 GPL 第 2 版许可证下的开源项目。 如果你想更多地了解开源,开放数据和开放科学如何在实际的海洋中发挥作用,请花点时间去了解<a href="https://opensource.com/article/18/12/protecting-world-oceans">海洋健康…
“亲爱的,当您的命令行变得更湿润的时候会更好。这多亏了 ASCII。”<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/27/192002aozxs5jrwnqwq2xj.png">Media</a>现在,我们即将数完长达 24 天的 Linux 命令行玩具日历。离今天只剩一周了!如果这是您第一次访问本系列文章,那么您可能会问自己什么是命令行玩具。我们一边走,一边说,但一般来说,这可能是一个游戏,或者可以帮助你在终端玩得开心的任何简单的娱乐活动。你们其中的一些人可能已经在以前的系列文章中看到了各种各样的命令行玩具。但是,我们希望每个人都能够获得一个新玩具。今天的玩具有一点鱼的味道。先和 asciiquarium 打个招呼,一个在你终端里海底冒险的玩具。我是在我的 Fedora 仓库里发现 asciiquarium 的,因此安装它非常容易:<pre class="prettyprint linenums">$ sudo dnf install asciiquarium</pre>如果您正在运行不同的发行版,那么它也可能已经为您打包。 只需在您的终端中运行 asciiquarium 即可感受到蛤蜊的快乐。 该项目也在终端之外进行了“翻译”,所有水族伙伴的屏保都是为几个非 Linux 操作系统制作的,甚至还有一个 Android 动态壁纸版本。访问 asciiquarium <a href="https://robobunny.com/projects/asciiquarium/html/">主页</a>了解更多信息或下载 Perl 源代码。 该项目是 GPL 第 2 版许可证下的开源项目。 如果你想更多地了解开源,开放数据和开放科学如何在实际的海洋中发挥作用,请花点时间去了解<a href="https://opensource.com/article/18/12/protecting-world-oceans">海洋健康…
糖尿病患者们是怎样使用开源造出自己的医疗设备的
Red Hat 的 2018 女性开源社区奖获得者 Dana Lewis 的故事。Media
via https://linux.cn/article-10391-1.html
Red Hat 的 2018 女性开源社区奖获得者 Dana Lewis 的故事。Media
via https://linux.cn/article-10391-1.html
糖尿病患者们是怎样使用开源造出自己的医疗设备的
Red Hat 的 2018 女性开源社区奖获得者 Dana Lewis 的故事。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/27/194646n3swww32uj3r5wnm.png">Media</a>Dana Lewis 被评选为<a href="https://www.redhat.com/en/about/women-in-open-source">开源社区 2018 年度最佳女性</a>!下面是开源怎样改善了她的健康的故事。Dana 患有 I 型糖尿病,但当时市面上流通的药品和医疗设备都对她无效。她用来管理血糖的动态血糖监测(CGM)报警器的声音太小了,根本叫不醒熟睡的她,产品这样的设计无法保证她每天睡眠时间的生命安全。“我和生产厂家见了一面商议提出意见,厂家的回复是‘我们产品的音量已经足够大了,很少有人叫不醒’,我被告知‘这不是普遍问题,我们正在改进,请期待我们的新产品。’听到这些时我真的很挫败,但我从没想象过我能做出什么改变,毕竟那是通过了 FDA 标准的医疗设备,不是我们能随意改变的。”面临着这些阻碍,Dana 想着如果她能把自己的数据从设备里导出,就可以设置手机闹铃来叫醒自己。在 2013 年末,她看到的一条推特解决了她的疑问。那条推特的作者是一位糖尿病患儿的家长,他把动态血糖监测仪进行了逆向工程,这样就可以导出孩子的血糖数据进行远程监控了。她意识到如果对方愿意把过程分享给她,她也可以用那些代码做一个自己的响亮的血糖监测仪了。“我并不知道向别人要源代码是件稀松平ñ…
Red Hat 的 2018 女性开源社区奖获得者 Dana Lewis 的故事。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/27/194646n3swww32uj3r5wnm.png">Media</a>Dana Lewis 被评选为<a href="https://www.redhat.com/en/about/women-in-open-source">开源社区 2018 年度最佳女性</a>!下面是开源怎样改善了她的健康的故事。Dana 患有 I 型糖尿病,但当时市面上流通的药品和医疗设备都对她无效。她用来管理血糖的动态血糖监测(CGM)报警器的声音太小了,根本叫不醒熟睡的她,产品这样的设计无法保证她每天睡眠时间的生命安全。“我和生产厂家见了一面商议提出意见,厂家的回复是‘我们产品的音量已经足够大了,很少有人叫不醒’,我被告知‘这不是普遍问题,我们正在改进,请期待我们的新产品。’听到这些时我真的很挫败,但我从没想象过我能做出什么改变,毕竟那是通过了 FDA 标准的医疗设备,不是我们能随意改变的。”面临着这些阻碍,Dana 想着如果她能把自己的数据从设备里导出,就可以设置手机闹铃来叫醒自己。在 2013 年末,她看到的一条推特解决了她的疑问。那条推特的作者是一位糖尿病患儿的家长,他把动态血糖监测仪进行了逆向工程,这样就可以导出孩子的血糖数据进行远程监控了。她意识到如果对方愿意把过程分享给她,她也可以用那些代码做一个自己的响亮的血糖监测仪了。“我并不知道向别人要源代码是件稀松平ñ…
如何在 Linux 中安装 Rust 编程语言
Rust 通常被称为 rust-lang。Rust 是一个由 Mozilla Research 赞助的通用的、多范式、现代的、跨平台和开源系统编程语言。Media
via https://linux.cn/article-10392-1.html
Rust 通常被称为 rust-lang。Rust 是一个由 Mozilla Research 赞助的通用的、多范式、现代的、跨平台和开源系统编程语言。Media
via https://linux.cn/article-10392-1.html
如何在 Linux 中安装 Rust 编程语言
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/29/112734kg41ft1f5o1ffz05.jpg">Media</a>Rust 通常被称为 rust-lang。Rust 是一个由 Mozilla Research 赞助的通用的、多范式、现代的、跨平台和开源系统编程语言。它旨在实现安全性、速度和并发性等目标。Rust 在语法上与 C++ 相似,但它的设计者希望它在保持性能的同时提供更好的内存安全性。Rust 目前在许多组织中使用,例如 Firefox、Chef、Dropbox、Oracle、GNOME 等。如何在 Linux 中安装 Rust 语言?我们可以通过多种方式安装 Rust,但以下是官方推荐的安装方式。<pre class="prettyprint linenums">$ curl https://sh.rustup.rs -sSf | shinfo: downloading installerWelcome to Rust!This will download and install the official compiler for the Rust programming language, and its package manager, Cargo.It will add the cargo, rustc, rustup and other commands to Cargo's bin directory, located at: /home/daygeek/.cargo/binThis path will then be added to your PATH environment variable by modifying theprofile files located at: /home/daygeek/.profile /home/daygeek/.bash_profileYou can uninstall at any time with rustup self uninstall and these changes willbe reverted.Current installation options: default host triple: x86_64-unknown-linux-gnu default toolchain: stable modify PATH variable: yes1) Proceed with installation (default)2) Customize installation3) Cancel installation>1info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'info: latest update on 2018-12-06, rust version 1.31.0 (abe02cefd 2018-12-04)info: downloading component 'rustc' 77.7 MiB / 77.7 MiB (100 %) 1.2 MiB/s ETA: 0 s info: downloading component 'rust-std' 54.2 MiB / 54.2 MiB (100 %) 1.2 MiB/s ETA: 0 s info: downloading component 'cargo' 4.7 MiB / 4.7 MiB (100 %) 1.2 MiB/s ETA: 0 s info: downloading component 'rust-docs' 8.5 MiB / 8.5 MiB (100 %) 1.2 MiB/s ETA: 0 s info: installing component 'rustc'info: installing component 'rust-std'info: installing component 'cargo'info: installing component 'rust-docs'info: default toolchain set to 'stable' stable installed - rustc 1.31.0 (abe02cefd 2018-12-04)Rust is installed now. Great!To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH environment variable. Next time you log in this will be done automatically.To configure your current shell run source $HOME/.cargo/env</pre>运行以下命令配置当前 shell。<pre class="prettyprint linenums">$ source $HOME/.cargo/env</pre>运行以下命令验证已安装的 Rust 版本。<pre class="prettyprint linenums">$ rustc --versionrustc 1.31.0 (abe02cefd 2018-12-04)</pre>如何测试 Rust 编程语言?安装 Rust 后,请按照以下步骤检查 Rust 语言是否正常工作。<pre class="prettyprint linenums">$ mkdir ~/projects$ cd ~/projects$ mkdir hello_world$ cd hello_…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/29/112734kg41ft1f5o1ffz05.jpg">Media</a>Rust 通常被称为 rust-lang。Rust 是一个由 Mozilla Research 赞助的通用的、多范式、现代的、跨平台和开源系统编程语言。它旨在实现安全性、速度和并发性等目标。Rust 在语法上与 C++ 相似,但它的设计者希望它在保持性能的同时提供更好的内存安全性。Rust 目前在许多组织中使用,例如 Firefox、Chef、Dropbox、Oracle、GNOME 等。如何在 Linux 中安装 Rust 语言?我们可以通过多种方式安装 Rust,但以下是官方推荐的安装方式。<pre class="prettyprint linenums">$ curl https://sh.rustup.rs -sSf | shinfo: downloading installerWelcome to Rust!This will download and install the official compiler for the Rust programming language, and its package manager, Cargo.It will add the cargo, rustc, rustup and other commands to Cargo's bin directory, located at: /home/daygeek/.cargo/binThis path will then be added to your PATH environment variable by modifying theprofile files located at: /home/daygeek/.profile /home/daygeek/.bash_profileYou can uninstall at any time with rustup self uninstall and these changes willbe reverted.Current installation options: default host triple: x86_64-unknown-linux-gnu default toolchain: stable modify PATH variable: yes1) Proceed with installation (default)2) Customize installation3) Cancel installation>1info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'info: latest update on 2018-12-06, rust version 1.31.0 (abe02cefd 2018-12-04)info: downloading component 'rustc' 77.7 MiB / 77.7 MiB (100 %) 1.2 MiB/s ETA: 0 s info: downloading component 'rust-std' 54.2 MiB / 54.2 MiB (100 %) 1.2 MiB/s ETA: 0 s info: downloading component 'cargo' 4.7 MiB / 4.7 MiB (100 %) 1.2 MiB/s ETA: 0 s info: downloading component 'rust-docs' 8.5 MiB / 8.5 MiB (100 %) 1.2 MiB/s ETA: 0 s info: installing component 'rustc'info: installing component 'rust-std'info: installing component 'cargo'info: installing component 'rust-docs'info: default toolchain set to 'stable' stable installed - rustc 1.31.0 (abe02cefd 2018-12-04)Rust is installed now. Great!To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH environment variable. Next time you log in this will be done automatically.To configure your current shell run source $HOME/.cargo/env</pre>运行以下命令配置当前 shell。<pre class="prettyprint linenums">$ source $HOME/.cargo/env</pre>运行以下命令验证已安装的 Rust 版本。<pre class="prettyprint linenums">$ rustc --versionrustc 1.31.0 (abe02cefd 2018-12-04)</pre>如何测试 Rust 编程语言?安装 Rust 后,请按照以下步骤检查 Rust 语言是否正常工作。<pre class="prettyprint linenums">$ mkdir ~/projects$ cd ~/projects$ mkdir hello_world$ cd hello_…
在 Linux 终端收听广播
MPlayer 是一个多功能的开源媒体播放器,它在 Linux 命令行中非常有用。Media
via https://linux.cn/article-10393-1.html
MPlayer 是一个多功能的开源媒体播放器,它在 Linux 命令行中非常有用。Media
via https://linux.cn/article-10393-1.html
在 Linux 终端收听广播
MPlayer 是一个多功能的开源媒体播放器,它在 Linux 命令行中非常有用。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/29/113239cii055al7hnsx764.png">Media</a>你已经看到我们为期 24 天的 Linux 命令行玩具日历。如果这是你第一次访问该系列,你可能会问自己什么是命令行玩具。它可能是一个游戏或任何简单的消遣,可以帮助你在终端玩得开心。你们中的一些人之前已经看过我们日历中的各种玩具,但我们希望每个人至少见到一件新玩具。在命令行中有很多方法可以听音乐。如果你有本地存储的媒体,cmus 是一个很好的选择,但还有<a href="https://opensource.com/life/16/8/3-command-line-music-players-linux">很多其他选择</a>。不过,很多时候,当我在终端的时候,我会走神并且不会注意挑选每首歌,并让其他的来做。虽然为了这个我有很多播放列表,但过了一段时间,即使过时,我也会切换到互联网电台。今天的玩具,MPlayer,是一个多功能的多媒体播放器,几乎可以支持任何你给它的媒体格式。如果尚未安装 MPlayer,你可能会发现它已在你的发行版中打包。在 Fedora 中,我在 <a href="https://rpmfusion.org/">RPM Fusion</a> 中找到了它(请注意,这不是 Fedora 的“官方”仓库,因此请谨慎操作):<pre class="prettyprint linenums">$ sudo dnf install mplayer</pre>MPlayer 有一系列命令行选项可根据你的具体情况进行设置。我想听 Raleigh 当地的大学广播电台(<a href="https://wknc.org/index.php">88.1 WKN</a>,这个很棒!),在它们的网站得到流媒体网址之后,像这样就可以让…
MPlayer 是一个多功能的开源媒体播放器,它在 Linux 命令行中非常有用。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/29/113239cii055al7hnsx764.png">Media</a>你已经看到我们为期 24 天的 Linux 命令行玩具日历。如果这是你第一次访问该系列,你可能会问自己什么是命令行玩具。它可能是一个游戏或任何简单的消遣,可以帮助你在终端玩得开心。你们中的一些人之前已经看过我们日历中的各种玩具,但我们希望每个人至少见到一件新玩具。在命令行中有很多方法可以听音乐。如果你有本地存储的媒体,cmus 是一个很好的选择,但还有<a href="https://opensource.com/life/16/8/3-command-line-music-players-linux">很多其他选择</a>。不过,很多时候,当我在终端的时候,我会走神并且不会注意挑选每首歌,并让其他的来做。虽然为了这个我有很多播放列表,但过了一段时间,即使过时,我也会切换到互联网电台。今天的玩具,MPlayer,是一个多功能的多媒体播放器,几乎可以支持任何你给它的媒体格式。如果尚未安装 MPlayer,你可能会发现它已在你的发行版中打包。在 Fedora 中,我在 <a href="https://rpmfusion.org/">RPM Fusion</a> 中找到了它(请注意,这不是 Fedora 的“官方”仓库,因此请谨慎操作):<pre class="prettyprint linenums">$ sudo dnf install mplayer</pre>MPlayer 有一系列命令行选项可根据你的具体情况进行设置。我想听 Raleigh 当地的大学广播电台(<a href="https://wknc.org/index.php">88.1 WKN</a>,这个很棒!),在它们的网站得到流媒体网址之后,像这样就可以让…
UCloud研发副总裁杨镭:技术的初心是什么?
Cloud 研发副总裁杨镭首谈 UCloudStack、保护客户隐私、回馈开源社区背后的故事和挑战。Media
via https://linux.cn/article-10394-1.html
Cloud 研发副总裁杨镭首谈 UCloudStack、保护客户隐私、回馈开源社区背后的故事和挑战。Media
via https://linux.cn/article-10394-1.html
UCloud 技术副总裁杨镭:技术的初心是什么?
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/29/113701rfalnabdr5tnottx.jpeg">Media</a>UCloud 技术副总裁杨镭首谈 UCloudStack、保护客户隐私、回馈开源社区背后的故事和挑战。日前,Linux 中国社区的老王参加了 UCloud 用户大会,并有幸和 UCloud 技术副总裁杨镭进行了面谈。以下将我们谈话中一些内容分享给大家。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/29/114034g3puz1sz5hhpq30s.jpg">Media</a><em>杨镭,UCloud 技术</em><em>副总裁。全面负责 UCloud 产品研发和产品运营工作,有超过十年 IT & 互联网行业从业经验,在网络领域拥有丰富的经验和深刻的理解。</em>为什么专门开发了 UCloudStack?<strong>今天的大会上面您提出一个针对私有云的</strong> <strong>UCloudStack</strong><strong>,</strong><strong>是否可以给我们详细介绍一下为什么在有了生态很成熟的</strong> <strong>OpenStack</strong> <strong>的情况下</strong><strong>,UCloud</strong> <strong>还投入了巨大的资源去研发</strong><strong>UCloudStack</strong><strong>?</strong> 杨镭:我们在 OpenStack 上做的还比较早的,当时我们的认知就是公有云是公有云,而私有云 OpenStack 做的比较好。但实际上,通过不断的时间验证,我们发现 OpenStack 有一个比较大的问题,就是过于复杂。回到用户对私有云需求来讲,用户实际上关注的还是能不能解决他的需求,而不是说要不要用 OpenStack。所以,我们考虑到,既然已经有了多年的云计算的开发和运维经验,如果从头开始做一个自己的私有云产品,是不是会做的更好?我们做了 16 个月就做出来了这个产品,在完成…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/29/113701rfalnabdr5tnottx.jpeg">Media</a>UCloud 技术副总裁杨镭首谈 UCloudStack、保护客户隐私、回馈开源社区背后的故事和挑战。日前,Linux 中国社区的老王参加了 UCloud 用户大会,并有幸和 UCloud 技术副总裁杨镭进行了面谈。以下将我们谈话中一些内容分享给大家。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/29/114034g3puz1sz5hhpq30s.jpg">Media</a><em>杨镭,UCloud 技术</em><em>副总裁。全面负责 UCloud 产品研发和产品运营工作,有超过十年 IT & 互联网行业从业经验,在网络领域拥有丰富的经验和深刻的理解。</em>为什么专门开发了 UCloudStack?<strong>今天的大会上面您提出一个针对私有云的</strong> <strong>UCloudStack</strong><strong>,</strong><strong>是否可以给我们详细介绍一下为什么在有了生态很成熟的</strong> <strong>OpenStack</strong> <strong>的情况下</strong><strong>,UCloud</strong> <strong>还投入了巨大的资源去研发</strong><strong>UCloudStack</strong><strong>?</strong> 杨镭:我们在 OpenStack 上做的还比较早的,当时我们的认知就是公有云是公有云,而私有云 OpenStack 做的比较好。但实际上,通过不断的时间验证,我们发现 OpenStack 有一个比较大的问题,就是过于复杂。回到用户对私有云需求来讲,用户实际上关注的还是能不能解决他的需求,而不是说要不要用 OpenStack。所以,我们考虑到,既然已经有了多年的云计算的开发和运维经验,如果从头开始做一个自己的私有云产品,是不是会做的更好?我们做了 16 个月就做出来了这个产品,在完成…
救命!我的电子邮件发不到 500 英里以外!
这是一个听起来几乎不可能的事情……我甚至有点后悔将它发到网上,因为它在一个会议上成了一则著名的酒后故事。Media
via https://linux.cn/article-10395-1.html
这是一个听起来几乎不可能的事情……我甚至有点后悔将它发到网上,因为它在一个会议上成了一则著名的酒后故事。Media
via https://linux.cn/article-10395-1.html
救命!我的电子邮件发不到 500 英里以外!
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/29/164052m11xmbbadbxyle4p.jpg">Media</a>这是一个听起来几乎不可能的事情……我甚至有点后悔将它发到网上,因为它在一个会议上成了一则著名的酒后故事。这个故事略有改动,以保护故事中的人物,以及忽略了一些无关的细节使之更有趣一些。几年前,当我接到统计系主任的电话时,我正在从事维护校园电子邮件系统的工作。“我们从部门发送电子邮件时遇到了问题。”“有什么问题?” 我问。“我们不能发送超过 500 英里的邮件,”主任解释说。“咳咳”,我被我喝的拿铁呛了一口,“您再说一遍?”“我们不能发送距这里超过 500 英里的邮件,”他重复道。 “实际上,更远一点,是 520 英里,但不能更远了。”“嗯......电子邮件真的不会这样,通常,”我说,试着让我的声音听起来不那么慌乱。我不能和一个系主任说话时显得慌乱,即使是一个像统计系这样的相对没钱的院系。 “是什么让你觉得你不能发送邮件超过 500 英里?”“这不是我<strong>认为的</strong>,”主任有点急躁地回答道。 “我们首先注意到了这种情况是几天前。”“你等了<strong>几天</strong>?” 我打断他,带点颤音说道。 “这段时间你一直你不能发送电子邮件?”“我们可以发送电子邮件。只是不超过 ——”“—— 500 英里,我知道,”我接过他的话,“我知道了。但为什么没有你早点打电话呢?”“好吧,我们没有收集&…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/29/164052m11xmbbadbxyle4p.jpg">Media</a>这是一个听起来几乎不可能的事情……我甚至有点后悔将它发到网上,因为它在一个会议上成了一则著名的酒后故事。这个故事略有改动,以保护故事中的人物,以及忽略了一些无关的细节使之更有趣一些。几年前,当我接到统计系主任的电话时,我正在从事维护校园电子邮件系统的工作。“我们从部门发送电子邮件时遇到了问题。”“有什么问题?” 我问。“我们不能发送超过 500 英里的邮件,”主任解释说。“咳咳”,我被我喝的拿铁呛了一口,“您再说一遍?”“我们不能发送距这里超过 500 英里的邮件,”他重复道。 “实际上,更远一点,是 520 英里,但不能更远了。”“嗯......电子邮件真的不会这样,通常,”我说,试着让我的声音听起来不那么慌乱。我不能和一个系主任说话时显得慌乱,即使是一个像统计系这样的相对没钱的院系。 “是什么让你觉得你不能发送邮件超过 500 英里?”“这不是我<strong>认为的</strong>,”主任有点急躁地回答道。 “我们首先注意到了这种情况是几天前。”“你等了<strong>几天</strong>?” 我打断他,带点颤音说道。 “这段时间你一直你不能发送电子邮件?”“我们可以发送电子邮件。只是不超过 ——”“—— 500 英里,我知道,”我接过他的话,“我知道了。但为什么没有你早点打电话呢?”“好吧,我们没有收集&…
如何构建一台网络引导服务器(二)
我们将向你展示如何在第一部分的基础上,重新配置网络引导镜像,以便 活动目录 中的用户帐户可以进行登录,然后从一个 NFS 服务器上自动挂载他们的家目录。Media
via https://linux.cn/article-10396-1.html
我们将向你展示如何在第一部分的基础上,重新配置网络引导镜像,以便 活动目录 中的用户帐户可以进行登录,然后从一个 NFS 服务器上自动挂载他们的家目录。Media
via https://linux.cn/article-10396-1.html
如何构建一台网络引导服务器(二)
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/29/224635ia5a06njzjy00zsz.jpg">Media</a>在 <a href="https://linux.cn/article-10379-1.html">如何构建一台网络引导服务器(一)</a> 的文章中,我们展示了如何创建一个网络引导镜像,在那个镜像中使用了一个名为 liveuser 帐户,它的家目录位于内存中,重启后家目录中的内容将全部消失。然而很多用户都希望机器重启后保存他们的文件和设置。因此,在本系列的第二部分,我们将向你展示如何在第一部分的基础上,重新配置网络引导镜像,以便 <a href="https://en.wikipedia.org/wiki/Active_Directory">活动目录</a> 中的用户帐户可以进行登录,然后从一个 NFS 服务器上自动挂载他们的家目录。本系列的第三部分,我们将向你展示网络引导客户端如何与中心化配置的 iPXE 引导菜单进行交互。设置使用 KRB5 认证的 NFS4 Home 目录按以前的文章 “<a href="https://fedoramagazine.org/secure-nfs-home-directories-kerberos">使用 Kerberos 强化共享的 NFS Home 目录安全性</a>” 的指导来做这个设置。删除 Liveuser 帐户删除本系列文章第一部分中创建的 liveuser 帐户:<pre class="prettyprint linenums">$ sudo -i# sed -i '/automaticlogin/Id' /fc28/etc/gdm/custom.conf# rm -f /fc28/etc/sudoers.d/liveuser# for i in passwd shadow group gshadow; do sed -i '/^liveuser:/d' /fc28/etc/$i; done</pre>配置 NTP、KRB5 和 SSSD接下来,我们需要将 NTP、KRB5 和 SSSD 的配置文件复制进客户端使用的镜像中,以便于它们能够使用同一个帐户:<pre class="prettyprint linenums"># MY_HOSTNAME=$(</etc/hostname)# MY_DOMAIN=${MY_HOSTNAME#*.}# dnf -y --installroot=/fc28 install ntp krb5-workstation sssd# cp /etc/ntp.conf /fc28/etc# chroot /fc28 systemctl enable ntpd.service# cp /etc/krb5.conf.d/${MY_DOMAIN%%.*} /fc28/etc/krb5.conf.d# cp /etc/sssd/sssd.conf /fc28/etc/sssd</pre>在已配置的识别服务的基础上,重新配置 sssd 提供认证服务:<pre…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/29/224635ia5a06njzjy00zsz.jpg">Media</a>在 <a href="https://linux.cn/article-10379-1.html">如何构建一台网络引导服务器(一)</a> 的文章中,我们展示了如何创建一个网络引导镜像,在那个镜像中使用了一个名为 liveuser 帐户,它的家目录位于内存中,重启后家目录中的内容将全部消失。然而很多用户都希望机器重启后保存他们的文件和设置。因此,在本系列的第二部分,我们将向你展示如何在第一部分的基础上,重新配置网络引导镜像,以便 <a href="https://en.wikipedia.org/wiki/Active_Directory">活动目录</a> 中的用户帐户可以进行登录,然后从一个 NFS 服务器上自动挂载他们的家目录。本系列的第三部分,我们将向你展示网络引导客户端如何与中心化配置的 iPXE 引导菜单进行交互。设置使用 KRB5 认证的 NFS4 Home 目录按以前的文章 “<a href="https://fedoramagazine.org/secure-nfs-home-directories-kerberos">使用 Kerberos 强化共享的 NFS Home 目录安全性</a>” 的指导来做这个设置。删除 Liveuser 帐户删除本系列文章第一部分中创建的 liveuser 帐户:<pre class="prettyprint linenums">$ sudo -i# sed -i '/automaticlogin/Id' /fc28/etc/gdm/custom.conf# rm -f /fc28/etc/sudoers.d/liveuser# for i in passwd shadow group gshadow; do sed -i '/^liveuser:/d' /fc28/etc/$i; done</pre>配置 NTP、KRB5 和 SSSD接下来,我们需要将 NTP、KRB5 和 SSSD 的配置文件复制进客户端使用的镜像中,以便于它们能够使用同一个帐户:<pre class="prettyprint linenums"># MY_HOSTNAME=$(</etc/hostname)# MY_DOMAIN=${MY_HOSTNAME#*.}# dnf -y --installroot=/fc28 install ntp krb5-workstation sssd# cp /etc/ntp.conf /fc28/etc# chroot /fc28 systemctl enable ntpd.service# cp /etc/krb5.conf.d/${MY_DOMAIN%%.*} /fc28/etc/krb5.conf.d# cp /etc/sssd/sssd.conf /fc28/etc/sssd</pre>在已配置的识别服务的基础上,重新配置 sssd 提供认证服务:<pre…
Linux 求职建议
通过对招聘网站数据的仔细研究,我们发现,即使是非常有经验的 Linux 程序员,也会在面试中陷入困境。Media
via https://linux.cn/article-10397-1.html
通过对招聘网站数据的仔细研究,我们发现,即使是非常有经验的 Linux 程序员,也会在面试中陷入困境。Media
via https://linux.cn/article-10397-1.html
Linux 求职建议
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/30/103638xo3qtjrnq8g6q3wj.jpg">Media</a>通过对招聘网站数据的仔细研究,我们发现,即使是非常有经验的 Linux 程序员,也会在面试中陷入困境。这就导致了很多优秀并且有经验的人无缘无故地找不到合适的工作,因为如今的就业市场需要我们有一些手段来提高自己的竞争力。我有两个同事和一个表哥,他们都有 RedHat 认证,管理过比较大的服务器机房,也都收到过前雇主的认真推荐。可是,在他们应聘的时候,所有的这些证书、本身的能力、工作经验好像都没有起到任何作用,他们所面对的招聘广告是某人从技术词汇中临时挑选的一些“技能片段”所组成的。现如今,礼貌变得过时了,<strong>不回应</strong>变成了发布招聘广告的公司的新沟通方式。这同样也意味着大多公司的招聘或者人事可能会<strong>错过</strong>非常优秀的应聘者。我之所以敢说的如此肯定,是因为现在招聘广告大多数看上去都非常的滑稽。<a href="http://reallylinux.com">Reallylinux.com</a> 另一位特约撰稿人 Walter ,发表过一篇关于 <a href="http://reallylinux.com/docs/wantadsmad.shtml">招聘广告疯掉了</a> 的文章。他说的也许是对的,可是我认为 Linux 工作应聘者可以通过注意招聘广告的<strong>三个关键点</strong>避免落入陷阱。<strong>首先</strong>,很少会有 Linux 系统管理员的招聘广告只针对 Linux 有要求。一定要注意很少有 Linux 系统管理员的职位是实际在服务器上跑 Linux的,反而,很多在搜索…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/30/103638xo3qtjrnq8g6q3wj.jpg">Media</a>通过对招聘网站数据的仔细研究,我们发现,即使是非常有经验的 Linux 程序员,也会在面试中陷入困境。这就导致了很多优秀并且有经验的人无缘无故地找不到合适的工作,因为如今的就业市场需要我们有一些手段来提高自己的竞争力。我有两个同事和一个表哥,他们都有 RedHat 认证,管理过比较大的服务器机房,也都收到过前雇主的认真推荐。可是,在他们应聘的时候,所有的这些证书、本身的能力、工作经验好像都没有起到任何作用,他们所面对的招聘广告是某人从技术词汇中临时挑选的一些“技能片段”所组成的。现如今,礼貌变得过时了,<strong>不回应</strong>变成了发布招聘广告的公司的新沟通方式。这同样也意味着大多公司的招聘或者人事可能会<strong>错过</strong>非常优秀的应聘者。我之所以敢说的如此肯定,是因为现在招聘广告大多数看上去都非常的滑稽。<a href="http://reallylinux.com">Reallylinux.com</a> 另一位特约撰稿人 Walter ,发表过一篇关于 <a href="http://reallylinux.com/docs/wantadsmad.shtml">招聘广告疯掉了</a> 的文章。他说的也许是对的,可是我认为 Linux 工作应聘者可以通过注意招聘广告的<strong>三个关键点</strong>避免落入陷阱。<strong>首先</strong>,很少会有 Linux 系统管理员的招聘广告只针对 Linux 有要求。一定要注意很少有 Linux 系统管理员的职位是实际在服务器上跑 Linux的,反而,很多在搜索…
在 Linux 命令行中观看彩虹猫来稍事休息
你甚至可以在终端里欣赏彩虹猫。Media今天是《Linux 命令行小玩具介绍》的第六天。在本系列文章中,我们将会探索一些娱乐用途(甚至有时完全没用)的 Linux 命令行小玩具。所有我们介绍的小玩具都是开源的。也许你会问,它们都很独特吗?是的。不过,它们对你是否独特,我就不知道了。但是,我们相信你应该能在这系列文章结束之前找到至少一个好玩的玩具。从昨天的选题继续:我们谈到了猫和彩虹。不过,在 Linux 命令行下有更有趣的彩虹和猫结合的程序吗?答案是肯定的。我们不妨看看之前可以在命令行中使用彩虹猫的方式吧。意料之中,2011 年发布的 彩虹猫 可以用 nyancat 呈现在终端中。你想念这只曾火遍网络的彩虹猫吗?看看下面这个视频记录吧,我会等你看完的。现在,让我们在终端中重新感受这个令人惊奇的体验吧。nyancat 包正在很多发行版上(比如 Arch、Debian、Gentoo、Ubuntu 等等……)都有,不过我的系统(Fedora)没有,但是我们仍然可以很轻松地从源码编译它。根据读者的一个很好的提醒,对于我来说,这应该在该系列中提及:要警惕从不受信任的来源安装应用程序,或者编译和运行你在网上找到的任何代码,就像你在这样的文章中找到这个一样。如果您不确定,请采取适当的预防措施,特别是如果您在生产机器上。从这里克隆源代码:
via https://linux.cn/article-10398-1.html?utm_source=rss&utm_medium=rss
你甚至可以在终端里欣赏彩虹猫。Media今天是《Linux 命令行小玩具介绍》的第六天。在本系列文章中,我们将会探索一些娱乐用途(甚至有时完全没用)的 Linux 命令行小玩具。所有我们介绍的小玩具都是开源的。也许你会问,它们都很独特吗?是的。不过,它们对你是否独特,我就不知道了。但是,我们相信你应该能在这系列文章结束之前找到至少一个好玩的玩具。从昨天的选题继续:我们谈到了猫和彩虹。不过,在 Linux 命令行下有更有趣的彩虹和猫结合的程序吗?答案是肯定的。我们不妨看看之前可以在命令行中使用彩虹猫的方式吧。意料之中,2011 年发布的 彩虹猫 可以用 nyancat 呈现在终端中。你想念这只曾火遍网络的彩虹猫吗?看看下面这个视频记录吧,我会等你看完的。现在,让我们在终端中重新感受这个令人惊奇的体验吧。nyancat 包正在很多发行版上(比如 Arch、Debian、Gentoo、Ubuntu 等等……)都有,不过我的系统(Fedora)没有,但是我们仍然可以很轻松地从源码编译它。根据读者的一个很好的提醒,对于我来说,这应该在该系列中提及:要警惕从不受信任的来源安装应用程序,或者编译和运行你在网上找到的任何代码,就像你在这样的文章中找到这个一样。如果您不确定,请采取适当的预防措施,特别是如果您在生产机器上。从这里克隆源代码:
git clone https://github.com/klange/nyancat.git然后使用 make 编译,并用 ./nyancat 来运行。这直接为我带来了彩虹猫体验,甚至还有个计时器来显示我享受 “彩虹猫魔法”的时间。Media你可以在 GitHub 上找到 nyancat 的源码,它正以 NCSA 许可证 开源。命令行版本的彩虹猫可在这个公共 Telnet 服务器上访问(或者用另外一个猫 netcat 也行),所以理论上来说你不必安装它。不过不幸的是,由于带宽限制,该服务器目前已经被关闭了。尽管如此,在各种老设备上连接老 Telnet 服务器上运行彩虹猫的照片还是值得一看的,说不准你还会萌生搭建一个能让大家连接的公共服务器的想法呢(如果你真的搭建了,请务必告知作者,万一他们可能会向公众分享呢?)。你想让我介绍一下你最喜爱的命令行玩具吗?请在原文下留言,作者会考虑介绍的。瞧瞧我们昨天介绍的小玩意:用 lolcat 为你的 Linux 终端增添些许色彩。明天再来看我们的下一篇文章吧!via: https://opensource.com/article/18/12/linux-toy-nyancat作者:Jason Baker 选题:lujun9972 译者:zhs852 校对:wxy本文由 LCTT 原创编译,Linux中国 荣誉推出Media
via https://linux.cn/article-10398-1.html?utm_source=rss&utm_medium=rss
用户、组及其它 Linux 特性(二)
我们继续创建和管理用户和组的 Linux 教程之旅。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/30/193339hj9zyiyosbnbdrjo.jpg">Media在正在进行的 Linux 之旅中,我们了解了<a href="https://linux.cn/article-10066-1.html">如何操作文件夹或目录,现在我们继续讨论 权限、用户 和 组,这对于确定谁可以操作哪些文件和目录是必要的。<a href="https://linux.cn/article-10370-1.html">上次,我们展示了如何创建新用户,现在我们将重新起航:你可以使用 groupadd 命令创建新组,然后随意添加用户。例如,使用:<pre class="prettyprint linenums">sudo groupadd photos</pre>这将会创建 photos 组。你需要在根目录下<a href="https://linux.cn/article-10066-1.html">创建一个目录:<pre class="prettyprint linenums">sudo mkdir /photos</pre>如果你运行 ls -l /,结果中会有如下这一行:<pre class="prettyprint linenums">drwxr-xr-x 1 root root 0 jun 26 21:14 photos</pre>输出中的第一个 root 是所属的用户,第二个 root 是所属的组。要将 /photos 目录的所有权转移到 photos 组,使用:<pre class="prettyprint linenums">chgrp photos /photos</pre>chgrp 命令通常采用两个参数,第一个参数是将要获得文件或目录所有权的组,第二个参数是希望交给组的文件或目录。接着,运行 ls -l /,你会发现刚才那一行变了:<pre class="prettyprint linenums">drwxr-xr-x 1 root photos 0 jun 26 21:14 photos</pre>你已成功将新目录的所有权转移到了 photos 组。然后,将你自己的用户和 guest 用户添加到 photos 组:<pre class="prettyprint linenums">sudo usermod <你的用户名> -a -G photossudo usermod guest -a -G photos</pre>你可能必须注销并重新登录才能看到更改,但是当你这样做时,运行 groups 会将 photos 显示为你所属的组之一。关于上面提到的 usermod 命令,需要指明几点。Ļ…
我们继续创建和管理用户和组的 Linux 教程之旅。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/30/193339hj9zyiyosbnbdrjo.jpg">Media在正在进行的 Linux 之旅中,我们了解了<a href="https://linux.cn/article-10066-1.html">如何操作文件夹或目录,现在我们继续讨论 权限、用户 和 组,这对于确定谁可以操作哪些文件和目录是必要的。<a href="https://linux.cn/article-10370-1.html">上次,我们展示了如何创建新用户,现在我们将重新起航:你可以使用 groupadd 命令创建新组,然后随意添加用户。例如,使用:<pre class="prettyprint linenums">sudo groupadd photos</pre>这将会创建 photos 组。你需要在根目录下<a href="https://linux.cn/article-10066-1.html">创建一个目录:<pre class="prettyprint linenums">sudo mkdir /photos</pre>如果你运行 ls -l /,结果中会有如下这一行:<pre class="prettyprint linenums">drwxr-xr-x 1 root root 0 jun 26 21:14 photos</pre>输出中的第一个 root 是所属的用户,第二个 root 是所属的组。要将 /photos 目录的所有权转移到 photos 组,使用:<pre class="prettyprint linenums">chgrp photos /photos</pre>chgrp 命令通常采用两个参数,第一个参数是将要获得文件或目录所有权的组,第二个参数是希望交给组的文件或目录。接着,运行 ls -l /,你会发现刚才那一行变了:<pre class="prettyprint linenums">drwxr-xr-x 1 root photos 0 jun 26 21:14 photos</pre>你已成功将新目录的所有权转移到了 photos 组。然后,将你自己的用户和 guest 用户添加到 photos 组:<pre class="prettyprint linenums">sudo usermod <你的用户名> -a -G photossudo usermod guest -a -G photos</pre>你可能必须注销并重新登录才能看到更改,但是当你这样做时,运行 groups 会将 photos 显示为你所属的组之一。关于上面提到的 usermod 命令,需要指明几点。Ļ…