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의 의견 중 두 가지가 정확합니다.

wall네, 그렇습니다. 이 명령은 로그인한 사용자와 해당 터미널을 확인하기 위해 동일한 메커니즘을 사용하는 것 같습니다 .who

따라서 WSL2에서 작동하게 하려면 다음을 수행하십시오.

  • 에서 사용할 수 있는 최신 버전의 WSL이 필요합니다 wsl --version. 로 돌아가는 경우 invalid commandWindows가 완전히 업데이트되었는지 확인한 다음 새 버전을 설치하세요.Linux용 Windows 하위 시스템마이크로소프트 스토어에서.

  • 설명된 대로 Systemd를 활성화합니다.이 답변

  • WSL을 다시 시작하고 Systemd가 활성화되었는지 확인한 후 실행하여 su - $USER사용자가 강제로 "로그인"하도록 합니다.

  • 그런 다음 다른 터미널에서 다음을 실행할 수 있습니다.

    sudo wall Wallaby # Or a real message
    

    로그인한 터미널에 표시되어야 합니다. 이는 sudo많은 배포판에 필요하다는 점을 명심하십시오 . 예전에는 이랬었지wallsetguid우분투와 데비안 에서, 하지만 더 이상 그렇지 않은 것 같습니다.

  • w그리고 who로그인한 사용자도 표시되어야 합니다.

물론 WSL은 원하는 스크립트를 구현하는 데 반드시 도움이 되는 것은 아닙니다.로그인. 몇 가지 가능성:

  • su - $USER알림을 받으려는 셸에 강제로 로그인하세요.

  • 파일(또는 fifo?)을 감시하고 (지워질 때까지) "완료" 메시지로 프롬프트를 업데이트하는 Zsh 프롬프트 함수를 작성하세요. Fish에서는 이것이 더 쉽다고 생각하지만 Zsh(또는 Bash)에서도 가능하다고 확신합니다.

  • tmux터미널에서 실행하고 tmux display-message일치 항목을 알리는 데 사용됩니다.

관련 정보