我知道交换 - 这个问题不是关于那个。在 dmesg 中,Linux (x86-64) 内核告诉我我有多少内存:
[ 0.000000] Memory: 3890880k/4915200k available (6073k kernel code, 861160k absent, 163160k reserved, 5015k data, 1596k init)
Run Code Online (Sandbox Code Playgroud)
cat /proc/meminfo 告诉我我有
MemTotal: 3910472 kB
Run Code Online (Sandbox Code Playgroud)
根据我的计算,我认为我应该正好有 4*1024*1024=4194304k RAM。这是方式比上面dmesg的行第二个数字小!
所有这些不同的数字是怎么回事?
顺便说一下,uname -a输出:
Linux pavilion 3.2.2-1.fc16.x86_64 #1 SMP Thu Jan 26 03:21:58 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud) 我的软件 RAID6 的 I/O 经常冻结大约 30 秒,之后一切都恢复正常。
冻结结束后,将其放入系统日志:
Mar 14 18:43:57 server kernel: [35649.816060] sd 5:0:23:0: [sdy] CDB: Read(10): 28 00 6c 52 68 58 00 04 00 00
Mar 14 18:43:58 server kernel: [35651.149020] mptbase: ioc0: LogInfo(0x31140000): Originator={PL}, Code={IO Executed}, SubCode(0x0000) cb_idx mptscsih_io_done
Mar 14 18:43:58 server kernel: [35651.151962] mptscsih: ioc0: task abort: SUCCESS (rv=2002) (sc=ffff8807b02dfe80)
Mar 14 18:43:58 server kernel: [35651.151967] mptscsih: ioc0: attempting task abort! (sc=ffff88002a7f30c0)
Mar 14 18:43:58 server kernel: [35651.151972] sd 5:0:23:0: [sdy] CDB: Read(10): …Run Code Online (Sandbox Code Playgroud) 我有一台带 2 个 CPU 的笔记本电脑(thinkpad)。目前,我可以使用 cat(1) 从以下文件中读取 CPU 温度:
cat /sys/class/thermal/thermal_zone0/temp
cat /sys/class/thermal/thermal_zone1/temp
cat /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_input
cat /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp3_input
cat /sys/devices/LNXSYSTM:00/LNXCPU:00/thermal_cooling/subsystem/thermal_zone1/temp
cat /sys/devices/LNXSYSTM:00/LNXCPU:01/thermal_cooling/subsystem/thermal_zone0/temp
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么内核将这些信息存储在这么多不同的地方,哪个是读取 CPU 温度的“标准”文件?
这是因为 systemd(我使用的是 Arch Linux)还是像 Slackware 这样的非系统 Linux 发行版有不同的方法?
当我执行时route -n,从哪里(从哪个structs)检索显示的信息?
我尝试执行,strace route -n但没有帮助我找到正确的存储位置。
在 Linux 中创建新进程的标准方法是复制父进程的内存占用,并成为子进程的环境,直到execv被调用。
我们在谈论什么内存占用,虚拟的(进程请求的)还是常驻的(实际使用的)?
动机:我有一个交换空间有限的设备和一个虚拟内存占用和常驻内存占用差异很大的应用程序。由于内存不足,应用程序无法分叉,并想看看尝试减少虚拟占用空间是否会有所帮助。
我想更改连接的 TCP RTO (重传超时)值,我所做的一些阅读表明我可以这样做,但没有透露在哪里以及如何更改它。
我查看了/proc/sys/net/ipv4变量,但没有一个变量与 RTO 相关。如果有人能告诉我如何改变这个值,我将不胜感激。
我想自动化一个 Linux 构建,但最终我需要运行一个看起来非常手动的步骤:make menuconfig. 这似乎在操作系统和内核配置之间同步配置?
cp git-tracked-config .config
make defconfig
make menuconfig # <- how to automate/script this?
make V=s
Run Code Online (Sandbox Code Playgroud)
基本上,如何删除对make menuconfig构建脚本的调用?
顺便说一句,这是对构建错误的反应,该错误似乎在我从未调用 make menuconfig 的情况下运行时发生:
make[1]: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'. Stop.
Run Code Online (Sandbox Code Playgroud)
似乎在 makefile 中缺少规则,可能是因为 makefile 本身不存在,或者 makefile 尚未生成/变形以包含该规则,但这是一个单独的问题。
可能有一种更聪明的方法来解决这个问题。是否还有其他我没有跟踪但应该跟踪的配置(例如 oldconfig)?
我理解无文件恶意软件的定义:
不基于文件而仅存在于内存中的恶意代码……更具体地说,无文件恶意代码……将自身附加到内存中的活动进程中……
有人可以解释一下这个附加到内存中的活动进程是如何工作的吗?
此外,针对此类攻击有哪些(内核)保护/强化可用?
在 Linux 操作系统中,PID 是否有可能被重用?
例如,一个 PID 被命名为 2252。这个 PID 是死的并从内核进程表中删除。进程表是否有可能为新进程重新使用相同的 PID,或者它不会在任何即将到来的进程中使用?
我盯着以下的输出:
% file -b /lib/x86_64-linux-gnu/*.so | grep ", for" | colrm 1 130 | sort -u
=5018237bbf012b4094027fd0b96fc22a24496ea4, for GNU/Linux 3.2.0, not stripped
9f21d, for GNU/Linux 3.2.0, stripped
bee51, for GNU/Linux 3.2.0, stripped
, for GNU/Linux 3.2.0, stripped
sha1]=2e5abcee94f3bcbed7bba094f341070a2585a2ba, for GNU/Linux 3.2.0, stripped
Run Code Online (Sandbox Code Playgroud)
GNU/Linux 3.2.0 有什么特别之处?这是在 Debian/bullseye 系统 (amd64) 上。
换句话说:GNU/Linux 3.2.0 中引入了哪些 API/功能(线程模型、安全功能...)如此重要?所需版本的显式设置将阻止用户使用某些LD_ASSUME_KERNEL值,因此我猜测有充分的理由拒绝旧值,例如LD_ASSUME_KERNEL=2.4.19(例如)。