小编Ram*_*esh的帖子

OOM 杀手如何决定先杀死哪个进程?

这个答案根据 的值解释了当遇到 OOM 情况时内核采取的行动sysctl vm.overcommit_memory

overcommit_memory设置为0或1,overcommit启用,并计划允许分配更多的内存比实际可用。

现在当我们在这种情况下内存不足时会发生什么?OOM 杀手如何决定先杀死哪个进程?

linux memory out-of-memory

127
推荐指数
1
解决办法
14万
查看次数

ls 命令不适用于包含大量文件的目录

我有一个包含大约500 万个文件的目录。当我尝试ls从该目录中运行该命令时,我的系统消耗了大量内存并在一段时间后挂起。除了使用ls命令之外,有没有一种有效的方法来列出文件?

ls

86
推荐指数
3
解决办法
9万
查看次数

从 cat 命令中获取前 X 个字符?

我有一个文本文件要输出到我的 shell 脚本中的一个变量。但是,我只需要前 50 个字符。

我试过使用,cat ${filename} cut -c1-50但我得到的远远超过前 50 个字符?这可能是由于cut寻找行(不是 100% 确定),而此文本文件可能是一个长字符串——这确实取决于。

是否有一个实用程序可以让我通过管道从cat命令中获取前 X 个字符?

cut cat

72
推荐指数
4
解决办法
18万
查看次数

禁用透明大页面

我们正在RAID机器中安装 SAP HANA 。作为安装步骤的一部分,提到,

 To disable the usage of transparent hugepages set the kernel settings 
 at runtime with echo never > /sys/kernel/mm/transparent_hugepage/enabled 
Run Code Online (Sandbox Code Playgroud)

因此,如果我想让它成为永久更改,而不是运行时,我应该在/proc/vmstat文件中添加上面的行吗?

linux kernel sysctl

70
推荐指数
5
解决办法
14万
查看次数

为什么进程替换会产生一个名为 /dev/fd/63 的文件,它是一个管道?

我试图在这个特定示例的上下文中理解命名管道。

我输入<(ls -l)我的终端并得到输出,bash: /dev/fd/63: Permission denied.

如果我输入cat <(ls -l),我可以看到目录内容。如果我更换catecho,我觉得我得到的终端名称(或者是什么呢?)。

echo <(ls -l)给出输出为/dev/fd/63

此外,这个示例输出我不清楚。

ls -l <(echo "Whatever")
lr-x------ 1 root root 64 Sep 17 13:18 /dev/fd/63 -> pipe:[48078752]
Run Code Online (Sandbox Code Playgroud)

但是,如果我给出,ls -l <()它会列出目录内容。

在命名管道的情况下会发生什么?

process pipe open-files process-substitution

49
推荐指数
1
解决办法
3万
查看次数

i686 和 x86_64 包有什么区别?

我有一台带有 glibc i686 和 x86_64 的机器,还有一个非常烦人的 glibc 问题。

在一台计算机上安装两个同名的库是否正常?我怎么知道执行的是哪个库?

直到最近,我才相信 x86_64 是 i686。好吧,我一定是弄错了,但为什么呢?

    [root@machin ~]# yum info glibc
    Loaded plugins: rhnplugin, security
    This system is not registered with RHN.
    RHN support will be disabled.
    Excluding Packages in global exclude list
    Finished
    Installed Packages
    Name       : glibc
    Arch       : i686
    Version    : 2.5
    Release    : 42
    Size       : 12 M
    Repo       : installed
    Summary    : The GNU libc libraries.
    License    : LGPL
    Description: The glibc package contains standard libraries which are …
Run Code Online (Sandbox Code Playgroud)

yum package-management glibc cpu-architecture

44
推荐指数
2
解决办法
9万
查看次数

IP地址中自动添加缺失的0是怎么回事?(`ping 10.5` 相当于`ping 10.0.0.5`)

我不小心打字

ssh 10.0.05
Run Code Online (Sandbox Code Playgroud)

代替

ssh 10.0.0.5
Run Code Online (Sandbox Code Playgroud)

并且非常惊讶它起作用了。我也尝试过10.00510.5并且那些也自动扩展到10.0.0.5. 我也尝试过192.168.1,扩展到192.168.0.1. 所有这些也适用于ping而不是ssh,所以我怀疑它适用于连接到任意用户提供的主机的许多其他命令。

为什么这样做?这种行为是否记录在某处?这种行为是 POSIX 的一部分还是什么?还是只是一些奇怪的实现?(使用 Ubuntu 13.10 物有所值。)

ip hostname

36
推荐指数
2
解决办法
2602
查看次数

如何更改用于 qmake 的 Qt 版本?

我觉得应该有一个简单的方法来做到这一点,但我的 googlefu 失败了,所以我真的很感激一些关于如何切换(甚至永久更改)在执行 qmake 时使用的 Qt 版本的信息。如果我问是哪个版本,我会得到以下信息:

~ $ qmake --version
QMake version 3.0
Using Qt version 5.0.1 in /usr/lib/x86_64-linux-gnu
Run Code Online (Sandbox Code Playgroud)

我已经安装了 QtCreator,但我不知道从哪里开始。

make qt qtcreator

30
推荐指数
4
解决办法
11万
查看次数

如何从任何 URL 获得响应?

我被要求编写一个 shell 脚本来检查我的项目的 URL 是否已启动/工作。

我试图在互联网上找到一些提示,但我得到的都是关于检查 URL 是否存在。

我第一次尝试使用wget.

wget -S --spider https://genesis-dev.webbank.ssmb.com:21589/gop-ui/app.jsp 2>&1 | awk '/^  /'
if [ $? -ne 0 ]
then echo "Server is UP"
else
echo "Server is down"
fi
Run Code Online (Sandbox Code Playgroud)

我的下一次尝试是使用curl.

curl -ivs  https://genesis-dev.webbank.ssmb.com:21589/opconsole-sit/opconsole.html#
if [ $? -ne 0 ]
then echo "Server is UP"
else
echo "Server is down"
fi
Run Code Online (Sandbox Code Playgroud)

但是,两者都在检查 URL 的存在而不是响应。

shell scripting ksh shell-script

30
推荐指数
2
解决办法
31万
查看次数

Linux 中的实时进程调度

我一直在学习一些调度概念。目前我的理解如下。

  • 有实时进程和非实时进程。
  • 非实时进程nice的优先级值可以在-20+20的范围内。较高的正值表示该进程具有较低的优先级。
  • 实时进程将列出一个 niceness 值,-如本答案here中所述。这主要是因为实时进程比非实时进程具有更高的优先级,并且niceness 值不适用于它们。
  • 现在,我可以使用chrt来查看进程的实时属性。

对于实时过程,chrt给出的输出为,

chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99
Run Code Online (Sandbox Code Playgroud)

正如我们在进程5 中看到的,优先级是 99,这是最高的。此外,调度策略是SCHED_FIFO

现在,对于非实时过程,chrt给出的输出为,

chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0
Run Code Online (Sandbox Code Playgroud)

正如我们所见,进程22383的优先级为 0,调度策略为SCHED_OTHER

问题

  1. 我可以将任何过程作为实时过程吗?
  2. 除了SCHED_OTHER非实时进程之外,我是否可以设置其他一些调度算法?
  3. 这里,我还看到我可以修改正在运行的进程的属性,

    chrt -p prio pid …
    Run Code Online (Sandbox Code Playgroud)

process scheduling kernel

28
推荐指数
1
解决办法
4万
查看次数