这个答案根据 的值解释了当遇到 OOM 情况时内核采取的行动sysctl vm.overcommit_memory
。
当overcommit_memory
设置为0或1,overcommit
启用,并计划允许分配更多的内存比实际可用。
现在当我们在这种情况下内存不足时会发生什么?OOM 杀手如何决定先杀死哪个进程?
我有一个包含大约500 万个文件的目录。当我尝试ls
从该目录中运行该命令时,我的系统消耗了大量内存并在一段时间后挂起。除了使用ls
命令之外,有没有一种有效的方法来列出文件?
我有一个文本文件要输出到我的 shell 脚本中的一个变量。但是,我只需要前 50 个字符。
我试过使用,cat ${filename} cut -c1-50
但我得到的远远超过前 50 个字符?这可能是由于cut
寻找行(不是 100% 确定),而此文本文件可能是一个长字符串——这确实取决于。
是否有一个实用程序可以让我通过管道从cat
命令中获取前 X 个字符?
我们正在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
文件中添加上面的行吗?
我试图在这个特定示例的上下文中理解命名管道。
我输入<(ls -l)
我的终端并得到输出,bash: /dev/fd/63: Permission denied
.
如果我输入cat <(ls -l)
,我可以看到目录内容。如果我更换cat
用echo
,我觉得我得到的终端名称(或者是什么呢?)。
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 <()
它会列出目录内容。
在命名管道的情况下会发生什么?
我有一台带有 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) 我不小心打字
ssh 10.0.05
Run Code Online (Sandbox Code Playgroud)
代替
ssh 10.0.0.5
Run Code Online (Sandbox Code Playgroud)
并且非常惊讶它起作用了。我也尝试过10.005
,10.5
并且那些也自动扩展到10.0.0.5
. 我也尝试过192.168.1
,扩展到192.168.0.1
. 所有这些也适用于ping
而不是ssh
,所以我怀疑它适用于连接到任意用户提供的主机的许多其他命令。
为什么这样做?这种行为是否记录在某处?这种行为是 POSIX 的一部分还是什么?还是只是一些奇怪的实现?(使用 Ubuntu 13.10 物有所值。)
我觉得应该有一个简单的方法来做到这一点,但我的 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,但我不知道从哪里开始。
我被要求编写一个 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 的存在而不是响应。
我一直在学习一些调度概念。目前我的理解如下。
nice
的优先级值可以在-20到+20的范围内。较高的正值表示该进程具有较低的优先级。-
如本答案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
。
问题
SCHED_OTHER
非实时进程之外,我是否可以设置其他一些调度算法?从这里,我还看到我可以修改正在运行的进程的属性,
chrt -p prio pid …
Run Code Online (Sandbox Code Playgroud)