小编Wil*_*ard的帖子

如何使用 cgroups 将除白名单之外的所有进程限制为单个 CPU?

有一个来自 Red Hat 的 cgroups 指南,它可能有点帮助(但没​​有回答这个问题)。

我知道如何在启动该进程的命令期间通过以下方式将特定进程限制为特定 CPU:

首先,将以下*放入/etc/cgconfig.conf:

mount {
  cpuset =  /cgroup/cpuset;
  cpu =     /cgroup/cpu;
  cpuacct = /cgroup/cpuacct;
  memory =  /cgroup/memory;
  devices = /cgroup/devices;
  freezer = /cgroup/freezer;
  net_cls = /cgroup/net_cls;
  blkio =   /cgroup/blkio;
}

group cpu0only {
  cpuset {
    cpuset.cpus = 0;
    cpuset.mems = 0;
  }
}
Run Code Online (Sandbox Code Playgroud)

然后启动一个进程并使用以下命令将其专门分配给该 cgroup:

cgexec -g cpuset:cpu0only myprocessname
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式自动限制特定进程名称的所有实例(我认为这是正确的)/etc/cgrules.conf:

# user:process  controller  destination
*:myprocessname cpuset      cpu0only
Run Code Online (Sandbox Code Playgroud)

我的问题是:我怎样才能做相反的事情?

换句话说,如何将除一组特定的白名单进程及其子进程之外的所有进程分配给受限制的 …

resources cgroups cpu-usage

27
推荐指数
1
解决办法
9152
查看次数

僵尸会有孤儿吗?孤儿们会因为收割丧尸而感到不安吗?

据我了解,僵尸进程已经死亡,但仍作为进程表中的占位符存在,直到其父进程(或者init如果僵尸进程本身是孤儿)检查其退出状态。

我对孤儿进程的理解是,它们仍然活着并运行,但其父进程已经死亡。

既然丧尸已经死了,那么它的孩子就会被视为孤儿,不是吗?他们会受到影响收割僵尸吗?具体来说,init是在收割僵尸后才收养他们作为孩子,还是会在父母变成僵尸后立即收养他们?

process-management init zombie-process

27
推荐指数
2
解决办法
1955
查看次数

dirname 和 basename vs 参数扩展

是否有任何客观理由偏爱一种形式而不是另一种形式?性能、可靠性、便携性?

filename=/some/long/path/to/a_file

parentdir_v1="${filename%/*}"
parentdir_v2="$(dirname "$filename")"

basename_v1="${filename##*/}"
basename_v2="$(basename "$filename")"

echo "$parentdir_v1"
echo "$parentdir_v2"
echo "$basename_v1"
echo "$basename_v2"
Run Code Online (Sandbox Code Playgroud)

产生:

/some/long/path/to
/some/long/path/to
a_file
a_file
Run Code Online (Sandbox Code Playgroud)

(v1 使用 shell 参数扩展,v2 使用外部二进制文件。)

shell shell-script filenames basename variable

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

wget 未记录的 -Y 选项是什么?

我注意到一个wget -Y off ...(bunch of stuff)...我以前从未遇到过的脚本。

在手册页中查找并wget --help没有找到任何内容。

但它确实作为一种选择而存在;将其与不存在的选项进行对比-Z:

# wget -Y
wget: option requires an argument -- 'Y'
Usage: wget [OPTION]... [URL]...

Try `wget --help' for more options.
# wget -Z
wget: invalid option -- 'Z'
Usage: wget [OPTION]... [URL]...

Try `wget --help' for more options.
# wget --help | grep -- -Y
# 
Run Code Online (Sandbox Code Playgroud)

这个未记录的选项是什么?

wget

24
推荐指数
1
解决办法
2403
查看次数

将 POSIX 查找限制为特定深度?

我最近注意到POSIX 规范find不包括-maxdepth主要的。

对于不熟悉的人来说,-maxdepth初级的目的是限制find下降的深度。 -maxdepth 0结果只处理命令行参数;-maxdepth 1只会直接在命令行参数等中处理结果。

如何-maxdepth仅使用 POSIX 指定的选项和工具获得与非 POSIX主节点等效的行为?

(注意:当然我可以-maxdepth 0通过仅用-prune作第一个操作数来获得等价物,但这不会扩展到其他深度。)

find posix

23
推荐指数
2
解决办法
3775
查看次数

为什么在复制有限大小的设备时指定块大小?

在在线教程中,通常建议使用以下命令将 CDROM 复制到 ISO 映像:

$ dd if=/dev/dvd of=foobar.iso bs=2048
Run Code Online (Sandbox Code Playgroud)

为什么必须指定字节大小?我注意到实际上 2048 是CDROM 映像的标准字节大小,但似乎dd没有指定bs=或也count=可以工作。

在什么情况下不指定bs=或count=从有限大小的设备复制会出现问题?

linux dd cloning hard-disk

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

如何使用“find”进行广度优先搜索?

的-depth伯〜find导致它执行深度优先搜索。

但是,默认序列不是广度优先搜索。

默认序列可以非正式地描述为“深度优先遍历,在第一次遇到节点时处理节点,而不是在回溯期间这样做”。

我确实需要广度优先搜索。我怎样才能find以这种方式表现?


例如,使用以下设置:

$ mkdir -p alpha/{bravo,charlie,delta}
$ touch alpha/charlie/{alpha,beta,gamma,phi}
Run Code Online (Sandbox Code Playgroud)

find 具有以下默认行为:

$ find alpha
alpha
alpha/charlie
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
alpha/delta
alpha/bravo
Run Code Online (Sandbox Code Playgroud)

和-depth,它执行如下:

$ find alpha -depth
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
alpha/charlie
alpha/delta
alpha/bravo
alpha
Run Code Online (Sandbox Code Playgroud)

但是,我想要的是以下(虚构的)选项:

$ find alpha -bfs
alpha
alpha/charlie
alpha/delta
alpha/bravo
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
Run Code Online (Sandbox Code Playgroud)

换句话说,在进一步进行之前,我需要在给定深度find处理/报告所有文件/目录。

我怎样才能做到这一点?

find

21
推荐指数
2
解决办法
3703
查看次数

GNU 超时的 POSIX 等价物?

GNU 核心工具 timeout命令对于某些脚本情况非常方便,如果运行速度很快,则允许使用命令的输出,如果运行时间过长,则可以跳过它。

如何近似timeout仅使用 POSIX 指定实用程序的基本行为?


(我认为它可能涉及,和的组合wait,谁知道还有什么,但也许我错过了一种更简单的方法。)sleepkill

shell-script posix timeout

19
推荐指数
1
解决办法
2172
查看次数

我怎样才能写一个不间断的空间?

一些文字处理程序具有用于输入特殊字符(包括不间断空格)的菜单。也可以复制在文字处理程序中创建的字符并将其粘贴到其他位置,例如终端或网站文本字段。然而,首先需要使用文字处理程序来生成不间断空格是不方便的。

如何直接使用键盘输入不间断空格?

keyboard special-characters

18
推荐指数
2
解决办法
1万
查看次数

交互式 shell 是否可以变为非交互式,反之亦然?

交互式 shell 是否可以变为非交互式,反之亦然?

注意:我对“交互式和非交互式之间有什么区别?”这个基本问题做了很多研究,我的研究结果让我提出了这个问题。

这个问题的序言很长,部分原因是我们对“交互式”使用什么类型的定义来回答它是至关重要的。定义可以是某个集合的任意标签;它可以描述各种属性;或者它可以为您提供可用于预测行为和理解目的的信息。 最后一种我们可以称之为“动作定义”或“动态定义”,它是最有用的。


在 中man 1p sh,给出了交互式 shell 的以下定义:

   If the -i option is present, or  if  there  are  no  operands  and  the
   shell’s  standard  input and standard error are attached to a terminal,
   the shell is considered to be interactive.
Run Code Online (Sandbox Code Playgroud)

从提到的“-i 选项”和“操作数”一词的使用来看,这是指 shell 的调用,而不是可以在运行的 shell 中检查的属性。

Bash 手册页的措辞略有不同:

   An interactive shell is one started without  non-option  arguments  and
   without the -c option whose standard …
Run Code Online (Sandbox Code Playgroud)

shell bash shell-script terminology

17
推荐指数
1
解决办法
8443
查看次数