我是 OpenBSD 用户。在OpenBSD FAQ 中,它说:
OpenBSD 是一个完整的系统,旨在保持同步。它不是可以单独升级的内核和实用程序。
当您升级系统时,您可以一次性完成;内核和基本系统被替换。然后你去更新你的第 3 方包。如果从源代码编译,则重新编译内核并引导它。然后你重建基本系统,然后是你已经安装的包。如果自上次重建所有内容以来已经过去了几个星期/几个月,您首先安装一个快照并从那里重建(如果您正在关注最新的 CVS 分支)。
具有不同步的内核、基本系统和/或 3rd 方软件包是潜在问题的来源,并且或多或少使您无法从官方邮件列表中获得任何认真的帮助。
我对此很满意。事实上,这也是我使用 OpenBSD 的原因之一。它使系统成为一个一致的单元,并使我很容易对它形成一个心理概述。
在 Linux 上感觉如何?我所知道的大多数 Linux 都没有与 BSD 相同意义上的“基本系统”,而是由分发提供商组装的一组软件包。然后由本地管理员以这样的方式添加更多软件,使得从一开始就有的软件和后来添加的软件之间的界限充其量是模糊的。
Linux(一般而言)是否没有强大的内核与用户空间耦合? 据我所知,内核已更新,就像任何其他软件包一样,这让我有点困惑,这完全是可能的。除此之外,有些甚至编译自定义内核(在 OpenBSD 上不鼓励这样做),并且在其引导菜单中列出了多种不同的内核版本。
谁或什么保证 Linux 系统的各个子系统能够相互协作,即使它们彼此独立更新?
我问的原因是因为该站点上的另一个用户问我是否可以用更新的版本替换他的 Linux 系统中的内核“可行”。从 OpenBSD 方面来看,我不能说是的,这将保证不会破坏系统。
我使用上面的“Linux”作为“Linux 发行版”、内核 + 实用程序的简写。
我在我的 ec2 实例上发现了恶意软件,它不断挖掘比特币并使用我的实例处理能力。我成功识别了该进程,但无法删除并终止它。
我运行了这个命令
watch "ps aux | sort -nrk 3,3 | head -n 5"
它显示了在我的实例上运行的前五个进程,从中我发现有一个进程名称“ bashd ”,它消耗了 30% 的 cpu。过程是
bashd -a cryptonight -o stratum+tcp://get.bi-chi.com:3333 -u 47EAoaBc5TWDZKVaAYvQ7Y4ZfoJMFathAR882gabJ43wHEfxEp81vfJ3J3j6FQGJxJNQTAwvmJYS2Ei8dbkKcwfPFst8FhG -p x
Run Code Online (Sandbox Code Playgroud)
我使用kill -9 process_id命令终止了这个进程。5 秒后,该过程再次开始。
在我的机器上(Debian 测试),当我这样做时
ps aux | grep pam
Run Code Online (Sandbox Code Playgroud)
我得到
orto 609 0.0 0.0 58532 2148 ? S 08:06 0:00 (sd-pam)
orto 5533 0.0 0.0 12724 1948 pts/1 S+ 16:51 0:00 grep pam
Run Code Online (Sandbox Code Playgroud)
(sd-pam)对进程来说似乎是一个奇怪的名字。阅读这个论坛,我看到这个名字是由 systemd 故意设置的。在源代码中我们看到
/* The child's job is to reset the PAM session on
* termination */
/* This string must fit in 10 chars (i.e. the length
* of "/sbin/init"), to look pretty in /bin/ps */
rename_process("(sd-pam)");
Run Code Online (Sandbox Code Playgroud)
看起来很漂亮是什么意思/bin/ps,为什么要选择(sd-pam) …
我已经听过很多次了,而且我现在大部分时间都在使用ss。但有时我会对两者之间的差异感到沮丧,我希望获得一些见解。
此外,我不可能是唯一一个在使用ss. 不是一个伟大的名字。
有没有什么可能的情况
ls -l file.txt
Run Code Online (Sandbox Code Playgroud)
显示的字节数与
wc -c file.txt
Run Code Online (Sandbox Code Playgroud)
在一个脚本中,我发现了这两个值的比较。那可能是什么原因?甚至可能有同一个文件的不同字节数吗?
我从这个 Stack Overflow 问题中了解到,可以使用vi/vim注释掉指定范围的行号。例如,假设我有以下 bash 脚本:
#!/bin/bash
This
is
my
very
very
great
script
Run Code Online (Sandbox Code Playgroud)
现在假设我想通过8注释掉行号6(包含单词very,very和great)使用#注释字符。在vi/ 中vim,我可以简单地输入:6,8s/^/#以获得以下内容:
#!/bin/bash
This
is
my
#very
#very
#great
script
Run Code Online (Sandbox Code Playgroud)
其中注释掉了第 6 行到第 8 行。
我的问题是,是否可以键入一个类似的单行代码来删除第#6 行到第 8 行的注释字符(但不会删除文件中的任何其他注释行)?
话虽如此,我意识到关于我是否实际使用vi或vim. 在实践中,我script.sh使用命令打开一个文件vi script.sh。此外,当我输入命令时which vi,我获得/usr/bin/vi. 然而,当我简单地输入vi并按下 时Enter …
该变量BUILDNUMBER设置为值 230。我希望230_为命令打印,echo $BUILDNUMBER_但输出为空,如下所示。
# echo $BUILDNUMBER_
# echo $BUILDNUMBER
230
Run Code Online (Sandbox Code Playgroud) 我可以在 Ubuntu 18.04LTS 中禁用 Spectre 和 Meltdown 缓解功能吗?
我想测试当我在 Linux 中禁用这两个功能时,我获得了多少性能,如果性能很大,则永久使用。
如何正确运行一些更改了IFS变量值的命令(以更改字段拆分的工作方式和"$*"处理方式),然后恢复 的原始值IFS?
我知道我能做到
(
IFS='my value here'
my-commands here
)
Run Code Online (Sandbox Code Playgroud)
将 的更改本地化IFS到子外壳,但我真的不想启动子外壳,尤其是如果我需要更改或设置需要在子外壳之外可见的变量的值时更是如此。
我知道我可以使用
saved_IFS=$IFS; IFS='my value here'
my-commands here
IFS=$saved_IFS
Run Code Online (Sandbox Code Playgroud)
但IFS在原始IFS实际上未设置的情况下,这似乎无法正确恢复。
寻找与 shell 无关(但 POSIX)的答案。
澄清:上面的最后一行意味着我对bash-exclusive 解决方案不感兴趣。事实上,我使用最多的系统 OpenBSDbash在默认情况下甚至根本没有安装,而且bash它不是我用来回答本网站问题以外的任何其他事情的外壳。看到我可以在bash或其他类似 POSIX 的 shell 中使用的解决方案更有趣,而无需努力编写不可移植的代码。
bash ×2
linux ×2
process ×2
shell ×2
byte ×1
dependencies ×1
kill ×1
linux-kernel ×1
ls ×1
malware ×1
netstat ×1
performance ×1
shell-script ×1
systemd ×1
variable ×1
vi ×1
vim ×1
wc ×1