UpFront

作者:Various

UpFront

LJ 索引,2010 年 10 月

1. 为内核 2.6.12(2005 年 6 月发布)贡献补丁的“公司”数量:82

2. 为内核 2.6.12 贡献补丁的个人数量:359

3. 为内核 2.6.12 贡献的补丁数量:1,725

4. 为内核 2.6.24(2008 年 1 月发布)贡献补丁的“公司”数量:190

5. 为内核 2.6.24 贡献补丁的个人数量:977

6. 为内核 2.6.24 贡献的补丁数量:9,831

7. 为内核 2.6.34(2010 年 5 月发布)贡献补丁的“公司”数量:188

8. 为内核 2.6.34 贡献补丁的个人数量:1,175

9. 为内核 2.6.34 贡献的补丁数量:9,443

10. 业余爱好者/顾问/学者/未知人士贡献的内核 2.6.34 补丁百分比:27.93

11. Red Hat 贡献的内核 2.6.34 补丁百分比:9.98

12. Intel 贡献的内核 2.6.34 补丁百分比:5.29

13. Novell 贡献的内核 2.6.34 补丁百分比:4.34

14. IBM 贡献的内核 2.6.34 补丁百分比:3.94

15. 自 2005 年以来,业余爱好者/顾问/学者/未知人士贡献的内核补丁百分比:38.84

16. 自 2005 年以来,Red Hat 贡献的内核补丁百分比:12.52

17. 自 2005 年以来,Novell 贡献的内核补丁百分比:7.32

18. 自 2005 年以来,IBM 贡献的内核补丁百分比:7.15

19. 自 2005 年以来,Intel 贡献的内核补丁百分比:6.71

20. Linux 基金会的白金会员(500,000 美元):6

控制您的进程

用舞台作比喻,您想在机器上运行的所有进程都像演员,而您是导演。 您控制它们何时以及如何运行。 但是,您如何做到这一点呢? 好了,让我们看看可能性。

第一步是运行可执行文件。 通常,当您运行程序时,所有输入和输出都连接到控制台。 您看到程序的输出,并且可以在键盘上键入输入。 如果在程序末尾添加一个 &,则与控制台的连接将被切断。 您的程序现在在后台运行,您可以继续在命令行上工作。 当您运行可执行文件时,shell 实际上会创建一个子进程并在该结构中运行您的可执行文件。 但是,有时您不想这样做。 假设您已经确定没有哪个 shell 足够好,因此您要编写自己的 shell。 当您进行测试时,您希望将其作为您的 shell 运行,但您可能不希望在您排除所有错误之前将其作为您的登录 shell。 您可以使用 exec 函数从命令行运行您的新 shell

exec myshell

这告诉 shell 将自身替换为您的新 shell 程序。 对于您的新 shell 而言,它看起来就像是您的登录 shell——非常酷。 您还可以使用它在受限系统中加载菜单程序。 这样,如果您的用户终止了菜单程序,他们将被注销,就像终止您的登录 shell 一样。 在某些情况下,这可能很有用。

现在您的程序正在运行,您可以用它做什么呢? 如果您需要临时暂停您的程序(可能是为了查找其他信息或运行其他程序),您可以通过键入 Ctrl-z(同时按下 Ctrl 和 z)来完成。 这会暂停您的程序并将其置于后台。 您可以一遍又一遍地执行此操作,收集暂停和“后台”作业的列表。 要找出后台有哪些作业,请使用jobsshell 函数。 这会打印出所有后台作业的列表,输出如下所示

[1]+  Stopped             man bash

如果您还想获取这些作业的进程 ID,请使用-l选项

[1]+  26711  Stopped      man bash

默认情况下,jobs为您提供暂停和正在运行的后台进程。 如果您只想查看暂停的作业,请使用-s选项。 如果您只想查看正在运行的后台作业,请使用-r选项。 完成侧边栏工作后,您如何返回到暂停和后台程序? shell 有一个名为fg的函数,可让您将程序放回前台。 如果您只是执行fg,则最后一个后台进程将被拉到前台。 如果您想选择特定的作业放到前台,请使用%选项。 因此,如果您想将作业编号 1 放到前台,请执行fg %1。 如果您希望后台作业继续工作怎么办? 当您使用 Ctrl-z 将作业放到后台时,它也会被暂停。 要使其在后台继续运行,请使用bgshell 函数(在已经暂停的作业上)。 这相当于在程序末尾使用 & 运行程序。 它将保持与控制台断开连接,但在后台继续运行。

一旦程序进入后台并继续运行,是否可以与它通信? 是的,有一种方法——信号系统。 您可以使用kill procid命令向您的程序发送信号,其中 procid 是您要向其发送信号的程序的进程 ID。 您的程序可以编写为拦截这些信号并执行操作,具体取决于已发送的信号。 您可以通过给出信号编号或符号编号来发送信号。 一些可用的信号是

  • 1: SIGHUP — 终端线路挂断

  • 3: SIGQUIT — 退出程序

  • 9: SIGKILL — 杀死程序

  • 15: SIGTERM — 软件终止信号

  • 30: SIGUSR1 — 用户定义的信号 1

  • 31: SIGUSR2 — 用户定义的信号 2

如果您只是执行kill,则发送的默认信号是 SIGTERM。 此信号告诉程序关闭,就像您退出程序一样。 有时您的程序可能不想退出,有时程序根本不会消失。 在这些情况下,请使用kill -9 procidkill -s SIGKILL procid发送 kill 信号。 这通常会杀死有问题的进程(带有极大的偏见)。

现在您可以控制程序何时何地运行,接下来是什么? 您可能想要控制程序对资源的使用。 shell 有一个名为ulimit的函数,可用于执行此操作。 此函数更改 shell 以及从 shell 启动的任何程序的某些可用资源的限制。 命令ulimit -a打印出所有资源及其当前限制。 您可以更改的资源限制取决于您的特定系统。 举个例子(这在尝试运行更大的 Java 程序时会出现),假设您需要将程序的堆栈大小增加到 10000KB。 您可以使用以下命令执行此操作ulimit -s 10000。 您还可以设置其他资源的限制,例如 CPU 时间(以秒为单位)(-t)、虚拟内存的最大量(以 KB 为单位)(-v)或核心文件的最大大小(以 512 字节块为单位)(-c)。

您可能想要控制的最后一个资源是您的程序使用的系统比例。 默认情况下,当决定程序的 CPU 运行频率时,所有程序都受到平等对待。 您可以使用nice命令来更改此设置。 普通用户可以使用 nice 将其程序的优先级从 0 降低到 19。 因此,如果您要在后台运行某些进程,但不希望它干扰您在前台运行的程序,请通过执行以下命令来运行它

nice -n 10 my_program

这会以优先级 10 而不是默认值 0 运行您的程序。 您还可以使用renice程序来更改已运行进程的优先级。 如果您有一个后台进程似乎占用了大量 CPU,您可以使用以下命令更改它

renice -n 19 -p 27666

这会将进程 27666 的优先级一直降低到 19。 普通用户只能使用 nice 或 renice 来降低进程的优先级。 root 用户可以将优先级提高,一直到 –20。 当您有真正需要尽可能多 CPU 时间的进程时,这非常方便。 如果您查看top的输出,您可以看到像 pulseaudio 这样的程序可能具有负的 niceness 值。 您不希望在看电影时音频跳过。

需要调度的系统的另一部分是对 IO 的访问,尤其是硬盘驱动器。 您可以使用ionice命令来执行此操作。 默认情况下,程序使用尽力调度算法进行调度,优先级等于 (niceness + 20) / 5。 尽力而为的优先级值介于 0 到 7 之间。 如果您在后台运行某些程序,并且不希望它干扰您的前台程序,请使用以下命令将调度算法设置为“idle”

ionice -c 3 my_program

如果您想更改已运行程序的 IO niceness,只需使用-p procid选项。 最高可能的优先级称为实时,它可以在 0 到 7 之间。 因此,如果您的进程需要首先访问 IO,请使用以下命令运行它

ionice -c 1 -n 0 my_command

就像 nice 命令的负值一样,只有 root 用户才能使用此实时调度算法。 普通用户能做的最好的事情是

ionice -c 2 -n 0 my_command

这是优先级为 0 的尽力调度算法。

现在您知道如何控制程序使用机器上的资源,您可以更改系统的交互感受。

diff -u:内核开发中的新内容

Linux 休眠可能会很快变得更快,或者只是最终会更快。Nigel Cunningham 提出了一种全新的方法来关闭系统的每个部分,以便可以将所有内容存储在磁盘上并快速恢复。 不幸的是,当前休眠代码的两位共同维护者 Pavel MachekRafael J. Wysocki 发现他的方法过于复杂且难以实施,以至于实际上永远无法完成。 不过,Nigel 对自己的想法更有信心。 他认为,Pavel 和 Rafael 发现过于复杂的地方实际上是相对简单的部分。 在讨论过程中没有达成一致,因此尚不清楚 Nigel 是否会继续他的想法。

一些文件系统,特别是 FAT,在没有大量额外空间用于复制数据的情况下,将文件切片和切块成更小的块时会遇到问题。 但从逻辑上讲,如果数据没有更改,则无需复制任何数据。 Nikanth Karthikesan 希望即使在磁盘几乎已满时也能拆分文件,因此他编写了一些系统调用 sys_split()sys_join(),以提醒系统无需复制。 关于 Nikanth 代码的质量存在一些争议,但 David Pottage 也指出,在某些关键情况下,这种类型的功能可以将视频编辑从几个小时的任务变成几分钟的任务。 他评论说:“视频文件非常大,因此简单地编辑删除一小时高清录制中的几分钟片段将涉及将几千兆字节从一个文件复制到另一个文件。” 总的来说,开发人员需要一个非常充分的理由来添加新的系统调用,因此尚不清楚 Nikanth 的代码是否会被包含在内,即使他解决了讨论中提出的各种技术问题。

在任何运行的系统上都可能发生的一件事是,由于高能粒子穿过芯片,RAM 位可能会翻转。 这发生在太空,也发生在地面上。 Brian Gordon 最近询问了修复这些 单事件翻转 (SEU) 的方法。 Andi Kleen 和其他人建议使用 ECC(纠错码)RAM,它可以补偿单个位翻转,并可以检测到多个位翻转。 但 Brian 对构建在预算内且无法访问价格昂贵的纠错 RAM 的常规系统感兴趣。 不幸的是,Andi 说这会是一个非常难以实现的功能。 Brian 谈到某种会使用校验和和冗余来维护内存完整性的系统,但 Andi 认为,即使这可以在内核中实现,也可能需要用户空间应用程序也意识到这种情况。 因此,毕竟这不是一个非常通用的解决方案。 Brian 可能会继续研究这个问题,但似乎他真的想找到一个通用的解决方案,而无需重写任何用户应用程序。

Drobo FS:优点、缺点和不足

我们这些熟悉原始 Drobo(一种容纳标准 SATA 驱动器的外部 RAID 设备)的人,一直对这个名字很棒的设备的速度和网络连接性感到失望。 当 Data Robotics 宣布 Drobo FS 时,它是原始 Drobo 的速度更快且具有网络连接的“大哥”,我决定是时候让这个小家伙就位,以取代我家中运行在少量内部驱动器上的软件 RAID 的全尺寸 Linux 塔式机。 Drobo FS 提供了一些很棒的功能

  • 千兆位速度的 NAS 功能,支持 SMB 和其他协议。

  • Apple Time Machine 兼容性,可为网络上的任何 Apple 计算机提供无缝备份。

  • DroboApps,它们是在嵌入式 Linux 操作系统上运行的插件。 这些插件种类繁多,从 BitTorrent 客户端到 NFS 服务器。

  • 通过热插拔较小的硬盘驱动器来简单地扩展到更大的硬盘驱动器。

好消息是 Drobo FS(我购买的包含五个 2TB 硬盘驱动器)易于设置,并且在网络上证明速度相当快。 尽管我在家庭网络上看到的速度不是我期望的企业级设备的速度,但我真的不认为 Drobo FS 是企业级设备,所以我对 20MB/秒的传输速率感到满意。 当然,它可以更快,但对于批量存储,它运行良好。

UpFront

不幸的是,尽管我对 DroboApps 感到兴奋,但实际上,它们的集成度不如我希望的那么好。 当然,它们可以完成工作,但配置不一致,并且在大多数情况下,它是在 SMB 共享中存储的配置文件上完成的。 对于许多 DroboApps,重启设备是激活更改的唯一方法。 此外,Drobo Dashboard 仅适用于 Windows/Mac,因此对于除最简单的设置之外的任何设置,都需要这些操作系统之一进行配置。

最糟糕的是我在启动 Drobo FS 一周后遇到的文件系统损坏。 当我家里的断路器跳闸时,我的设备断电了,并且在重新启动后,它根本无法工作。 值得赞扬的是,Data Robotics 的技术支持在周日(我在周六报告了问题)回复了我的问题,并且快速的 fsck 使我的 Drobo FS 恢复了工作。 不幸的是,为了启动 fsck,我不得不在 Windows Dashboard 程序中使用一个未记录的命令。

即使存在缺点,我认为 Drobo FS 仍有潜力成为家庭或小型企业的强大而可靠的 NAS。 也许我的文件系统损坏只是例外而不是规则。 无论如何,如果您正在寻找一种在易于使用和扩展的设备中存储大量数据的方法,那么 Drobo FS 值得一看。 即使考虑到过去几周我遇到的问题,我也推荐它。 但一定要同时购买 UPS,以防万一您碰巧断电!

让您的 Android 遵循您决定的任何三定律

前段时间,我考虑写一篇关于如何 root Android 手机并在其上安装自定义编译的 ROM 的长篇教程。 这是一项有用且有趣的活动,因为它可以让您的手机运行比官方支持的更新版本的 Android。 当然,它也会使您设备上的任何保修失效,因此并非没有风险。

UpFront

事实证明,编写一篇关于 Droid-modding 的文章并不是真正必需的。 假设您的手机已被破解,快速的 Google 搜索将为您提供 root 您的设备的说明(破解 Android 手机的最简单且最不令人兴奋的部分)。 之后,从 Marketplace 安装 Rom Manager 将允许您将各种自定义 ROM 刷到您的手机上。 我可以引导您完成整个过程,但这真的不是很困难。 对于所有黑客攻击和保修失效活动,请注意,尽管不太可能,但您有可能损坏您的手机,并且需要恢复到罐头和细绳进行通信。 别说我没警告过你。

哦,如果您正在寻找一款价格低廉但得到广泛支持的黑客设备,那么旧的 Motorola Droid 价格低廉,并且很可能仍然可用。 它不是 Android 世界中最新的手机,但我的手机正在愉快地运行 Froyo (Android 2.2),即使在撰写本文时,它尚未为 Droid 发布。 祝您黑客愉快!

非 Linux FOSS

对于开源软件,它是“尽早发布,频繁发布”,因此事情会发生变化。 对于专有软件,它是“等到他们的钱包恢复后再发布”(或者类似的东西),因此事情可能会变得有点陈旧。 如果您的 Windows 桌面感觉如此,或者只是不适合您,请使用 Emerge Desktop 为自己焕然一新。

Emerge Desktop 是 Windows 的替代“shell”(不是像 bash 这样的 shell,而是像 KDE 或 GNOME 这样的 shell——即桌面环境)。 在 Windows 上,这通常由 Windows 资源管理器提供,为方便起见,Windows 资源管理器既是窗口管理器又是 Windows 上的文件管理器。 但是,您不必使用 Windows 资源管理器。 您可以安装备用窗口管理器,而这正是 Emerge Desktop 的用途。

除其他外,Emerge Desktop 还提供系统托盘(任务栏上出现所有小图标的位置)、用于访问所有程序的桌面右键单击菜单(取代“开始”按钮)、任务栏和虚拟桌面。 还有一个时钟,它兼作输入要运行的命令的位置。

Emerge Desktop 功能以单独的小程序(系统托盘、任务栏等)的形式提供,这些小程序可以有选择地启用或禁用,也可以独立于 Emerge Desktop 运行,并根据需要与其他桌面 shell 一起使用。 小程序通过 emergeCore 小程序相互通信。

Emerge Desktop 用 C++ 编写,并使用 MinGW 编译器。 它适用于 32 位和 64 位 Windows 系统。 撰写本文时,Emerge Desktop 的最新版本是 0.5(2010 年 7 月发布)。 Emerge Desktop 的源代码根据 GPL 获得许可。

UpFront

Emerge Desktop,作者:priyodevil(来自 customize.org/screenshots/60451

Google TV:你是真棒,还是荒谬?

谷歌已牢牢地扎根于我们的生活中,有时在邪恶帝国和自由狂热者之间徘徊。 无论您使用其网站搜索互联网,使用其手机操作系统给您的母亲打电话,还是使用 Google Buzz 分享链接(真的有人使用 Buzz 吗?),您很可能每天都在使用 Google。 谷歌还希望您在晚上使用它的东西——更具体地说,是在您看电视的时候。 新的 Google TV 平台是一个软件环境,很像 Android 是手机平台一样。 问题仍然是,谷歌是否会整合用户对其观看体验的不同需求,或者仅仅提供我们需要连接到 HDMI 端口的“又一件东西”。

UpFront

我用过 Roku、XBMC、MythTV、Boxee、Popcorn Hour、GeeXboX、ASUS O!Play、Freevo,可能还有很多我记不住的。 可悲的是,它们中的每一个都在一个或多个方面存在不足。 无论是无法播放流媒体、与服务器上的本地媒体不兼容还是糟糕的用户界面,我总是需要在两到三台设备之间切换才能满足我家人的多媒体需求。

希望 Google TV 能够解决这个问题。 希望 API 足够开放,可以在不影响用户界面的情况下添加功能。 希望该软件平台足够灵活,可以在多个硬件平台上工作。 希望 Google TV 不会最终变得邪恶。 我们一定会密切关注谷歌 G 品牌最新打入您家庭的行为,并希望我们能够报告的都是好消息。 在此之前,我们需要继续购买带有大量 HDMI 端口的电视机。

LJ 商店本月特色产品:Root Superhero

Kyle “Hack and /” Rankin(这件衬衫的模特)称其为他的 Root Superhero T 恤。 您也可以成为 Root Superhero!

UpFront

Kyle Rankin 展示他的 Root Superhero T 恤

衬衫的评论者发表了如此大胆的声明,例如:“谁不想像 Kyle Rankin 一样?”,“OMGPONIES!”以及“为什么 Kyle 看起来可疑地像《海军罪案调查处:洛杉矶》中的 Callen 克里斯·奥唐纳(他也扮演过罗宾)?”

立即在 www.linuxjournalstore.com 购买,仅需 14.95 美元。

他们说了

消息灵通的人都知道通过电线传输声音是不可能的,即使有可能这样做,这件事也没有实际价值。

波士顿邮报,1865 年

我没有失败。 我只是找到了 10,000 种行不通的方法。

—托马斯·爱迪生

任何个人都没有理由在家中拥有一台电脑。

—Ken Olson(数字设备公司总裁)于 1977 年在波士顿世界未来学会大会上

我们生活在一个精美地依赖科学和技术的社会中,但几乎没有人了解科学和技术。

—卡尔·萨根

今天的编程是软件工程师努力构建更大更好的防白痴程序与宇宙试图产生更大更好的白痴之间的竞赛。 到目前为止,宇宙正在获胜。

—里奇·库克

构建软件设计有两种方法:一种方法是使其非常简单,以至于显然没有缺陷,另一种方法是使其非常复杂,以至于没有明显的缺陷。 第一种方法要困难得多。

—C. A. R. Hoare

Linux Journal 内幕人士播客

在每期新杂志上市之前,请收听 Shawn Powers 和 Kyle Rankin 为您特别幕后介绍本月的主题并讨论特色文章。 您将听到他们对 Linux Journal 中所有新鲜有趣事物的独特见解。 收听播客,深入了解他们最感兴趣的技术和他们正在从事的项目。 他们将为您提供与每期新杂志相关的有用信息和补充评论,为您的 Linux Journal 体验带来全新的维度。 Kyle 和 Shawn 始终在提供信息的同时兼顾娱乐性,因此请务必查看每一集并使用您最喜欢的播客播放器订阅。 您可以在 LinuxJournal.com 上在线收听,或下载 MP3 随身携带:www.linuxjournal.com/podcast/lj-insider

加载 Disqus 评论