在进行一些基准测试工作之前,如何释放 Linux 内核为其缓冲区和缓存消耗的内存 (RAM)?
请注意,这主要用于基准测试。清空缓冲区和缓存会降低性能!如果你在这里是因为你认为释放缓冲区和缓存是一件好事,那就去读一读Linux 吃了我的 RAM!. 简短的故事:空闲内存是未使用的内存是浪费的内存。
除了“CPU 的 MMU 发送信号”和“内核将其定向到违规程序并终止它”之外,我似乎找不到任何关于此的信息。
我认为它可能将信号发送到外壳,外壳通过终止违规进程和打印来处理它"Segmentation fault"。所以我通过编写一个我称之为crsh(废话 shell)的极简 shell 来测试这个假设。除了获取用户输入并将其提供给system()方法之外,此外壳不执行任何操作。
#include <stdio.h>
#include <stdlib.h>
int main(){
    char cmdbuf[1000];
    while (1){
        printf("Crap Shell> ");
        fgets(cmdbuf, 1000, stdin);
        system(cmdbuf);
    }
}
Run Code Online (Sandbox Code Playgroud)
所以我在一个裸终端中bash运行了这个 shell(没有在下面运行)。然后我继续运行一个产生段错误的程序。如果我的假设是正确的,这将 a) 崩溃crsh,关闭 xterm,b) 不打印"Segmentation fault",或 c) 两者兼而有之。
braden@system ~/code/crsh/ $ xterm -e ./crsh
Crap Shell> ./segfault
Segmentation fault
Crap Shell> [still running]
Run Code Online (Sandbox Code Playgroud)
回到第一个,我猜。我刚刚证明了不是外壳执行此操作,而是下面的系统。“分段错误”是如何打印出来的?“谁”在做?内核?还有什么?信号及其所有副作用如何从硬件传播到程序的最终终止?
应该如何重新加载 udev 规则,以便新创建的规则可以运行?
我正在运行 Arch Linux,但udevstart这里没有命令。
还检查了/etc/rc.d,那里没有 udev 服务。
我目前在 linux 机器上遇到问题,作为 root 我有命令返回错误,因为已达到 inotify 监视限制。
# tail -f /var/log/messages
[...]
tail: cannot watch '/var/log/messages': No space left on device
# inotifywatch -v /var/log/messages
Establishing watches...
Failed to watch /var/log/messages; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via '/proc/sys/fs/inotify/max_user_watches'.` 
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了一下,我发现的每个解决方案都是通过以下方式增加限制:
sudo sysctl fs.inotify.max_user_watches=<some random high number>
Run Code Online (Sandbox Code Playgroud)
但我无法找到任何有关提高该价值的后果的信息。我猜默认内核值的设置是有原因的,但它似乎不适用于特定用途。(例如,当使用带有大量文件夹的 Dropbox 或监控大量文件的软件时)
所以这里是我的问题:
在Linux的proc(5)手册页告诉我,/proc/$pid/mem“可用于访问进程的内存的页面”。但是直接尝试使用它只会给我
$ cat /proc/$$/mem /proc/self/mem
cat: /proc/3065/mem: No such process
cat: /proc/self/mem: Input/output error
Run Code Online (Sandbox Code Playgroud)
为什么不能cat打印自己的内存(/proc/self/mem)?当我尝试打印 shell 的内存时,这个奇怪的“没有这样的进程”错误是什么(/proc/$$/mem显然进程存在)?那我怎么读/proc/$pid/mem呢?
我刚刚为 Fedora 19 安装安装了 kernel-3.11.0-1.fc20。在重新启动过程中,我看到带有 Windows 标志的 Linux 标志,这是什么意思?

Fedora 19 安装在华硕 TX300CA 笔记本电脑中,安全启动关闭,CSM(BIOS 兼容性支持模块)模式开启。
我刚刚在 Linux 上阅读了一些关于 swappiness 的东西。我不明白为什么默认设置为 60。
根据我的说法,这个参数应该设置为 10 以减少交换。交换在我的硬盘上,所以它比我的记忆慢得多。
他们为什么要这样配置内核?
Linux只是一个内核,如果用户要使用它,那么他们需要一个完整的发行版。话虽如此,当没有 Linux 发行版时,Linux 的第一个版本是如何使用的?
我对 Highmem 和 Lowmem 之间的区别感兴趣:
自己编译 Linux 内核有什么好处?您可以通过将其定制为您的硬件来提高效率吗?