web-dev-qa-db-ja.com

「script / dev / null」は何をしますか?

VM rootでログインし、suをユーザーアカウントにログインしてscreenを使用しようとすると、エラーがスローされます:

Cannot open your terminal '/dev/pts/0' - please check.

Stack Overflowの投稿によると、私はscript /dev/nullを使用して修正する必要があると言っていますが、機能しますが、script /dev/nullを入力する必要がある理由はまだ説明されていません。それが何をするのか、なぜそれを入力する必要があるのか​​を理解したいと思います。

21
CJL

/dev/pts/0はrootが所有しているため開くことができません。別のユーザーに訴えた後は、そのパスを介して開くことはできなくなりますが、開いたハンドルを介してそれを使用することはできます。親プロセスから継承されたものです。

script /dev/nullは、現在のユーザーが所有する別のptyを作成します。

とにかく、そのバグ/制限はscreenの最近のバージョン(たとえば4.99.0)で修正されたようで、SCM_RIGHTSの補助メッセージを介して現在の端末にハンドルを正しく送信します端末の名前だけを送信する代わりにUNIXドメインソケットを使用し、screenサーバーにそれを開こうと試みます(そして失敗します)。 tmuxも同じです。

28
mosvy