WSL2 Ubuntu - ウォールコマンド

WSL2 Ubuntu - ウォールコマンド

バックグラウンドで実行されているcronジョブで実行し、開いている端末にコマンドを使用して結果を通知する簡単なスクリプトを設定しようとしていますwall。ただし、テスト時にはまったく出力が出ません。私はMicrosoftのターミナルアプリケーションを介してWSL Ubuntuとzshを使用します。

以下を実行してtty返し、何も返しません。wwho

 hardya@GBH-HARDYA1  ~  tty
/dev/pts/4
 hardya@GBH-HARDYA1  ~  w
 09:16:01 up 3 days,  4:30,  0 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT

どんなアイデアがありますか?

ベストアンサー1

@EdgarMagallonのコメントの2つが正しいです。

  • これはいwho上記のコマンドの問題に関連するUbuntuに尋ねる
  • この回答の所有者(私)は... ;-)

wallはい、そうです。このコマンドは、ログインしたユーザーとその端末を確認するために同じメカニズムを使用するようです。who

したがって、WSL2で動作させるには、次のようにします。

  • で利用可能な最新バージョンのWSLが必要ですwsl --version。に戻る場合は、invalid commandWindowsが完全に更新されていることを確認してから、新しいバージョンをインストールしてください。Linux用Windowsサブシステムマイクロソフトストアで。

  • 説明したようにSystemdを有効にします。この回答

  • WSLを再起動し、Systemdが有効になっていることを確認してから、実行してユーザーにsu - $USER強制的に「ログイン」させます。

  • その後、他の端末で以下を実行できます。

    sudo wall Wallaby # Or a real message
    

    ログインした端末に表示する必要があります。これはsudo多くのディストリビューションに必要であることに注意してください。以前はこれでした。wallsetguidUbuntuとDebianからしかし、もはやそうではないようです。

  • wそして、whoログインしたユーザーも表示する必要があります。

もちろん、WSLは必要なスクリプトを実装するのに必ずしも役立つわけではありません。ログイン。いくつかの可能性:

  • su - $USER通知を受けたいシェルに強制的にログインします。

  • ファイル(またはfifo?)を監視し(消去されるまで)、「完了」メッセージでプロンプトを更新するZshプロンプト関数を作成します。 Fishではこれはもっと簡単だと思いますが、Zsh(またはBash)でも可能だと確信しています。

  • tmux端末で実行し、tmux display-message一致を通知するために使用されます。

おすすめ記事