所以我試圖獲得我目前正在運行一個程序的所有目錄的列表,所以我可以跟蹤我目前正在運行的衆多作業。奇怪的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
爲什麼當我在for
循環內有ll /proc/31353/fd
時,它無法訪問該文件,但是當我通常使用它時它工作正常?
並通過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
你試過'ls -l「/ proc/$ pid/fd」'? – anubhava
@anubhava,是的,沒有任何區別。 – will
您是否收到任何錯誤?或者只是沒有輸出? – anubhava