それは変だ。FWIW phpseclib の問題ではなく、サーバーの問題のようです。ログを見ると、2 つの<- NET_SSH2_MSG_CHANNEL_EOF
パケットが表示されます。nproc の応答は最初の応答の直前 ( <- NET_SSH2_MSG_CHANNEL_DATA
) ですが、2 番目の応答には同様の応答はありません。
nproc リクエストを行うたびに、サーバーは最終的に終了ステータス SSH_MSG_CHANNEL_REQUESTを送信します。ログファイルの最初のものは次のとおりです。
<- NET_SSH2_MSG_CHANNEL_REQUEST (since last: 0.0839, network: 0.0838s)
00000000 00:00:00:00:00:00:00:0b:65:78:69:74:2d:73:74:61 ........exit-sta
00000010 74:75:73:00:00:00:00:00 tus.....
これがログファイルの2番目のものです
<- NET_SSH2_MSG_CHANNEL_REQUEST (since last: 0.0461, network: 0.046s)
00000000 00:00:00:00:00:00:00:0b:65:78:69:74:2d:73:74:61 ........exit-sta
00000010 74:75:73:00:00:00:00:ff tus.....
最後のバイトが最初のもの (良いもの) の 00 と 2 番目のもの (悪いもの) の ff であることを除けば、どちらもほとんど同じです。終了ステータスの SSH_MSG_CHANNEL_REQUEST パケットの詳細は次のとおりです。
byte SSH_MSG_CHANNEL_REQUEST
uint32 recipient channel
string "exit-status"
boolean FALSE
uint32 exit_status
したがって、基本的に最後の 4 バイトは、255 の uint32 exit_status を表します。
ウィキペディアの終了ステータスに関する記事「終了ステータスは 0 から 255 の間である」を引用します。また、
シェルの目的のために、ゼロの終了ステータスで終了するコマンドは成功しました。ゼロ以外の終了ステータスは失敗を示します。
そのため、2 番目のコマンドを実行したときに、Linux ボックスで何らかのエラーが発生しました。
stderr( SSH_MSG_CHANNEL_EXTENDED_DATA
) にも何も出力されていないので、何が起こっているのかわかりません。
http://tldp.org/LDP/abs/html/exitcodes.htmlによると、255 終了ステータスは「終了ステータスが範囲外」を意味します。すなわち。exit -1
nproc はまたはを実行しようとしましたexit 256
。いずれにしても、nproc のバグか何かである可能性があります。システム上のすべてが最新であることを確認してみてください。