2021年10月

苹果的 Safari 浏览器正在阻碍 Web 发展

Safari,或者更确切地说,为其提供动力的 WebKit 引擎,已经远远落后于竞争对手。根据 Web 平台测试仪表板,基于 Chrome 的浏览器支持 94% 的测试套件,火狐浏览器支持 91%,但 Safari 只支持 71%。在桌面上,这并不重要,因为用户可以随时切换到谷歌浏览器。然而,在 iOS 设备上,这是不可能的。由于苹果应用商店的规定,每个 iPhone 用户都是一个 Safari/WebKit 用户,无论他们使用 Safari 还是 Chrome。此外,相对于其它浏览器几周的更新周期,苹果可能需要六个月才更新一次 Safari。这意味着简单的错误修复也要等很久才能真正登陆用户的设备。

老王点评:看来 Safari 有成为新 IE 的潜力,甚至 IE 都做不到在 Windows 平台独占。

GNU 工具链开始提供 LoongArch 支持

除了龙芯在为他们的 LoongArch CPU 架构提供 Linux 内核支持外,GNU 工具链也 开始接受 对 LoongArch 的支持。GCC 对 LoongArch 的支持还没有被合并,但 GNU Binutils 中已经有了初始的 LoongArch 补丁集合。不久前,GNU Binutils 的 Git 仓库中出现了 LoongArch 对操作码、LD 链接器、GNU 汇编器、Binutils 和 BFD 的支持。

老王点评:日拱一卒,很高兴看到龙芯团队在默默推动。

大规模 DDoS 攻击导致韩国电信全网关闭 40 分钟

周一上午 11 点左右,韩国电信的用户无法访问互联网,持续时间大约 40 分钟。在此期间,用户无法使用信用卡、交易股票或访问在线应用程序。一些大型商业网站在网络中断期间也被关闭。该公司表示,其网络在全国范围内的临时关闭是由 DDoS 攻击造成的。韩国政府部门正与之配合调查,但没有证实是 DDoS 攻击,而与此同时,韩国的另外两个主要电信运营商 SK 电信和 LG Uplus 没有受到影响。

老王点评:一次干倒了国家级电信,现在的 DDoS 攻击真是愈演愈烈了。

这是一个关于如何寻找 Linux 系统僵尸进程并杀死它们的小知识。你也可以从中了解到关于进程和僵尸进程的一些知识。

在了解僵尸进程之前,让我们来复习一下什么是 Linux 进程。

简而言之,进程 是一个程序的运行实例。它可能运行在前端(比如有交互的进程),也可能运行在后端(比如无交互或自动运行的进程)。它可能是一个父进程(运行期间创建了其他进程),也可能是一个子进程(由其他进程所创建)。

在 Linux 系统中,除 PID 为 0 的第一个 init 进程(或 systemd)外,其余进程都有父进程。进程也可以拥有自己的子进程。

不相信?可以试试在终端中使用 pstree 命令查看进程的树型结构,你能看到系统各个进程的“家族树”。

Linux系统里的僵尸进程是什么?

子进程死亡后,它的父进程会接收到通知去执行一些清理操作,如释放内存之类。然而,若父进程并未察觉到子进程死亡,子进程就会进入到“ 僵尸 zombie ”状态。从父进程角度看,子进程仍然存在,即使子进程实际上已经死亡。这就是“ 僵尸进程 zombie process ”(也被称为“ 已消失进程 defunct process ”)是如何产生并存在于系统中的。

这里有一个来自 Turnoff.us 的关于僵尸进程的非常有趣的看法:

Image credit: Turnoff.us

你真的需要关心僵尸进程吗?

重点要说的是,僵尸进程并没有像它的名称那样看起来可怕。

但如果系统的内存已经所剩不多或者有太多的僵尸进程在吃掉内存,问题会变得糟糕。同样,大部分 Linux 系统进程最大 PID 设置为 32768,如果过多僵尸进程导致其他重要任务没有 PID 可用,你的系统会发生崩溃。

这是真实可能发生的,它有一定的概率,特别当存在一个编码糟糕的程序开始大量产生僵尸进程的时候。

在这种情况下,找到并杀死僵尸进程是一个明智的做法。

如何找到僵尸进程

Linux 系统中的进程可能处于如下状态中的一种:

  • D = 不可中断的休眠
  • I = 空闲
  • R = 运行中
  • S = 休眠
  • T = 被调度信号终止
  • t = 被调试器终止
  • Z = 僵尸状态

那如何查看进程和它的当前状态呢?一个简单的方法是在终端中使用 top 命令

Top command show processes and their status

正如你在上面截图中看到的,截图中共有 250 个任务(进程),其中 1 个处在 “ 运行中 running ” 状态,248 个进程处于 “ 休眠 sleep ” 状态,还有一个处于 “ 僵尸 zombie ” 状态。

现在问题进入下一步,如何杀死 “僵尸” 进程?

如何找到并杀死一个僵尸进程?僵尸进程能被杀死吗?

僵尸进程已经死了,要如何才能杀死一个已经死亡的进程呢?

在僵尸电影中,你可以射击僵尸的头部或烧掉它们,但在这里是行不通的。你可以一把火烧了系统来杀死僵尸进程,但这并不是一个可行的方案。

一些人建议发送 SIGCHLD 给父进程,但这个信号很可能会被忽略。还有一个方法是杀死父进程来杀死僵尸进程,这听起来很野蛮,但它却是唯一能确保杀死僵尸进程的方法。

首先,通过在终端中 使用 ps 命令 我们列举僵尸进程,得到它们的进程 ID:

ps ux | awk '{if($8=="Z+") print}'

ps ux 命令输出的第 8 列显示了进程状态。上述命令只会打印所有处在 Z+ 状态(表示僵尸状态)的进程。

确认了进程 ID 后,我们可以得到它的父进程 ID:

ps -o ppid= -p <child_id>

你也可以将上述两个命令结合在一起,直接得到僵尸进程的 PID 及其父进程的 PID:

ps -A -ostat,pid,ppid | grep -e '[zZ]'

现在你得到了父进程 ID,使用命令行和得到的 ID 号 终于可以杀死进程了

kill -9 <parent_process_ID>

Killing parent process

再次运行 ps 命令或 top 命令,你可以验证僵尸进程是否已经被杀死。

恭喜!现在你知道怎么清理僵尸进程了。


via: https://itsfoss.com/kill-zombie-process-linux/

作者:Marco Carmona 选题:lujun9972 译者:zengyi1001 校对:wxy

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

smem 命令允许你快速查看你的网页应用的内存使用情况。

 title=

在我的编程工作中,我经常需要了解网页应用的内存使用情况。在深入研究细节和浏览器剖析工具之前,一个粗略的估计通常就足够了。

为了了解 Linux 或 macOS 上的内存使用情况,人们通常使用 tophtop。我很想看到一个单一的数字:一个进程占用了多少内存。但这些工具所显示的统计数据可能很难理解。对于网页浏览器来说,它甚至更加复杂,因为它们经常运行许多独立的进程。它们在 top 输出中显示为一个长长的列表,每一个都有自己的单独指标。

 title=

smem 命令

幸运的是有 smem,另一个用于查看内存使用统计的命令行工具。用你选择的包管理器安装它,例如:

sudo apt install smem

要获得 Firefox 的总内存使用量,请执行:

smem -c pss -P firefox -k -t | tail -n 1

这些开关做了什么?

  • -c 开关指定要显示的列。我只对 pss 列感兴趣,它显示一个进程分配的内存。
  • -P 开关过滤进程,只包括那些名字里有 firefox 的进程。
  • -k 开关显示以 MB/GB 为单位的内存使用情况,而不是单纯的字节数。
  • -t 开关显示总数。
  • tail -n 1 过滤器只输出最后一行,也就是总数的地方。

输出是非常简单的:

$ smem -t -k -c pss -P firefox | tail -n 1
4.9G

开门见山!而且,经过又一天忙碌的工作,打开了 50 多个选项卡,Firefox 仍然只使用 5 GB。看看吧,Google Chrome。

用一个脚本更容易

为了方便起见,我创建一个名为 memory-use 的小脚本,它将进程名称作为参数。我把所有的脚本都放在 ~/bin 里,所以:

echo 'smem -c pss -P "$1" -k -t | tail -n 1' > ~/bin/memory-use && chmod +x ~/bin/memory-use

现在我可以很容易地测量任何应用的内存使用:

memory-use firefox
memory-use chrome
memory-use slack

还有更多!

该工具不仅可以显示总的内存使用情况。它甚至可以生成图形输出。

比如:

smem --pie name -c pss

显示类似这样的内容:

 title=

关于更多的细节,我建议查看 smem 手册页

你可以在 https://linoxide.com/memory-usage-reporting-smem/ 上找到另一个很棒的教程。

希望你喜欢!

本文最初发表在作者的博客上,并经许可转载。


via: https://opensource.com/article/21/10/memory-stats-linux-smem

作者:Tomasz Waraksa 选题:lujun9972 译者:geekpi 校对:wxy

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

在开源社区的强烈抗议下,微软放弃了有争议的 .NET 变化

本周早些时候,微软因为商业利益原因在即将发布的 .NET 6 中 删除 了“热重载”部分功能,从而 激怒 了 .NET 开源社区。该功能允许开发者在应用运行时修改源代码,并立即看到结果。这是一个许多人一直期待在 VS Code 和多个平台上使用的功能。直到微软在最后一刻做出了一个有争议的 决定,将其锁定在 Visual Studio 2022,这是一个仅限于 Windows 平台的付费产品。据透露,最后一刻的改变是由微软开发者部门的负责人 Julia Liuson 做出的,是一个以商业利益为考量的举措。在引起开源社区的巨大抗议后,微软现在已经推翻了这一改变。微软官方轻描淡写地 表示“无意中最终删除了源代码”,但是也承认“有时我们不能正确地处理这个问题,……我们能做的就是从我们的错误中学习”

老王点评:虽然有时候商业企业会支持开源,但是商业企业从本质上和开源的目标是不一致的。因此,有时候企业能“慷慨”地支持开源,有时候又因眼前的利益而将开源当成抹布。

阿里巴巴/蚂蚁的 OceanBase 因集赞而引发社区批评

昨天,蚂蚁旗下的再次开源的 OceanBase 数据库发起了一个 活动,邀请程序员们为其 GitHub 仓库点赞,并根据收集到的点赞数而给予从贴纸到手办的不同奖品。这一活动引发了开源社区的大量 批评,阿里巴巴集团副总裁、阿里云计算平台事业部负责人贾扬清对此在知乎上进行了回应,承认“除了搞烂一个社区活跃度指标之外,完全没有意义”,“我们在负责设计开源评判的制度,没设计好自然执行会出问题”,并表态“这种瞎搞绝对是要认真处理的”。最后表达了希望留待日后评判的意思。也有开源界意见人士对此评论,“上有所好,下必盛焉”。阿里在自己的宣传上就将点赞数列为重要成绩。

老王点评:以任何硬性指标来判断一个开源项目,只要有 PKI 驱动,就会有或主动、或被动的迎合指标的做法。可是没有指标、模型来评判,也就无法成功指导开源项目的发展。抛开主观的看法,我认为,开源项目需要一个更复杂均衡的模型,一个弹性可适应的模型。

76 岁的 EFF 共同创始人被踢出董事会

电子前沿基金会(EFF)在周五 发布声明除名John Gilmore),并给他留了一个名誉董事的角色。除名原因是“我们在如何进行最佳沟通和合作方面意见不一”,无法就 Gilmore 负责的方向达成一致。Gilmore 于 1990 年共同创立了 EFF,并在此后的 31 年里一直在 EFF 里担任职位。Gilmore 曾帮助发起了伯恩斯坦诉司法部案,该案的结果是法院裁定软件源代码是受美国第一修正案保护的言论,美国政府阻止其发布的法规是违宪的。这一裁决使得 1999 年 Web 浏览器、网站以及 PGP 和 Signal 等软件使用自己选择的加密方式成为合法。他也是一系列的 GNU 软件和 RFC 的作者或共同作者。

老王点评:究竟是老一代自由软件领袖跟不上新时代,还是他们所建立的事业偏离了他们的理想?

最近,helloSystem 的开发者发布了他们操作系统的最新版本。helloSystem 是一个较新的项目,希望以 FreeBSD 为基础创建一个简单易用的操作系统。让我们来看看这对你我意味着什么。

helloSystem 简介

helloSystem 的关于屏幕

你们中的大多数人可能以前从未听说过 helloSystem。该项目是由 AppImage 的创建者 Simon Peter 在去年年初启动的。Simon 的目标是创建一个“友好的 自由桌面 操作系统,重点是简单、简约优雅和可用性。”

Simon 从上世纪 80 、90 年代更为简单的操作系统中获得了灵感,特别是 早期的 MacOS,比如 System 1。如果你只是看一下系统运行的截图,你可能会想说,“我不明白这有什么好大惊小怪的。有一堆 Linux 发行版或主题,看起来就像 MacOS。”

该项目不仅仅是看起来像 MacOS,它想回归到更简单、更容易使用的设计。据 其网站 上讲,“helloSystem 是一个面向创作者的桌面系统,注重简单、优雅和实用性。它的设计遵循 ‘少而精’ 的理念。它的目的是为 ‘普通人’ 提供一个系统,欢迎从 Mac 切换过来的人”。你可以通过观看 Simon 在 FOSDEM 21 上的演讲,了解更多关于他对 helloSystem 计划的想法。

就像 Suckless 项目 一样,Simon 创建了一个 “欢迎和不欢迎的技术” 列表。被批准的技术清单包括:

  • Qt
  • mDNSResponder
  • Python
  • Go

helloSystem 的欢迎屏幕

“不受欢迎的技术”清单包括 Simon 认为“太复杂或被认为不美观”的东西。这些技术包括:

  • 触摸
  • btrfs
  • Gnome
  • GTK
  • 客户端窗口装饰
  • Wayland
  • Pipewire
  • XDG 桌面规范
  • 与原始字体在度量上兼容的字体,但不试图在视觉上与原始字体相似
  • 最终用户应用程序的包管理器
  • 配置文件、IP 地址
  • D-Bus
  • 通过限制用户或应用程序可以做的事情而提供的安全性
  • Polkit
  • 大写锁定键
  • 本地文件的 URI

在 helloSystem 上安装 Inkscape

helloSystem 如何工作

我最好解释一下 helloSystem 的工作方式。就像 MacOS 一样,桌面在屏幕顶部有一个全局菜单,底部有一个 Dock。与 MacOS 的 Finder 一样,helloSystem 也有一个文件管理器(名为 Filer),它也负责窗口管理。

在左上方,你会发现一个 “ 系统 System ” 菜单,你可以用它来访问应用程序。(你也可以在左上角的搜索框中输入应用程序的名称。)helloSystem 只安装了几个开箱即用的基本应用程序。如果你点击一个未安装的应用程序,helloSystem 会下载并安装该应用程序的 AppImage。

helloSystem 基于 FreeBSD 12.2。它默认启用了 ZFS。它没有密码或用户账户系统,但这并不意味着他们无视安全。据 其网站 讲,“这并不是说一般的安全问题不重要。而是说它需要以一种不会限制设备的合法用户(所有者)真正 ‘拥有’ 该设备的方式来实现。”

最新版本中的新功能

helloSystem 的实用程序窗口

最新版本的 helloSystem 包括不少图形方面的更新和小的变化,包括:

  • 从 Openbox 切换到 KWin 窗口管理器
  • 合理的窗口标题居中
  • 当窗口被拖到屏幕边缘时,会缩放到一定大小,类似于 “Aero Snap”。
  • 简化了 “ 桌面设置 Desktop Settings ” 的用户界面;现在更改会立即应用
  • 移除文件管理器中的标签以简化用户界面
  • 为菜单添加新的电池小程序,以显示电池充电量
  • 桌面上的垃圾箱图标不再有 “ 移动到垃圾箱 Move to Trash ” 的上下文菜单项
  • 最小化窗口和取消最小化窗口时的动画
  • 窗口大小调整时的动画
  • 调整内核配置以优化声音
  • 简化了文件管理器中的 “ 获取信息 Get Info ” 对话框

你可以在 这里 看到其余的变化。你也可以从同一个链接下载最新的 .iso 文件。试一试,让我们知道你的想法。


via: https://news.itsfoss.com/hellosystem-towards-first-release/

作者:John Paul Wohlscheid 选题:lujun9972 译者:wxy 校对:wxy

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