小编Kar*_*lek的帖子

如何在多个命令上运行时间并将时间输出写入文件?

我想运行time命令来测量几个命令的时间。

我想做的是:

  • 测量所有这些加在一起的运行时间
  • time输出写入文件
  • STDERR从我正在测量的命令中写入STDERR

我确实希望做的是

  • 将几个命令写入一个单独的脚本(为什么?因为所有这些都已经是我以编程方式生成的脚本,创建另一个临时脚本会比我想要的更混乱)

到目前为止我尝试过的:

/usr/bin/time --output=outtime -p echo "a"; echo "b";

不起作用,time仅在第一个上运行。

/usr/bin/time --output=outtime -p ( echo "a"; echo "b"; )

不起作用,(是意外令牌。

/usr/bin/time --output=outtime -p { echo "a"; echo "b"; }

不起作用,“没有这样的文件或目录”。

/usr/bin/time --output=outtime -p ' echo "a"; echo "b";'

不起作用,“没有这样的文件或目录”。

time ( echo "a"; echo "b"; ) 2>outtime

不起作用,因为它全部重定向STDERRouttime; 我只想要time那里的输出。

而且当然,

time --output=outime echo "a"; …

shell command time-utility

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

如何按最后一列进行数字排序?

我有这个输入:

sdkxyosl 1
safkls 2
asdf--asdfasxy_asd 5
dkd8k  jasd 29
sdi44sw 43
asasd afsdfs 10
rklyasd 4
Run Code Online (Sandbox Code Playgroud)

我需要这个输出:

sdi44sw 43
dkd8k  jasd 29
asasd afsdfs 10
asdf--asdfasxy_asd 5
rklyasd 4
safkls 2
sdkxyosl 1
Run Code Online (Sandbox Code Playgroud)

所以我需要按最后一列对行进行排序。

我不知道一行有多少列。

我只是想不通,该怎么做。我没有“perl 权限”。我只有 sed、awk、cut 等的平均脚本能力。

有人知道怎么做吗?

text-processing sort

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

为什么 Docker 需要 root 权限?

我正在学习 Docker,我非常喜欢它。

但是,我不明白,为什么docker需要root权限来制作容器、读取日志等。

我读过一些像这样的文章

https://docs.docker.com/articles/security/

但我所看到的只是“docker需要根权限,因为它可以访问根文件夹”。好吧,我不介意以非 root 用户身份运行 docker,并让他们只能访问外部系统中非 root 用户拥有的文件夹。

为什么这是一个问题?

docker

13
推荐指数
1
解决办法
5795
查看次数

交互式树命令

是否有任何版本的tree命令将文件结构显示为树结构,但以一种我可以交互方式遍历的方式?

为什么我需要它 - 我正在尝试使用左侧的“交互式”vim和分屏来模拟 TextMate 项目抽屉。但如果有比这更好的方法,我也想听听。screentree

vim utilities tree

7
推荐指数
1
解决办法
1770
查看次数

Sort 在区分大小写的排序上表现得很奇怪

Sort 的排序与我预期的不同。我有这个文件,叫它text.txt

a   1
A   1
a   11
Run Code Online (Sandbox Code Playgroud)

(空间总是一\t

我想按第一列的字母顺序对它们进行排序。但是,当我这样做时

sort -k 1 text.txt

我得到的只是 text.txt 文件,没有排序。如果我用已弃用的+ -符号来做,意思是

sort +0 -1 text.txt

它可以正常工作,这意味着我得到了这个输出:

a   1
a   11
A   1
Run Code Online (Sandbox Code Playgroud)

只有当我的行仅因大小写而异时,才会发生这种奇怪的行为。我究竟做错了什么?

linux sort

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

测试是否存在多个文件,由管道给出

我有一个命令,它为我提供了一个文件列表,每行一个。文件名是“正常的” - 没有空格,不需要转义括号等。

现在我想将该命令通过管道传递给类似的东西,test -f并且当且仅当所有文件都存在时才返回 true 。(带有 0 行的行为可能是未定义的,我不在乎。)

所以,像

make_list_of_files | test -f
Run Code Online (Sandbox Code Playgroud)

但实际上工作。

“Bashisms”是允许的,因为我在 Bash 中需要它。

这些文件不在同一目录中,但它们在当前目录的子目录中,并且路径中有目录名称,例如

dir/file1
dir/file2
dir2/file3
Run Code Online (Sandbox Code Playgroud)

bash shell-script files

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

即使删除了 ~/.ssh/known_hosts,“主机密钥验证失败”

当我尝试ssh从带有 debian 的 linux 计算机访问我的服务器时,我得到了

Host key verification failed.

我在网上找到的唯一帮助是从~/.ssh/known_hosts...中删除密钥,我不仅如此,我删除了整个~/.ssh只是为了确定,它也没有帮助,我仍然有Host key verification failed.错误。

ssh

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

如何grep环境变量中的东西并且有正斜杠?

我想 grep 一个文件,我想获取所有具有特定环境变量的行(准确地说,$PWD)。

当然,只用

cat file | grep '/'$PWD'/'
Run Code Online (Sandbox Code Playgroud)

不工作,因为$PWD包含斜线。

我试图弄清楚如何正确地做到这一点,但我只提出了奇怪且过于复杂的解决方案。有什么简单的方法可以做到这一点?

grep bash

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

nohup ... & 在 docker 脚本中没有按预期工作

我有一个像这样的简单 Dockerfile

FROM ubuntu:latest
ADD run.sh /run.sh
CMD /run.sh
Run Code Online (Sandbox Code Playgroud)

在 run.sh 中,我有这个(也非常简单)

#!/bin/bash
nohup awk 'BEGIN { while (c++<50) print "y" }' &
sleep 10
Run Code Online (Sandbox Code Playgroud)

当我在 docker 中从 bash 运行脚本时(即,在交互模式下运行 bash 命令并在那里运行脚本),它工作正常——它进入“nohup 模式”并且输出正确地在 nohup.out 中。

但是,如果我使用/run.sh默认命令运行 docker 容器,则输出仍为 STDOUT。

我究竟做错了什么?为什么它可以在 docker 和 bash 中工作,但只能在交互模式下运行?

bash nohup docker

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

为什么有sync(1) 和sync(8) 的联机帮助页以及它们有何不同?

我看到 Linux 手册页中有两个不同的实用程序,但我不明白其中的区别。

有sync(1)和sync(8),它们看起来出奇的相似。

https://linux.die.net/man/8/sync

https://linux.die.net/man/1/sync

我可能错过了一些明显的东西。它们有何不同?(我知道sync(2)是一个系统调用。但是sync(1)和sync(8)看起来基本相同?)

man coreutils

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