0

Xonsh シェル パイプの問題

1 ~ 2 か月前から、Xonsh でこの奇妙なパイプ関連の問題が発生しています。どういうわけか、他のシェル、スクリプトなどを開くと、パイプソケットが台無しになりました。これにより、more、less などのプログラムに入力を送信できなくなります。Bash:s read コマンドなどによる基本的な端末入力は機能しますが、パイプは機能しません。

問題をこれ以上わかりやすく言葉で表現する方法が完全にはわかりません。そのため、作成したログ履歴を提供すると考えました。同じ簡単なスクリプトを 3 つの異なるパスで実行して比較しました。

1: 私の通常の Arch Linux Xonsh 環境 (スクリプト内のパイプが失敗する場所)。2:上記の環境でのBash(同じことが機能する場所) 3:Xonshを実行している私のDebianサーバー(これも機能します)

また、バグのある環境では、出力を受け取るはずのプログラムの前に終了する less が開かれていることにも気付きました。とにかく、ここにログがあります。いわば、1行のスクリプトを開始してjq出力をlessでパイプ処理するファイルハンドルです。

My "go-to" Arch Linux Xonsh environment: (running prompt_toolkit3)

1_shell/fd/:

lrwx------ 1 daniel daniel 64  1 jul 17.35 0 -> /dev/pts/36
lrwx------ 1 daniel daniel 64  1 jul 17.35 1 -> /dev/pts/36
lrwx------ 1 daniel daniel 64  1 jul 17.35 2 -> /dev/pts/36
lrwx------ 1 daniel daniel 64  1 jul 17.35 255 -> /dev/pts/36

1_one-liner/fd/:

lrwx------ 1 daniel daniel 64  1 jul 17.35 0 -> /dev/pts/36
lrwx------ 1 daniel daniel 64  1 jul 17.35 1 -> /dev/pts/36
lrwx------ 1 daniel daniel 64  1 jul 17.35 2 -> /dev/pts/36
lr-x------ 1 daniel daniel 64  1 jul 17.35 255 -> (( 1-line Bash script ))

1_jq/fd/:

lrwx------ 1 daniel daniel 64  1 jul 17.35 0 -> /dev/pts/36
l-wx------ 1 daniel daniel 64  1 jul 17.35 1 -> 'pipe:[569259498]'
lrwx------ 1 daniel daniel 64  1 jul 17.35 2 -> /dev/pts/36
lr-x------ 1 daniel daniel 64  1 jul 17.35 3 -> (( JSON file ))

1_less/fd/:

lr-x------ 1 daniel daniel 64  1 jul 17.35 0 -> 'pipe:[569259498]'
lrwx------ 1 daniel daniel 64  1 jul 17.35 1 -> /dev/pts/36
lrwx------ 1 daniel daniel 64  1 jul 17.35 2 -> /dev/pts/36
lr-x------ 1 daniel daniel 64  1 jul 17.35 3 -> /dev/pts/36


Arch Linux Bash environment: (the shell I've left behind for Xonsh)


2_shell/fd/:

lrwx------ 1 daniel daniel 64  1 jul 17.36 0 -> /dev/pts/76
lrwx------ 1 daniel daniel 64  1 jul 17.36 1 -> /dev/pts/76
lrwx------ 1 daniel daniel 64  1 jul 17.36 2 -> /dev/pts/76
lrwx------ 1 daniel daniel 64  1 jul 17.36 3 -> /dev/ptmx
lrwx------ 1 daniel daniel 64  1 jul 17.36 4 -> 'anon_inode:[eventpoll]'
lrwx------ 1 daniel daniel 64  1 jul 17.36 5 -> 'socket:[569061930]'
lrwx------ 1 daniel daniel 64  1 jul 17.36 6 -> 'socket:[569061931]'
lrwx------ 1 daniel daniel 64  1 jul 17.36 7 -> /dev/pts/117
lrwx------ 1 daniel daniel 64  1 jul 17.36 8 -> /dev/ptmx
lrwx------ 1 daniel daniel 64  1 jul 17.36 9 -> /dev/pts/121

2_one-liner/fd/:

lrwx------ 1 daniel daniel 64  1 jul 17.36 0 -> /dev/pts/76
lrwx------ 1 daniel daniel 64  1 jul 17.36 1 -> /dev/pts/117
lrwx------ 1 daniel daniel 64  1 jul 17.36 2 -> /dev/pts/121
lr-x------ 1 daniel daniel 64  1 jul 17.36 255 -> (( 1-line Bash script ))

2_jq/fd/:

lrwx------ 1 daniel daniel 64  1 jul 17.36 0 -> /dev/pts/76
l-wx------ 1 daniel daniel 64  1 jul 17.36 1 -> 'pipe:[569274279]'
lrwx------ 1 daniel daniel 64  1 jul 17.36 2 -> /dev/pts/121
lr-x------ 1 daniel daniel 64  1 jul 17.36 3 -> (( JSON file ))

2_less/fd/:

lr-x------ 1 daniel daniel 64  1 jul 17.36 0 -> 'pipe:[569274279]'
lrwx------ 1 daniel daniel 64  1 jul 17.36 1 -> /dev/pts/117
lrwx------ 1 daniel daniel 64  1 jul 17.36 2 -> /dev/pts/121
lr-x------ 1 daniel daniel 64  1 jul 17.36 3 -> /dev/pts/121



Debian Xonsh environment: (running prompt_toolkit2)


xonsh:

lrwx------ 1 daniel daniel 64  1 jul 17.47 0 -> /dev/pts/17
lrwx------ 1 daniel daniel 64  1 jul 17.47 1 -> /dev/pts/17
lrwx------ 1 daniel daniel 64  1 jul 17.47 2 -> /dev/pts/17
lrwx------ 1 daniel daniel 64  1 jul 17.47 3 -> 'anon_inode:[eventpoll]'
lrwx------ 1 daniel daniel 64  1 jul 17.47 4 -> 'socket:[1604535]'
lrwx------ 1 daniel daniel 64  1 jul 17.47 5 -> 'socket:[1604536]'
lrwx------ 1 daniel daniel 64  1 jul 17.47 6 -> /dev/ptmx
lrwx------ 1 daniel daniel 64  1 jul 17.47 7 -> /dev/pts/42
lrwx------ 1 daniel daniel 64  1 jul 17.47 8 -> /dev/ptmx
lrwx------ 1 daniel daniel 64  1 jul 17.47 9 -> /dev/pts/43

bash:

lrwx------ 1 daniel daniel 64  1 jul 17.52 0 -> /dev/pts/17
lrwx------ 1 daniel daniel 64  1 jul 17.52 1 -> /dev/pts/42
lrwx------ 1 daniel daniel 64  1 jul 17.52 2 -> /dev/pts/43
lr-x------ 1 daniel daniel 64  1 jul 17.52 255 -> (( 1-line Bash script ))

jq:

lrwx------ 1 daniel daniel 64  1 jul 17.53 0 -> /dev/pts/17
l-wx------ 1 daniel daniel 64  1 jul 17.53 1 -> 'pipe:[110134119]'
lrwx------ 1 daniel daniel 64  1 jul 17.53 2 -> /dev/pts/43
lr-x------ 1 daniel daniel 64  1 jul 17.53 3 -> (( JSON FILE ))

less:

lr-x------ 1 daniel daniel 64  1 jul 17.56 0 -> 'pipe:[110134119]'
lrwx------ 1 daniel daniel 64  1 jul 17.56 1 -> /dev/pts/42
lrwx------ 1 daniel daniel 64  1 jul 17.56 2 -> /dev/pts/43
lr-x------ 1 daniel daniel 64  1 jul 17.56 3 -> /dev/tty

どんな助けにも感謝します。これは現在深刻な不具合です。

4

0 に答える 0