奇怪的bash行为

因此,我正在尝试获取当前正在运行程序的所有目录的列表,以便可以跟踪当前正在运行的大量作业。

当我单独运行命令时,它们似乎都可以运行,但是当我将它们链接在一起时,出现了问题...(ll只是常规ls -l别名)

for pid in `top -n 1 -u will | grep -iP "(programs|to|match)" | awk '{print $1}'`; 
    do 
    ll /proc/$pid/fd | head -n 2 | tail -n 1; 
done

在此处输入图片说明

为什么当我ll /proc/31353/fdfor循环内部时,它无法访问文件,但是当我正常使用它时,它可以正常工作吗?

并通过管道传递hexdump -C

$ top -n 1 -u will | 
    grep -iP "(scatci|congen|denprop|swmol3|sword|swedmos|swtrmo)" | 
        awk '{print $1}' | hexdump -C
00000000  1b 28 42 1b 5b 6d 1b 28  42 1b 5b 6d 32 31 33 35  |.(B.[m.(B.[m2135|
00000010  33 0a 1b 28 42 1b 5b 6d  1b 28 42 1b 5b 6d 32 39  |3..(B.[m.(B.[m29|
00000020  33 33 31 0a 1b 28 42 1b  5b 6d 1b 28 42 1b 5b 6d  |331..(B.[m.(B.[m|
00000030  33 30 39 39 36 0a 1b 28  42 1b 5b 6d 1b 28 42 1b  |30996..(B.[m.(B.|
00000040  5b 6d 32 36 37 31 38 0a                           |[m26718.|
00000048
吉勒斯“别再邪恶了”

切普纳直觉正确的输出top是为人类设计的,而不是用于解析的。十六进制转储表明top正在产生一些终端转义序列。这些转义序列是该行第一个字段的一部分,因此生成的文件名类似于/proc/\e(B\e[m\e(B\e[m21353/pid而不是转义字符/proc/21353/pid所在的位置\e

使用pspgreppidof代替。在Linux下,您可以使用该-C选项来ps匹配确切的程序名称(重复该选项以允许多个名称)。使用该-o选项控制显示格式。

for pid in $(ps -o pid= -C scatci -C congen -C denprop -C swmol3 -C sword -C swedmos -C swtrmo); do 
  ls -l /proc/$pid/fd | head -n 2 | tail -n 1
done

如果要通过减少CPU使用率进行排序:

for pid in $(ps -o %cpu=,pid= \
                -C scatci -C congen -C denprop -C swmol3 -C sword -C swedmos -C swtrmo |
             sort -k 1gr |
             awk '{print $2}'); do 

在此处输入图片说明

另外,使用反引号代替美元括号来代替命令-反引号内的引号的行为有些奇怪,并且很容易在此处犯错误。美元括号内的报价很直观。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

奇怪的addEventListener行为

来自分类Dev

预测行为的奇怪行为

来自分类Dev

bash脚本中adb pull的奇怪行为

来自分类Dev

MATLAB subs():奇怪的行为

来自分类Dev

Bash变量赋值奇怪的行为

来自分类Dev

bash中命令替换的奇怪行为

来自分类Dev

奇怪的行为

来自分类Dev

Ubuntu bash awk奇怪的行为

来自分类Dev

嵌套变量的奇怪bash行为

来自分类Dev

bash中的奇怪行为(可能还有其他shell?)

来自分类Dev

为IFS循环设置IFS时出现奇怪的bash行为

来自分类Dev

Linux bash:获取终端光标位置后的奇怪行为

来自分类Dev

python模块的终端和bash脚本之间的奇怪行为差异

来自分类Dev

bash终端/控制台奇怪的重叠行为

来自分类Dev

For循环中的奇怪Bash变量分配行为

来自分类Dev

奇怪的bash脚本行为

来自分类Dev

printf bash奇怪的行为

来自分类Dev

bash函数参数奇怪的行为

来自分类Dev

奇怪的行为

来自分类Dev

`docker run`输出到bash变量-奇怪的行为

来自分类Dev

嵌套变量的奇怪bash行为

来自分类Dev

奇怪的行为

来自分类Dev

Bash 登录脚本奇怪的行为

来自分类Dev

bash 中奇怪的返回码行为

来自分类Dev

管道中的 Bash 测试导致奇怪的行为

来自分类Dev

为 for 循环设置 IFS 时的奇怪 bash 行为

来自分类Dev

bash 和 .bashrc 中的奇怪行为

来自分类Dev

Bash,openssl,退出状态的奇怪行为

来自分类Dev

Bash 脚本的行为出乎意料/奇怪