Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何对过程进行正则化?_Linux_Strace_Bash - Fatal编程技术网

Linux 如何对过程进行正则化?

Linux 如何对过程进行正则化?,linux,strace,bash,Linux,Strace,Bash,我正在尝试使用以下命令扫射多层次进程: sudo strace -p1523 -e write -f 但它输出了很多不必要的信息,例如: [pid 1166] write(6, "\26\3\1\2\0\1\0\1\374\3\3\247\321\336S\265c\321]\322\276\273\361]\24\313e\341c2a\334"..., 517) = 517 [pid 1166] write(6, "\26\3\3\0F\20\0\0BA\4\223\26\337\25

我正在尝试使用以下命令扫射多层次进程:

sudo strace -p1523 -e write -f
但它输出了很多不必要的信息,例如:

[pid  1166] write(6, "\26\3\1\2\0\1\0\1\374\3\3\247\321\336S\265c\321]\322\276\273\361]\24\313e\341c2a\334"..., 517) = 517
[pid  1166] write(6, "\26\3\3\0F\20\0\0BA\4\223\26\337\256\244\3429\306p\216\3231Zt\346xhi\343\261\215"..., 126) = 126
[pid  1166] write(6, "\27\3\3\1\230D\374\356\350\233O\305K\246\331`\311\300\265y\215\225\201\33\364\335\336\336\231\311z\355"..., 413) = 413
[pid  1166] write(6, "\25\3\3\0\32D\374\356\350\233O\305L\357\313\226\302$U?a\304\250s\264\16)\\\315N\270", 31) = 31
[pid  1166] write(1, "None\n", 5)       = 5

我怎么能只跟踪这个正则表达式中的文本
write\(1,(.*),[0-9]*\)

我试过:

sudo strace -p1157 -e trace=/write\( -f

#output ------------
strace: regcomp: write(: Unmatched ( or \(

#also
sudo strace -p1157 -e trace=/write\(1.*\).* -f
#output ------------
strace: invalid system call '/write(1.*).*'

strace正则表达式在某些方面不同吗?

如下:

sudo strace -f -p1523 -e write 2>&1 | grep -o 'write([^)]\+)'
或与:

输出
看起来传递给
-e trace
的正则表达式只与系统调用本身的名称匹配,而不是与它的参数匹配。你不能用这种方式只选择一些
write
调用。您是否考虑过只通过
grep
过滤输出?我不知道在这种情况下如何使用grep
strace-p1157 |&grep'write(1,.*)
。实际上,不需要匹配整个字符串,所以您只需执行
strace-p1557 |&grep'write(1),
它适用于我的bash。您使用的是bash还是其他shell?(当然还是
sudo strace…
)cat/proc/$$/cmdline的输出是什么?
cat/proc/$$/cmdline的输出:bash和regex在那之后只工作了1次,再次运行id不工作可能pid被更改了?
-p1523
@VasylYovdiy。当然,你仍然需要
-f
。也许你可以发布你正在键入的确切命令更准确地描述发生了什么,而不仅仅是“不起作用”。
sudo strace -f -p1523 -e write |& grep -o 'write([^)]\+)'
write(6, "\26\3\1\2\0\1\0\1\374\3\3\247\321\336S\265c\321]\322\276\273\361]\24\313e\341c2a\334"..., 517)
write(6, "\26\3\3\0F\20\0\0BA\4\223\26\337\256\244\3429\306p\216\3231Zt\346xhi\343\261\215"..., 126)
write(6, "\27\3\3\1\230D\374\356\350\233O\305K\246\331`\311\300\265y\215\225\201\33\364\335\336\336\231\311z\355"..., 413)
write(6, "\25\3\3\0\32D\374\356\350\233O\305L\357\313\226\302$U?a\304\250s\264\16)
write(1, "None\n", 5)