标签 Linux 下的文章

Linux 不但拥有你认为所需的一切,还有更多可以让你高效工作的工具。

 title=

在 2021 年,有更多让人们喜欢 Linux 的理由。在这个系列中,我将分享 21 种使用 Linux 的不同理由。今天,我将与你分享为什么 Linux 是你工作的最佳选择。

每个人都希望在工作期间提高工作效率。如果你的工作通常涉及到文档、演示文稿和电子表格的工作,那么你可能已经习惯了特定的例行工作。问题在于,这个惯常的例行工作通常是由一两个特定的应用程序决定的,无论是某个办公套件还是桌面操作系统。当然,习惯并不意味着它是理想的,但是它往往会毫无疑义地持续存在,甚至影响到企业的运作架构。

更聪明地工作

如今,许多办公应用程序都在云端运行,因此如果你愿意的话,你可以在 Linux 上使用相同的方式。然而,由于许多典型的知名办公应用程序并不符合 Linux 上的文化预期,因此你可能会发现自己受到启发,想去探索其他的选择。正如任何渴望走出“舒适区”的人所知道的那样,这种微妙的打破可能会出奇的有用。很多时候,你不知道自己效率低下,因为你实际上并没有尝试过以不同的方式做事。强迫自己去探索其他方式,你永远不知道会发现什么。你甚至不必完全知道要寻找的内容。

LibreOffice

Linux(或任何其他平台)上显而易见的开源办公主力之一是 LibreOffice。它具有多个组件,包括文字处理器、演示软件、电子表格、关系型数据库界面、矢量绘图等。它可以从其他流行的办公应用程序中导入许多文档格式,因此从其他工具过渡到 LibreOffice 通常很容易。

然而,LibreOffice 不仅仅是一个出色的办公套件。LibreOffice 支持宏,所以机智的用户可以自动完成重复性任务。它还具有终端命令的功能,因此你可以在不启动 LibreOffice 界面的情况下执行许多任务。

想象一下,比如要打开 21 个文档,导航到文件菜单,到导出打印菜单项,并将文件导出为 PDF 或 EPUB。这至少需要 84 次以上的点击,可能要花费一个小时的时间。相比之下,打开一个文档文件夹,并转换所有文件为 PDF 或 EPUB,只需要执行一个迅速的命令或菜单操作。转换将在后台运行,而你可以处理其他事情。只需要四分之一的时间,可能更少。

$ libreoffice --headless --convert-to epub *.docx

这是一个小改进,是由 Linux 工具集和你可以自定义环境和工作流程的便利性所潜在带来的鼓励。

Abiword 和 Gnumeric

有时,你并不需要一个大而全的办公套件。如果你喜欢简化你的办公室工作,那么使用一个轻量级和针对特定任务的应用程序可能更好。例如,我大部分时间都是用文本编辑器写文章,因为我知道在转换为 HTML 的过程中,所有的样式都会被丢弃。但有些时候,文字处理器是很有用的,无论是打开别人发给我的文档,还是因为我想用一种快速简单的方法来生成一些样式漂亮的文本。

Abiword 是一款简单的文字处理器,它基本支持流行的文档格式,并具备你所期望的文字处理器的所有基本功能。它并不意味着是一个完整的办公套件,这是它最大的特点。虽然没有太多的选择,但我们仍然处于信息过载的时代,这正是一个完整的办公套件或文字处理器有时会犯的错误。如果你想避免这种情况,那就用一些简单的东西来代替。

同样,Gnumeric 项目提供了一个简单的电子表格应用程序。Gnumeric 避免了任何严格意义上的电子表格所不需要的功能,所以你仍然可以获得强大的公式语法、大量的函数,以及样式和操作单元格的所有选项。我不怎么使用电子表格,所以我发现自己在极少数需要查看或处理分类账中的数据时,对 Gnumeric 相当满意。

Pandoc

通过专门的命令和文件处理程序,可以最小化。pandoc 命令专门用于文件转换。它就像 libreoffice --headless 命令一样,只是要处理的文档格式数量是它的十倍。你甚至可以用它来生成演示文稿! 如果你的工作之一是从一个文档中提取源文本,并以多种格式交付它,那么 Pandoc 是必要的,所以你应该下载我们的攻略看看。

广义上讲,Pandoc 代表的是一种完全不同的工作方式。它让你脱离了办公应用的束缚。它将你从试图将你的想法写成文字,并同时决定这些文字应该使用什么字体的工作中分离出来。在纯文本中工作,然后转换为各种交付格式,让你可以使用任何你想要的应用程序,无论是移动设备上的记事本,还是你碰巧坐在电脑前的简单文本编辑器,或者是云端的文本编辑器。

寻找替代品

Linux 有很多意想不到的替代品。你可以从你正在做的事情中退后一步,分析你的工作流程,评估你所需的结果,并调查那些声称可以完全你的需求的新应用程序来找到它们。

改变你所使用的工具、工作流程和日常工作可能会让你迷失方向,特别是当你不知道你要找的到底是什么的时候。但 Linux 的优势在于,你有机会重新评估你在多年的计算机使用过程中潜意识里形成的假设。如果你足够努力地寻找答案,你最终会意识到问题所在。通常,你最终会欣赏你学到的东西。


via: https://opensource.com/article/21/2/linux-workday

作者:Seth Kenlon 选题:lujun9972 译者:wxy 校对:wxy

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

特斯拉可能从比特币投资中赚取了超过 6 亿美元,超过过去十年盈利

之前,特斯拉宣布购买了 15 亿美元的比特币。它没有透露其买入的比特币数量和平均买入价格。但 1 月份比特币的平均价格在 3.5 万美元左右,这意味着特斯拉应该拥有约 4.3 万个比特币。目前,比特币的交易价格接近 5.2 万美元。这意味着,如果没有卖掉的话,特斯拉拥有的比特币现在价值可能高达 22 亿美元,这可能从这笔投资中获得了超过 6 亿美元的未实现收益。

考虑到特斯拉多年来的净亏损状况,在 2020 财年才首次实现盈利,盈利额为 7.21 亿美元。特斯拉从单笔 15 亿美元的比特币购买中获得的利润,有可能比过去十年从汽车中获得的利润还要多。

这真是一盘大棋啊。

Chromebook 销量超过苹果电脑,Chrome OS 成为第二大操作系统

根据市场分析公司 IDC 的数据,Chromebook 电脑的销量超过了苹果的 Mac,而它运行的 Chrome OS 操作系统也成为第二大流行的操作系统。但苹果电脑的市场份额并没有缩小,Chromebook 主要吞食的是低端的 Windows PC 市场,这可能与疫情推动的远程教育有关。Windows 的市场份额从 2019 年的 85.4% 跌至了 2020 年的 80.5%;Chrome OS 从 6.4% 增加到 10.8%;macOS 从 6.7% 增至 7.5%。

我很想说,Linux 桌面还有指望,但是看着 Chrome OS 超越了 macOS,实在是没底气说。

因北美严寒,Linux 5.12 的合并窗口被“冻住”了

本周,美国多个州遭遇冬季寒潮,部分区域迎来罕见的低温和暴风雪,导致出现了大面积停电和停暖的现象。而令人想不到的是,Linux 内核的开发工作也因此受到了影响。Linux 5.12 是一个非常重要的版本,原本现在应该进入合并窗口,冻结新的特性提交,但没想到严寒导致的停电,反而让合并窗口“冻住”关不上了。

Linux 内核团队发布公告称,“为什么 5.12 合并窗口的拉取请求似乎还没有被执行,原因是由于美国西北太平洋地区的严冬天气造成的停电。”,而目前尚没有明确的时间表,在这一问题得到解决之前,5.12 的合并窗口将被搁置。

虽然这是一则趣闻,Linux 的开发也不会一直停滞下去,但是没想到发达的美国也会招致这些基础设施问题,从而影响了 Linux 的开发。

在将新配置的服务器投入工作之前,请确保你知道你正在使用什么。

当我在 Linux 上测试软件时(这是我工作中的一个常规部分),我需要使用多台运行 Linux 的不同架构的服务器。我整备机器,安装所需的软件包,运行我的测试,收集结果,并将机器返回到仓库中,以便其他人可以使用它进行测试。

由于我经常这样做(甚至一天多次),我初次登录 Linux 服务器的前 10 分钟内的工作已经成为每天的仪式。当我初次登录 Linux 服务器时,我会使用命令来收集我需要的信息来寻找某些东西。我将在本文中介绍我的过程,但请注意,在大多数情况下,我只给出命令名称,所以你需要确定这些命令的具体选项,以获得你需要的信息。阅读命令的手册页是一个很好的起点。

1、第一次接触

当我登录到一台服务器时,我做的第一件事就是检查它是否拥有我将要运行的测试所需的操作系统、内核和硬件架构。我经常会检查一台服务器已经运行了多久。虽然这对测试系统来说并不重要,因为它会被多次重启,但我还是发现这些信息很有帮助。

使用下面的命令来获取这些信息。我主要使用 Red Hat Linux 进行测试,所以如果你使用其他 Linux 发行版,请在文件名中使用 *-release 而不是 redhat-release

cat /etc/redhat-release
uname -a
hostnamectl
uptime

2、有人登录在上面吗?

一旦我知道这台机器符合我的测试需求,我需要确保没有其他人同时登录该系统运行他们自己的测试。虽然考虑到整备系统会帮我处理好这个问题,这种可能性很小,但偶尔检查一下还是有好处的 —— 尤其是当我第一次登录服务器的时候。我还会检查是否有其他用户(除了 root)可以访问系统。

使用下面的命令来查找这些信息。最后一条命令是查找 /etc/passwd 文件中具有 shell 访问权限的用户;它会跳过文件中没有 shell 访问权限或 shell 设置为 nologin 的其他服务:

who
who -Hu
grep sh$ /etc/passwd

3、物理机还是虚拟机

现在我有了属于自己的机器,我需要确定它是一台物理机还是一台虚拟机(VM)。如果是我自己整备的这台机器,我可以确定这是我要求的东西。但是,如果你使用的是一台不是你自己整备的机器,你应该检查该机器是物理机还是虚拟机。

使用以下命令来识别这些信息。如果是物理系统,你会看到供应商的名称(如 HP、IBM 等)以及服务器的品牌和型号;而在虚拟机中,你应该看到 KVM、VirtualBox 等,这取决于创建虚拟机时使用了什么虚拟化软件:

dmidecode -s system-manufacturer
dmidecode -s system-product-name
lshw -c system | grep product | head -1
cat /sys/class/dmi/id/product_name
cat /sys/class/dmi/id/sys_vendor

4、硬件

因为我经常测试连接到 Linux 机器的硬件,所以我通常使用物理服务器,而不是虚拟机。在物理机器上,我的下一步是确定服务器的硬件能力 —— 例如,运行的是什么类型的 CPU,它有多少个核心,启用了哪些标志,以及有多少内存可用于运行测试。如果我正在运行网络测试,我会检查连接到服务器的以太网或其他网络设备的类型和容量。

使用以下命令来显示连接到 Linux 服务器的硬件。其中一些命令在新的操作系统版本中可能会被废弃,但你仍然可以从 yum 存储库中安装它们或切换到它们的等效新命令:

lscpu or cat /proc/cpuinfo
lsmem or cat /proc/meminfo
ifconfig -a
ethtool <devname>
lshw
lspci
dmidecode

5、已安装的软件

测试软件总是需要安装额外的依赖包、库等。然而,在安装任何东西之前,我都会检查已经安装了什么(包括是什么版本),以及配置了哪些存储库,这样我就知道软件来自哪里,并可以调试任何软件包安装问题。

使用下面的命令来确定安装了什么软件:

rpm -qa
rpm -qa | grep <pkgname>
rpm -qi <pkgname>
yum repolist
yum repoinfo
yum install <pkgname>
ls -l /etc/yum.repos.d/

6、运行的进程和服务

检查了安装的软件之后,自然就会检查系统上有哪些进程在运行。当在系统上运行性能测试时,这一点至关重要 —— 如果一个正在运行的进程、守护进程、测试软件等占用了大部分 CPU/RAM,那么在运行测试之前停止该进程是有意义的。这也可以检查测试所需的进程或守护进程是否已经启动并运行。例如,如果测试需要 httpd 运行,那么即使安装了软件包,启动守护进程的服务也可能没有运行。

使用以下命令来识别系统上正在运行的进程和已启用的服务:

pstree -pa 1
ps -ef
ps auxf
systemctl

7、网络连接

如今的机器网络化程度很高,它们需要与网络上的其他机器或服务进行通信。我会识别服务器上哪些端口是开放的,是否有到测试机器的任何网络连接,是否启用了防火墙,如果启用了,是否屏蔽了任何端口,以及机器与哪些 DNS 服务器对话。

使用以下命令来识别网络服务相关信息。如果一个过时的命令不可用,请从 yum 存储库中安装它或使用等效的新命令:

netstat -tulpn
netstat -anp
lsof -i
ss
iptables -L -n
cat /etc/resolv.conf

8、内核

在进行系统测试时,我发现了解内核相关的信息是很有帮助的,比如内核版本和加载了哪些内核模块。我还会列出任何可调整的内核参数以及它们的设置,并检查启动运行中的内核时使用的选项。

使用以下命令来识别这些信息:

uname -r
cat /proc/cmdline
lsmod
modinfo <module>
sysctl -a
cat /boot/grub2/grub.cfg

9、日志

现在,我已经对服务器有了很好的了解,包括安装了哪些软件,运行了哪些进程。还有一件事我无法逃避,那就是日志文件 —— 我需要知道在哪里可以查看不断更新的信息。

使用以下命令查看系统的日志:

dmesg
tail -f /var/log/messages
journalctl

接下来的步骤

虽然命令和实用程序会发生变化,但它们所显示的基本信息大致不变。在你专注于掌握哪些命令之前,你需要对你要寻找的信息以及它属于什么类别有一个宏观的看法。

由于 Linux 将大部分信息保存在文件中,这些命令基本上是从文件中读取信息,并以一种易于理解的方式呈现出来。下一步的好做法是找出每个命令用来获取信息显示的文件。一个提示:寻找这些信息的方法是 strace 命令。


via: https://opensource.com/article/20/12/linux-server

作者:Gaurav Kamathe 选题:lujun9972 译者:wxy 校对:wxy

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

从 2006 年开始转战 Linux 系统后,经过几年的实践,我的软件设置在过去十年内出人意料的固定。再过十年回顾一下,看看发生了什么,也许会非常有趣。在写这篇推文时,我迅速回顾了正在运行的内容:

htop overview

动机

我的软件介绍排序不分先后:

  • 程序应该运行在本地系统中以便我可以控制它,这其中并不包括云解决方案。
  • 程序应在终端中运行,以便于在任何地方连贯地使用它们,包括性能稍差的电脑或手机。
  • 通过使用终端软件,可以实现自动聚焦键盘。只有在一些有意义的地方,我会更喜欢使用鼠标,因为在打字期间一直伸手去拿鼠标感觉像在浪费时间。有时候过了一个小时我才注意到甚至还没有插鼠标。
  • 最好使用快速高效的软件,我不喜欢听到风扇的声音和感到房间在变热。我还可以继续长久地运行旧硬件,已经使用了 10 年的 Thinkpad x200s 还能很好地支持我所使用的软件。
  • 组合。我不想手动执行每个步骤,而是在需要时自动执行更多操作,这时自然是支持 shell。

操作系统

十二年前移除 Windows 系统后,我在 Linux 系统上经历了一个艰难的开始,当时我手上只有 Gentoo Linux 系统的安装光盘和一本打印的说明书,要用它们来实现一个可运行的 Linux 系统。虽然花费了几天的时间去编译和修整,但最终还是觉得自己受益颇多。

自此我再也没有转回 Windows 系统,但在持续的编译压力导致风扇失灵后,我将我的电脑系统切换到 Arch Linux。之后我将其他的电脑和私人服务器也切换到了 Arch Linux。作为一个滚动发布发行版,你可以随时升级软件包,但 Arch Linux News 已经详细报道了其中最主要的漏洞。

不过,令人烦恼的是一旦你更新了旧的内核模组,Arch Linux 就会移除旧版的相关信息。我经常注意到一旦我试着插入一个 USB 闪存盘,内核就无法加载相关组件。相反,每次内核升级后都应该进行重启。有一些 方法 可以解决这个问题,但我还没有实际地使用它们。

其他程序也会出现类似的情况,通常 Firefox 、 cron 或者 Samba 在升级后都需要重启,但恼人的是,它们没有警告你存在这种情况。我在工作中使用的 SUSE 很好地提醒了这种情况。

对于 DDNet 产品服务器,相较于 Arch Linux ,我更倾向于 Debian 系统,这样在每次升级时出现故障的几率更低。我的防火墙和路由器使用了 OpenBSD ,它拥有干净系统、文档和强大的 pf 防火墙,而我现在不需要一个单独的路由器。

窗口管理器

从我开始使用 Gentoo 后,我很快注意到 KDE 的编译时间非常长,这让我没办法继续使用它。我四处寻找更简单的解决方案,最初使用了 OpenboxFluxbox。某次,为了能更多进行纯键盘操作,我开始尝试转入平铺窗口管理器,并在研究其初始版本的时候学习了 dwmawesome

最终,由于 xmonad的灵活性、可扩展性以及使用纯 Haskell(一种出色的函数编程语言)编写和配置,最终选择了它。一个例子是,我在家中运行一个 40" 4K 的屏幕,但经常会将它分为四个虚拟屏幕,每个虚拟屏幕显示一个工作区,每个工作区自动排列在我的窗口上。当然, xmonad 有一个对应的 模块

dzenconky 对我来说是一个非常简单的状态栏。我的整体 conky 配置看起来是这样的:

out_to_console yes
update_interval 1
total_run_times 0

TEXT
${downspeed eth0} ${upspeed eth0} | $cpu% ${loadavg 1} ${loadavg 2} ${loadavg 3} $mem/$memmax | ${time %F %T}

输入命令直接通过管道输入 dzen2:

conky | dzen2 -fn '-xos4-terminus-medium-r-normal-*-12-*-*-*-*-*-*-*' -bg '#000000' -fg '#ffffff' -p -e '' -x 1000 -w 920 -xs 1 -ta r

对我而言,一项重要功能是在完成工作后使终端发出蜂鸣声。只需要简单地在 zsh 中的 PR_TITLEBAR 变量中添加一个 \a 字符就可以做到,只要工作完成就可以发出蜂鸣声。当然,我使用了命令:

echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf

pcspkr 内核模块列入黑名单来禁用实际的蜂鸣声。相反 urxvt 的 URxvt.urgentOnBell: true 设置会将声音变为尖锐。之后 xmonad 有一个 urgency 钩子来捕捉这类信号,并且我可以使用组合键自动聚焦到当前的发出紧急信号的窗口。在 dzen 中我可以看到一个漂亮且明亮的 #ff0000 紧急窗口。

在我笔记本上所得到的最终成品是:

Laptop screenshot

我听说前几年 i3 变得非常流行,但它要求更多的手动窗口对齐而不是自动对齐。

我意识到也有像 tmux 那样的终端多路复用器,但我仍想要一些图形化应用程序,因此最终我没有有效地使用它们。

终端连续性

为了使终端保持活跃状态,我使用了 dtach ,它只是模拟屏幕分离功能。为了使计算机上的每个终端都可连接和断开,我编写了一个小的封装脚本。 这意味着,即使必须重新启动 X 服务器,我也可以使所有终端都运行良好,包括本地和远程终端。

Shell & 编程

对于 shell,我使用 zsh 而不是 bash,因为它有众多的功能。

作为终端模拟,我发现 urxvt 足够轻巧,支持 Unicode 编码和 256 色,具有出色的性能。另一个重要的功能是可以分别运行 urxvt 客户端和守护进程。因此,即使大量终端也几乎不占用任何内存(回滚缓冲区除外)。

对我而言,只有一种字体看起来绝对干净和完美: Terminus。 由于它是位图字体,因此所有内容都是完美像素,渲染速度极快且 CPU 使用率低。为了能使用 CTRL-WIN-[1-7] 在每个终端按需切换字体,我的 ~/.Xdefaults 包含:

URxvt.font: -xos4-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*
dzen2.font: -xos4-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*

URxvt.keysym.C-M-1: command:\033]50;-xos4-terminus-medium-r-normal-*-12-*-*-*-*-*-*-*\007
URxvt.keysym.C-M-2: command:\033]50;-xos4-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*\007
URxvt.keysym.C-M-3: command:\033]50;-xos4-terminus-medium-r-normal-*-18-*-*-*-*-*-*-*\007
URxvt.keysym.C-M-4: command:\033]50;-xos4-terminus-medium-r-normal-*-22-*-*-*-*-*-*-*\007
URxvt.keysym.C-M-5: command:\033]50;-xos4-terminus-medium-r-normal-*-24-*-*-*-*-*-*-*\007
URxvt.keysym.C-M-6: command:\033]50;-xos4-terminus-medium-r-normal-*-28-*-*-*-*-*-*-*\007
URxvt.keysym.C-M-7: command:\033]50;-xos4-terminus-medium-r-normal-*-32-*-*-*-*-*-*-*\007

URxvt.keysym.C-M-n: command:\033]10;#ffffff\007\033]11;#000000\007\033]12;#ffffff\007\033]706;#00ffff\007\033]707;#ffff00\007
URxvt.keysym.C-M-b: command:\033]10;#000000\007\033]11;#ffffff\007\033]12;#000000\007\033]706;#0000ff\007\033]707;#ff0000\007

对于编程和书写,我使用 Vim 语法高亮显示和 ctags 进行索引,以及一些带有 grepsed 和其他用于搜索和操作的常用终端窗口。这可能不像 IDE 那样舒适,但可以实现更多的自动化。

Vim 的一个问题是你已经习惯了它的键映射,因此希望在任何地方都使用它们。

在 shell 功能不够强大时,PythonNim 作为脚本语言也不错。

系统监控

htop (查看当前站点的后台运行,是托管服务器的实时视图)非常适合快速了解软件的当前运行状态。 lm\_sensors 可以监控硬件温度、风扇和电压。 powertop 是一款由 Intel 发布的优秀省电小工具。 ncdu 可以交互式分析磁盘使用情况。

nmap、 iptraf-ng、 tcpdumpWireshark 都是分析网络问题的基本工具。

当然还有很多更优秀的工具。

邮件 & 同步

在我的家庭服务器上,我为自己所有的邮箱账号运行了 fetchmail 守护进程。fetchmail 只是检索收到的邮件并调用 procmail

#!/bin/sh
for i in /home/deen/.fetchmail/*; do
 FETCHMAILHOME=$i /usr/bin/fetchmail -m 'procmail -d %T' -d 60
done

配置非常简单,然后等待服务器通知我们有新的邮件:

poll imap.1und1.de protocol imap timeout 120 user "[email protected]" password "XXX" folders INBOX keep ssl idle

我的 .procmailrc 配置包含一些备份全部邮件的规则,并将邮件整理在对应的目录下面。例如,基于邮件列表名或者邮件标题:

MAILDIR=/home/deen/shared/Maildir
LOGFILE=$HOME/.procmaillog
LOGABSTRACT=no
VERBOSE=off
FORMAIL=/usr/bin/formail
NL="
"

:0wc
* ! ? test -d /media/mailarchive/`date +%Y`
| mkdir -p /media/mailarchive/`date +%Y`

# Make backups of all mail received in format YYYY/YYYY-MM
:0c
/media/mailarchive/`date +%Y`/`date +%Y-%m`

:0
* ^From: .*(.*@.*.kit.edu|.*@.*.uka.de|.*@.*.uni-karlsruhe.de)
$MAILDIR/.uni/

:0
* ^list-Id:.*lists.kit.edu
$MAILDIR/.uni-ml/

[...]

我使用 msmtp 来发送邮件,它也很好配置:

account default
host smtp.1und1.de
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
auth on
from [email protected]
user [email protected]
password XXX

[...]

但是到目前为止,邮件还在服务器上。 我的文档全部存储在一个目录中,我使用 Unison 在所有计算机之间进行同步。Unison 可以视为双向交互式 rsync,我的邮件是这个文件目录下的一部分,因此它们最终存储在我的电脑上。

这也意味着,尽管邮件会立即到达我的邮箱,但我只是按需拿取,而不是邮件一到达时就立即收到通知。

从此我使用 mutt 阅读邮件,使用侧边栏显示我的邮件目录。 /etc/mailcap 文件对于显示非纯文本邮件( HTML, Word 或者 PDF)不可或缺:

text/html;w3m -I %{charset} -T text/html; copiousoutput
application/msword; antiword %s; copiousoutput
application/pdf; pdftotext -layout /dev/stdin -; copiousoutput

新闻 & 通讯

Newsboat 是一个非常棒的终端 RSS/Atom 阅读器。我在一个有约 150 个提要的 tach 会话服务器上运行它。也可以在本地选择提要,例如:

ignore-article "https://forum.ddnet.tw/feed.php" "title =~ \"Map Testing •\" or title =~ \"Old maps •\" or title =~ \"Map Bugs •\" or title =~ \"Archive •\" or title =~ \"Waiting for mapper •\" or title =~ \"Other mods •\" or title =~ \"Fixes •\""

我以同样的方式使用 Irssi 进行 IRC 通讯。

日历

remind 是一个可以从命令行获取的日历。通过编辑 rem 文件可以设置新的提醒:

# One time events
REM 2019-01-20 +90 Flight to China %b

# Recurring Holidays
REM 1 May +90 Holiday "Tag der Arbeit" %b
REM [trigger(easterdate(year(today()))-2)] +90 Holiday "Karfreitag" %b

# Time Change
REM Nov Sunday 1 --7 +90 Time Change (03:00 -> 02:00) %b
REM Apr Sunday 1 --7 +90 Time Change (02:00 -> 03:00) %b

# Birthdays
FSET birthday(x) "'s " + ord(year(trigdate())-x) + " birthday is %b"
REM 16 Apr +90 MSG Andreas[birthday(1994)]

# Sun
SET $LatDeg 49
SET $LatMin 19
SET $LatSec 49
SET $LongDeg -8
SET $LongMin -40
SET $LongSec -24

MSG Sun from [sunrise(trigdate())] to [sunset(trigdate())]
[...]

遗憾的是,目前 remind 中还没有中国农历的提醒功能,因此中国的节日不易计算。

我给提醒设置了两个名字:

rem -m -b1 -q -g

按时间顺序查看待办事项清单

rem -m -b1 -q -cuc12 -w$(($(tput cols)+1)) | sed -e "s/\f//g" | less

显示适应终端宽度的日历:

remcal

字典

rdictcc 是鲜为人知的字典工具,它可以使用 dict.cc 很棒的词典并将他们转存在本地数据库中:

$ rdictcc rasch
====================[ A => B ]====================
rasch:
 - apace
 - brisk [speedy]
 - cursory
 - in a timely manner
 - quick
 - quickly
 - rapid
 - rapidly
 - sharpish [Br.] [coll.]
 - speedily
 - speedy
 - swift
 - swiftly
rasch [gehen]:
 - smartly [quickly]
Rasch {n} [Zittergras-Segge]:
 - Alpine grass [Carex brizoides]
 - quaking grass sedge [Carex brizoides]
Rasch {m} [regional] [Putzrasch]:
 - scouring pad
====================[ B => A ]====================
Rasch model:
 - Rasch-Modell {n}

记录和阅读

我有一个简单记录任务的备忘录,在 Vim 会话中基本上一直处于打开状态。我也使用备忘录作为工作中“已完成”工作的记录,这样就可以检查自己每天完成了哪些任务。

对于写文件、信件和演示文稿,我会使用 LaTeX 进行高级排版。德式的简单信件可以这样设置,例如:

\documentclass[paper = a4, fromalign = right]{scrlttr2}
\usepackage{german}
\usepackage{eurosym}
\usepackage[utf8]{inputenc}
\setlength{\parskip}{6pt}
\setlength{\parindent}{0pt}

\setkomavar{fromname}{Dennis Felsing}
\setkomavar{fromaddress}{Meine Str. 1\\69181 Leimen}
\setkomavar{subject}{Titel}

\setkomavar*{enclseparator}{Anlagen}

\makeatletter
\@setplength{refvpos}{89mm}
\makeatother

\begin{document}
\begin{letter} {Herr Soundso\\Deine Str. 2\\69121 Heidelberg}
\opening{Sehr geehrter Herr Soundso,}

Sie haben bei mir seit dem Bla Bla Bla.

Ich fordere Sie hiermit zu Bla Bla Bla auf.

\closing{Mit freundlichen Grüßen}

\end{letter}
\end{document}

我的私人网站 上可以找到更多的示例文档和演示文稿。

Zathura 读取 PDF 文件速度很快,支持 Vim 类控件,还支持两种不同的 PDF 后端: Poppler 和 MuPDF。另一方面,在偶尔遇到 Zathura 无法打开的文件时,Evince 则显得更全能一些。

图片编辑

简便的选择是,GIMPInkscape 分别用于照片编辑和交互式向量图形。

有时 Imagemagick 已经足够好了,它可以从命令行直接使用,从而自动编辑图片。同样 GraphvizTikZ 可以用来绘制曲线图和其他图表。

Web 浏览器

对于 Web 浏览器,我一直在使用 Firefox。相较于 Chrome,它的可扩展性更好,资源使用率更低。

不幸的是,在 Firefox 完全改用 Chrome 风格的扩展之后, Pentadactyl 扩展的开发就停止了,所以我的浏览器中再也没有令人满意的 Vim 类控件了。

媒体播放器

通过设置 vo=gpu 以及 hwdec=vaapi,具有硬件解码功能的 mpv 在播放期间 CPU 的占用率保持在 5%。相较于默认的 PulseAudio,mpv 中的 audio-channels=2 似乎可以使我的立体扬声器/耳机获得更清晰的降级混频。一个很棒的小功能是用 Shift-Q 退出,而不是只用 Q 来保存回放位置。当你与母语是其他语言的人一起看视频时,你可以使用 --secondary-sid= 同时显示两种字幕,主字幕位于底部,次字幕位于屏幕顶部。

我的无线鼠标可以简单地通过一个小的配置文件( ~/.config/mpv/input.conf )实现远程控制 mpv :

MOUSE_BTN5 run "mixer" "pcm" "-2"
MOUSE_BTN6 run "mixer" "pcm" "+2"
MOUSE_BTN1 cycle sub-visibility
MOUSE_BTN7 add chapter -1
MOUSE_BTN8 add chapter 1

youtube-dl 非常适合观看在线托管的视频,使用 -f bestvideo+bestaudio/best --all-subs --embed-subs 命令可获得最高质量的视频。

作为音乐播放器, MOC 不再活跃开发,但它仍是一个简易的播放器,可以播放各种可能的格式,包括最不常用的 Chiptune 格式。在 AUR 中有一个 补丁 增加了 PulseAudio 支持。即使在 CPU 时钟频率降到 800 MHz, MOC 也只使用了单核 CPU 的 1-2% 。

moc

我的音乐收藏夹保存在我的家庭服务器上,因此我可以从任何地方访问它。它使用 SSHFS 挂载并自动安装在 /etc/fstab/ 目录下:

root@server:/media/media /mnt/media fuse.sshfs noauto,x-systemd.automount,idmap=user,IdentityFile=/root/.ssh/id_rsa,allow_other,reconnect 0 0

跨平台构建

除了 Linux 本身,它对于构建任何主流操作系统的软件包都很优秀! 一开始,我使用 QEMU 与旧版 Debian、 Windows 以及 Mac OS X VM 一起构建这些平台。

现在我在旧版 Debian 发行版上转而使用 chroot (以获得最大的 Linux 兼容性),在 Windows 上使用 MinGW 进行交叉编译,在 Mac OS X 上则使用 OSXCross

用于 构建 DDNet 的脚本以及 更新库构建的说明 的脚本都基于这个。

备份

通常,我们都会忘记备份。即使这是最后一节,它也不应该成为事后诸葛。

十年前我写了 rrb (反向 rsync 备份)重新封装了 rsync ,因此我只需要将备份服务器的 root SSH 权限授予正在备份的计算机。令人惊讶地是,尽管我一直在使用 rrb ,但它在过去十年里没有任何改变。

备份文件直接存储在文件系统中。使用硬链接实现增量备份(--link-dest)。一个简单的 配置 定义了备份保存时间,默认为:

KEEP_RULES=( \
   7  7 \ # One backup a day for the last 7 days
  31  8 \ # 8 more backups for the last month
 365 11 \ # 11 more backups for the last year
1825  4 \ # 4 more backups for the last 5 years
)

因为我的一些计算机没有静态 IP / DNS 但仍想使用 rrb 备份,那我会使用反向安全隧道(作为 systemd 服务):

[Unit]
Description=Reverse SSH Tunnel
After=network.target

[Service]
ExecStart=/usr/bin/ssh -N -R 27276:localhost:22 -o "ExitOnForwardFailure yes" server
KillMode=process
Restart=always

[Install]
WantedBy=multi-user.target

现在,隧道运行备份时,服务器可以通过 ssh -p 27276 localhost 命令或者使用 .ssh/config 到达服务器端。

Host cr-remote
 HostName localhost
 Port 27276

在谈及 SSH 技巧时,有时由于某些中断的路由会很难访问到服务器。在那种情况下你可以借道其他服务器的 SSH 连接,以获得更好的路由。在这种情况下,你可能通过美国连接访问到我的中国服务器,而来自德国的不可靠连接可能需要几个周:

Host chn.ddnet.tw
 ProxyCommand ssh -q usa.ddnet.tw nc -q0 chn.ddnet.tw 22
 Port 22

结语

感谢阅读我工具的收藏。这其中我也许遗漏了许多日常中自然成习惯的步骤。让我们来看看我的软件设置在下一年里能多稳定吧。如果你有任何问题,随时联系我 [email protected]

Hacker News 下评论吧。


via: https://hookrace.net/blog/linux-desktop-setup/

作者:Dennis Felsing 选题:lujun9972 译者:chenmu-kk 校对:wxy

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

多年来,set\_fs() 一直是众所周知的麻烦,现在它终于消失了。

Linus Torvalds 开启了 Linux 内核的又一个开发周期,宣布 5.10-rc1 发布了,而且这一次还有一个历史性的转折:新内核标志着一个几十年前的函数的落幕,这个函数在被发现会导致安全漏洞后早已成为多余的函数。

随着长达两周的,每一次新的 Linux 内核迭代发布前的合并窗口的关闭,Torvalds 在 Linux 内核邮件列表上分享了他的感想,他认为“事情似乎相当顺利”。

“合并窗口”是 Linux 新内核发布过程中的一个关键部分,在此窗口期间,每天有多达 1000 个由开发者社区提交的补丁被合并到 Torvalds 管理的主线仓库中。而审查过程会确保每个补丁都能实现理想的变化。

这一次,Torvalds 提请大家注意移除了一个叫 set_fs() 的寻址函数,这个函数可以追溯到 Linux 的最初版本。“对我来说,这是最有趣的变化,set_fs() 被移除了,”他写道,“这不是一个巨大的变化,但很有趣,因为 set_fs() 指定用户空间副本是否真正进入用户空间或内核空间的这个模式,几乎可以追溯到 Linux 的最初版本。”

正如 Torvalds 所解释的那样,set_fs() 函数可以通过取消用户空间和内核空间之间的分界来覆盖地址空间。该函数在管理英特尔早期 x86 处理器时被广泛使用,以控制非特权代码可以访问的虚拟地址范围。

然而,2010 年,“常见漏洞和暴露”(CVE)详细披露了 set_fs() 带来的安全问题。通过绕过某些访问限制,证实该函数能够“覆盖任意内核内存位置”和“获得特权” —— 在某些情况下,这可以让用户空间覆盖内核数据。

鉴于该工具的安全缺陷,包括 x86、PowerPC、s390 和 RISC-V 在内的一些架构已经取消了地址空间覆盖功能。但是,正如 Torvalds 写道:“我们仍然留着 set_fs(),因为并不是每个架构都已经转换为新的世界秩序。”

除了这个久违的历史补救之外,5.10-rc1 版本和大多数内核版本一样,还伴随着无数的变化。Torvalds 统计了近 1700 人的近 1.4 万次提交,改动范围从支持自动驾驶汽车和机器人的 Nvidia SOC 芯片到支持任天堂 Switch 控制器。

统计结果表明。大约新增了 70.4 万行代码和删除了 41.9 万行代码,这使得 5.10-rc1 的大小与 Linux 有史以来最大的内核 5.8 相当。“这看起来是一个比我预期的更大的版本,虽然合并窗口比 5.8 的窗口小,但也小不了多少,”Torvalds 说,“而 5.8 是我们有史以来最大的版本。”

按照 Linux 典型的时间表,5.10-rc1 之后将有几个星期时间来提交修复问题的补丁,在预计 12 月发布稳定内核之前,将发布几个候选版本。


via: https://www.zdnet.com/article/linux-5-10-finally-ditches-decades-old-tool-that-caused-security-bugs/

作者:Daphne Leprince-ringuet 译者:wxy 校对:wxy

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

Jack Wallen 认为,Microsoft Linux 是 Microsoft 桌面操作系统的下一个演进方向。他解释了为什么这将是一个对 Microsoft、IT 专业人士、用户和 Linux 社区的双赢。

我尊敬的同事 Steven J. Vaughan-Nichols 在姊妹网站 ZDNet 上发表了一篇出色的文章,名为《基于 Linux 的 Windows 非常有意义》,他在文中讨论了 Eric S. Raymond 的观点,即我们正接近桌面战争的最后阶段。Vaughan-Nichols 猜测,下一个合乎逻辑的步骤是在 Linux 内核上运行的 Windows 界面。

这是有道理的,尤其是考虑到微软在 Windows 的 Linux 子系统(WSL) 上的努力。然而,从我过去几年所目睹的一切来看,我认为可以得出一个对微软更有意义的结论。

Microsoft Linux: 为什么它是最好的解决方案

一度,微软的最大摇钱树是软件,确切地说是 Windows 和 Microsoft Office。但是,就像科技行业中的所有事物一样,进化也在发生,而拒绝进化的科技公司失败了。

微软明白这一点,并且它已经进化了。一个恰当的例子是:Microsoft Azure。微软的云计算服务,以及 AWSGoogle Cloud 已经成为这个不断变化的行业的巨大推动力。Azure 已成为微软新世界的摇钱树 —— 多到以至于这家在桌面电脑市场上享有垄断地位的公司已经开始意识到,或许还有更好的方式来利用桌面计算机。

这种优势很容易通过 Linux 来实现,但不是你可能想到的 Linux。Vaughan-Nichols 所建议的 Microsoft Linux 对于微软来说可能是一个很好的垫脚石,但我相信该公司需要做出一个更大的飞跃。我说的是登月规模的飞跃 —— 这将使所有参与者的生活变得更加轻松。

我说的是深入 Linux 领域。忘掉在 Linux 内核上运行 Windows 10 界面的桌面版本吧,最后承认 Microsoft Linux 可能是当今世界的最佳解决方案。

微软发布一个完整的 Linux 发行版将对所有参与者来说意味着更少的挫败感。微软可以将其在 Windows 10 桌面系统上的开发工作转移到一个更稳定、更可靠、更灵活、更经考验的桌面系统上来。微软可以从任意数量的桌面系统中选择自己的官方风格:GNOME、KDE、Pantheon、Xfce、Mint、Cinnamon... 不胜枚举。微软可以按原样使用桌面,也可以为它们做出贡献,创造一些更符合用户习惯的东西。

开发:微软并没有摆脱困境

这并不意味着微软在开发方面将摆脱困境。微软也希望对 Wine 做出重大贡献,以确保其所有产品均可在兼容层上顺畅运行,并且默认集成到操作系统中,这样最终用户就不必为安装 Windows 应用程序做任何额外的工作。

Windows 用户需要 Defender

微软开发团队也希望将 Windows Defender 移植到这个新的发行版中。等一等。什么?我真的是在暗示 Microsoft Linux 需要 Windows Defender 吗?是的,我确定。为什么?

最终用户仍然需要防范 网络钓鱼 诈骗 phishing scams 、恶意 URL 和其他类型的攻击。普通的 Windows 用户可能不会意识到,Linux 和安全使用实践的结合远比 Windows 10 和 Windows Defender 要安全得多。所以,是的,将 Windows Defender 移植到 Microsoft Linux 将是保持用户基础舒适的一个很好的步骤。

这些用户将很快了解在台式计算机上工作的感觉,而不必处理 Windows 操作系统带来的日常困扰。更新更流畅、更值得信赖、更安全,桌面更有意义。

微软、用户和 IT 专业人士的双赢

微软一直在尽其所能将用户从标准的基于客户端的软件迁移到云和其他托管解决方案,并且其软件摇钱树已经变成了以网络为中心和基于订阅的软件。所有这些 Linux 用户仍然可以使用 Microsoft 365 和它必须提供的任何其他 软件即服务 Software as a Service (SaaS)解决方案——所有这些都来自于 Linux 操作系统的舒适性和安全性。

这对微软和消费者而言是双赢的,因为这样 Windows 没有那么多令人头疼的事情要处理(通过捕获漏洞和对其专有解决方案进行安全补丁),消费者可以得到一个更可靠的解决方案而不会错过任何东西。 如果微软打对了牌,他们可以对 KDE 或几乎任何 Linux 桌面环境重新设置主题,使其与 Windows 10 界面没有太大区别。

如果布局得当,消费者甚至可能都不知道其中的区别——“Windows 11” 将仅仅是 Microsoft 桌面操作系统的下一个演进版本。

说到胜利,IT 专业人员将花费更少的时间来处理病毒、恶意软件和操作系统问题,而把更多的时间用于保持网络(以及为该网络供动力的服务器)的运行和安全上。

大卖场怎么办?

这是个关键的地方。为了让这一做法真正发挥作用,微软将不得不完全放弃 Windows,转而使用自己风格的 Linux。基于同样的思路,微软需要确保大卖场里的 PC 都安装了 Microsoft Linux 系统。没有半途而废的余地——微软必须全力以赴,以确保这次转型的成功。

一旦大卖场开始销售安装了 Microsoft Linux 的 PC 和笔记本电脑,我预测这一举措对所有相关人员来说将会是一个巨大的成功。微软会被视为终于推出了一款值得消费者信赖的操作系统;消费者将拥有一个这样的桌面操作系统,它不会带来太多令人头疼的事情,而会带来真正的生产力和乐趣;Linux 社区最终将主导桌面计算机。

Microsoft Linux:时机已到

你可能会认为这个想法很疯狂,但如果你真的仔细想想,微软 Windows 的演进就是朝着这个方向发展的。为什么不绕过这个时间线的中途部分,而直接跳到一个为所有参与者带来成功的终极游戏呢? Microsoft Linux 正当其时。


via: https://www.techrepublic.com/article/could-microsoft-be-en-route-to-dumping-windows-in-favor-of-linux/

作者:jack-wallen 选题:wxy 译者:gxlct008 校对:wxy

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