小编Ini*_*ian的帖子

当 Solr 在 docker 中运行时优雅地停止它

我正在 docker 容器中运行 solr

我的码头工人ENTRYPOINT$SOLR_HOME/bin/solr start ${options}

目前,当我运行docker stop <container Id>它的终止进程但 solr 错误停止时

为了正确停止 Solr,我们需要运行:$SOLR_HOME/bin/solr stop

如何配置 docker在执行时调用solr stop命令?docker stop <container Id>

bash solr docker dockerfile

5
推荐指数
1
解决办法
1697
查看次数

BASH:同时并排显示两个文件

我正在处理一个bash脚本,我想并排打印两个文件.一个文件填充IPv4地址,另一个文件填充IPv6地址.我试过了,

pr -mtw $WIDTH $FILE1 $FILE2
Run Code Online (Sandbox Code Playgroud)

但它削减了产量.

??????IPV4?????????????????????????IPV6??????????????????
 224.0.0.1       2001:0db8:0000:
 192.0.2.128     ff02::1
 192.0.2.128     2001:0db8:0000:
 192.0.2.128     ::
                 2001:0db8:0000:
                 2001:db8:0:0:0:
                 2001:db8::ff00:
                 0000:0000:0000:
                 ::1
                 fe80::
                 ::ffff:192.0.2.
                 ::192.0.2.128
Run Code Online (Sandbox Code Playgroud)

我也试过了,

paste $FILE1 $FILE2  | awk '$1=$1' OFS='\t '
Run Code Online (Sandbox Code Playgroud)

而输出是,

??????IPV4?????????????????????????IPV6??????????????????
224.0.0.1    2001:0db8:0000:0042:0000:8a2e:0370:7334
192.0.2.128  ff02::1
192.0.2.128  2001:0db8:0000:0000:0000:ff00:0042:8329
192.0.2.128  ::
2001:0db8:0000:0000:0000:ff00:0042:8329
2001:db8:0:0:0:ff00:42:8329
2001:db8::ff00:42:8329
0000:0000:0000:0000:0000:0000:0000:0001
::1
fe80::
::ffff:192.0.2.128
::192.0.2.128
Run Code Online (Sandbox Code Playgroud)

我希望输出是这样的,

??????IPV4?????????????????????????IPV6??????????????????
 224.0.0.1       2001:0db8:0000:0042:0000:8a2e:0370:7334
 192.0.2.128     ff02::1
 192.0.2.128     2001:0db8:0000:0000:0000:ff00:0042:8329
 192.0.2.128     ::
                 2001:0db8:0000:0000:0000:ff00:0042:8329
                 2001:db8:0:0:0:ff00:42:8329
                 2001:db8::ff00:42:8329
                 0000:0000:0000:0000:0000:0000:0000:0001
                 ::1
                 fe80::
                 ::ffff:192.0.2.128
                 ::192.0.2.128
Run Code Online (Sandbox Code Playgroud)

FILE1:

 224.0.0.1
 192.0.2.128
 192.0.2.128
 192.0.2.128
Run Code Online (Sandbox Code Playgroud)

FILE2:

 2001:0db8:0000:0042:0000:8a2e:0370:7334
 ff02::1
 2001:0db8:0000:0000:0000:ff00:0042:8329
 ::
 2001:0db8:0000:0000:0000:ff00:0042:8329 …
Run Code Online (Sandbox Code Playgroud)

bash awk text

5
推荐指数
1
解决办法
579
查看次数

在命令结尾处\后的额外字符

当我尝试使用sed在OSX中插入新行时,我收到以下错误

在命令结尾处\后的额外字符

当前文件内容是

{
'localhost' => ['domain_name' => 'default', 'domain_type' => 'mobile'],
}
Run Code Online (Sandbox Code Playgroud)

预期的内容是

{
'localhost' => ['domain_name' => 'default', 'domain_type' => 'mobile'],
 'dev.ops' => ['domain_name' => 'default', 'domain_type' => 'mobile'],
}
Run Code Online (Sandbox Code Playgroud)

我正在使用的命令是

sed -i '' "/localhost/a\                        'dev.ops' => ['domain_name' => 'default', 'domain_type' => 'web']," FILENAME
Run Code Online (Sandbox Code Playgroud)

macos sed

5
推荐指数
2
解决办法
4746
查看次数

Globs &amp; NPM Minimatch:递归匹配除特定目录之外的所有文件和目录

给定目录结构:

/Users/doge/very/amaze.js
/usr/local/bin/wow
/node_modules/
/css/
/css/somefile.css
/lib/
/somelib/
/anotherlib/somedir/finallib.js
/index.html
/somefile.test
/somelib/file.html
/firstdir/seconddir/file.css
/node_modules.txt
Run Code Online (Sandbox Code Playgroud)

如何使用 extglob 只排除 node_modules 目录?

/!(node_modules)
Run Code Online (Sandbox Code Playgroud)

上面的内容匹配根级别的所有内容,除了 node_modules 目录和文本文件(我们想要包含)之外。它也不会递归地遵循匹配目录。

/!(node_modules)/**
Run Code Online (Sandbox Code Playgroud)

这个更接近,但它也排除了根目录中的所有文件。即使它包含根级别的文件,我猜它也会排除 node_modules.txt 文件。

PS 这是使用grunt-sshminimatch节点模块进行文件匹配。

bash glob node.js minimatch grunt-ssh

5
推荐指数
1
解决办法
2155
查看次数

bash `read -t` 在管道上不起作用

证明这一点的一个非常简单的方法是运行

mkfifo /tmp/a
read -t 1 a < /tmp/a
Run Code Online (Sandbox Code Playgroud)

阅读永远不会返回。

Bash 手册说:此选项仅在 read 从终端、管道或其他特殊文件读取输入时有效;从常规文件读取时无效

但是 /tmp/a 是一个管道, ls 的输出是

ls -l /tmp/a
prw-r--r-- 1 root root 0 Feb  4 22:18 /tmp/a
Run Code Online (Sandbox Code Playgroud)

bash 版本是:

GNU bash,版本 4.3.46(1)-release (x86_64-pc-linux-gnu) 版权所有 (C) 2013 Free Software Foundation, Inc.

操作系统是:

Ubuntu 16.04.1 LTS
Run Code Online (Sandbox Code Playgroud)

linux bash shell

5
推荐指数
1
解决办法
413
查看次数

使用超时命令时出错 - 时间间隔无效

我想在等待结果 2 秒后终止命令。如果命令没有给出结果(花费太长时间),命令应该停止。我浏览了文档并测试了以下命令:

timeout --kill-after=2 ls /mnt/ftp/;
echo $?;
Run Code Online (Sandbox Code Playgroud)

或者

timeout -k 2 ls /mnt/ftp/;
echo $?;
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

timeout: invalid time interval ‘ls’
Run Code Online (Sandbox Code Playgroud)

注意:以下命令在超时后停止,不会终止进程:

timeout 2 ls /mnt/ftp/;
Run Code Online (Sandbox Code Playgroud)

bash timeout

5
推荐指数
1
解决办法
2902
查看次数

将IFS设置为空字节不能在命令行中正确分割行

~ ls
A B C
Run Code Online (Sandbox Code Playgroud)

猛击(看起来不对)

~IFS=$'\x00' read -a vars < <(find -type f -print0); echo "${vars}"
ABC
Run Code Online (Sandbox Code Playgroud)

在zsh上(看起来不错)

~IFS=$'\x00' read -A vars < <(find -type f -print0); echo "${vars}"
A B C
Run Code Online (Sandbox Code Playgroud)

它是bash的错误吗?

bash ifs

5
推荐指数
2
解决办法
363
查看次数

如何将使用正则表达式提取的句子的所有单词组合在一起?

如果可能,我想与linux命令结合使用,所有以大写字母开头的单词,但不包括该行开头的单词。目标是在这些单词之间创建边缘。例如:

My friend John met Beatrice and Lucio.
Run Code Online (Sandbox Code Playgroud)

我想要的结果应该是:

  • 约翰·比阿特丽斯
  • 约翰·卢西奥
  • 露西欧·比阿特丽斯

我设法通过正则表达式获得了所有以大写字母开头的单词,但不包括该行开头的单词。正则表达式为:

*cat gov.json | grep -oP "\b([A-Z][a-z']*)(\s[A-Z][a-z']*)*\b | ^(\s*.*?\s).*" > nodes.csv*
Run Code Online (Sandbox Code Playgroud)

节点设法在列中分别输入它们,即:

  • 约翰
  • 比阿特丽斯
  • 路西欧

现在的目标是在以大写字母开头的名称之间创建可能的组合,并将其放入文件中。有什么建议么?

regex linux awk

5
推荐指数
1
解决办法
117
查看次数

在模式之间的文本文件中对行进行排序

我正在尝试在Bash或Python中的模式之间对线进行排序。我想基于第二个字段以“,”作为分隔符对行进行排序。

给定以下文本输入文件:

Sample1
T1,64,0.65  MEDIUM
T2,60,0.45  LOW
T3,301,0.68  MEDIUM
T4,65,0.75  HIGH
T5,59,0.72  MEDIUM
T6,51,0.82  HIGH
Sample2
T1,153,0.77  HIGH
T2,152,0.61  MEDIUM
T3,154,0.67  MEDIUM
T4,283,0.66  MEDIUM
T5,161,0.65  MEDIUM
Sample3
T1,147,0.71  MEDIUM
T2,154,0.63  MEDIUM
T3,45,0.63  MEDIUM
T4,259,0.77  HIGH
Run Code Online (Sandbox Code Playgroud)

我期望作为输出:

Sample1
T6,51,0.82  HIGH
T5,59,0.72  MEDIUM
T2,60,0.45  LOW
T1,64,0.65  MEDIUM
T4,65,0.75  HIGH
T3,301,0.68  MEDIUM
Sample2
T2,152,0.61  MEDIUM
T1,153,0.77  HIGH
T3,154,0.67  MEDIUM
T5,161,0.65  MEDIUM
T4,283,0.66  MEDIUM
Sample3
T3,45,0.63  MEDIUM
T1,147,0.71  MEDIUM
T2,154,0.63  MEDIUM
T4,259,0.77  HIGH
Run Code Online (Sandbox Code Playgroud)

我试图通过另一篇文章中的glenn jackman来适应这个建议,但据我测试,它仅适用于2种模式:

> gawk -v cmd="sort -k2" p=1 '
>     /^PATTERN2/ …
Run Code Online (Sandbox Code Playgroud)

python awk sed

5
推荐指数
1
解决办法
62
查看次数

如何使用client-go API返回的Pod条件数组?

我使用 Go 中的 client-go API 来访问给定控制器(部署)下的 Pod 列表。使用选择器标签查询属于它的 pod 列表时,您会得到一个数组PodConditions- https://pkg.go.dev/k8s.io/api/core/v1?tab=doc#PodCondition

这与 Pod 条件的官方文档非常一致 - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-conditions。但文档并不清楚如何访问这个条目数组。是按照最近的条目先排序吗?例如,如果我只想访问 Pod 的最新状态,应该怎么做?从我在本地集群中进行的一项试验中,我获得了控制器 Pod 之一的更新(Pod 条件数组),如下所示

{Initialized True 0001-01-01 00:00:00 +0000 UTC 2020-07-29 08:01:15 +0000 UTC  } 
{Ready True 0001-01-01 00:00:00 +0000 UTC 2020-07-29 08:01:22 +0000 UTC  } 
{ContainersReady True 0001-01-01 00:00:00 +0000 UTC 2020-07-29 08:01:22 +0000 UTC  } 
{PodScheduled True 0001-01-01 00:00:00 +0000 UTC 2020-07-29 08:01:15 +0000 UTC  }
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,给定的 Pod几乎同时从 转变ContainersReady为。但它们都不在第一个或最后一个索引中。Ready08:01:22 +0000 UTC

TLDR,问题是如何从这个值数组推断最新的 Pod …

kubernetes kubernetes-apiserver kubernetes-pod client-go

5
推荐指数
1
解决办法
764
查看次数