バックグラウンドで実行されているcronジョブで実行し、開いている端末にコマンドを使用して結果を通知する簡単なスクリプトを設定しようとしていますwall
。ただし、テスト時にはまったく出力が出ません。私はMicrosoftのターミナルアプリケーションを介してWSL Ubuntuとzshを使用します。
以下を実行してtty
返し、何も返しません。w
who
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 command
Windowsが完全に更新されていることを確認してから、新しいバージョンをインストールしてください。Linux用Windowsサブシステムマイクロソフトストアで。説明したようにSystemdを有効にします。この回答
WSLを再起動し、Systemdが有効になっていることを確認してから、実行してユーザーに
su - $USER
強制的に「ログイン」させます。その後、他の端末で以下を実行できます。
sudo wall Wallaby # Or a real message
ログインした端末に表示する必要があります。これは
sudo
多くのディストリビューションに必要であることに注意してください。以前はこれでした。wall
setguid
UbuntuとDebianからしかし、もはやそうではないようです。w
そして、who
ログインしたユーザーも表示する必要があります。
もちろん、WSLは必要なスクリプトを実装するのに必ずしも役立つわけではありません。力ログイン。いくつかの可能性:
su - $USER
通知を受けたいシェルに強制的にログインします。ファイル(またはfifo?)を監視し(消去されるまで)、「完了」メッセージでプロンプトを更新するZshプロンプト関数を作成します。 Fishではこれはもっと簡単だと思いますが、Zsh(またはBash)でも可能だと確信しています。
tmux
端末で実行し、tmux display-message
一致を通知するために使用されます。