Điểm:1

lệnh who không tạo đầu ra trên WSL2

lá cờ it

Tôi đang sử dụng Ubuntu 20.04 trong hệ thống con Windows dành cho Linux trên Windows 10. Khi tôi nhập Ai lệnh tôi không nhận được đầu ra:

renniej@ratitch:~$ whoami
renniej
renniej@ratitch:~$ ai
renniej@ratitch:~$

Tôi đã thử nhiều thứ khác nhau như sudo aiÁi chà nhưng tôi vẫn không nhận được đầu ra. ai --version đưa ra:

ai (nhân GNU) 8.30
Bản quyền (C) 2018 Tổ chức phần mềm miễn phí, Inc.
Giấy phép GPLv3+: GNU GPL phiên bản 3 trở lên <https://gnu.org/licenses/gpl.html>.
Đây là phần mềm miễn phí: bạn có thể tự do thay đổi và phân phối lại nó.
KHÔNG CÓ BẢO ĐẢM, trong phạm vi pháp luật cho phép.

Được viết bởi Joseph Arceneaux, David MacKenzie và Michael Stone.

Tôi đang làm điều gì đó ngớ ngẩn ở đây? Hay đây là một tính năng của WSL2?

Điểm:1
lá cờ vn

Câu trả lời ngắn

Không có gì ngớ ngẩn. Có một Sự cố Github liên quan đến nguyên nhân gốc rễ. Mặc dù ban đầu nhóm WSL đã gắn thẻ cho nó là "theo thiết kế" và "tính năng", nhưng đã có hoạt động về nó vào năm ngoái cho thấy rằng nó là "giá trị cao với chi phí thấp".

Sau đó, một lần nữa, gần đây người ta lưu ý rằng nó đã được tạo cách đây 5 năm và không có "sự tán thành" nào từ những người dùng khác muốn nó được sửa. Tôi đoán là điều này sẽ không được thay đổi cho đến khi và trừ khi WSL áp dụng cách tiếp cận giống Systemd hơn để khởi động (xem bên dưới để biết chi tiết).

Giải trình

... hoặc nhiều hơn những gì bạn có thể muốn biết về Ai

Có hai lý do tại sao Ai không hiển thị bất kỳ kết quả nào:

  • Đầu tiên, điều hiển nhiên -- Ai được thiết kế để hiển thị (trích dẫn từ trang hướng dẫn), "ai đã đăng nhập". Khi bạn bắt đầu WSL, nó không thực sự gửi cho người dùng của bạn thông qua mật khẩu đăng nhập, đó là lý do bạn không bị yêu cầu nhập mật khẩu.

  • Thứ hai, WSL tự chạy /trong đó xử lý dưới dạng PID1 khi khởi động, đây là "điều kỳ diệu" trong việc thiết lập những thứ như:

    • mạng Linux có thể cõng trên mạng Windows
    • tự động gắn ổ đĩa Windows
    • tương tác cho phép Windows .exelà để chạy
    • và hơn thế nữa ...

    Mặt khác, một hệ thống Linux "bình thường" khởi động với Systemd hoặc SysVInit (hoặc một số ít hệ thống init khác trong những năm qua). Hệ thống init chịu trách nhiệm thiết lập runlevel, trong số những thứ khác. Và cùng với đó (tôi chỉ tự học điều này từ vấn đề Github đó), /var/run/utmp build, đây là thứ theo dõi ai đang sử dụng hệ thống.

Có một số cách mà bạn có thể "buộc" ai đó làm việc:

  • Đầu tiên được đề cập trong chủ đề Github đó. Đầu tiên, hack một /var/run/utmp với một cái gì đó như:

    Sudo bash -c "echo '[1] [00049] [~~ ] [runlevel] [~ ] [4.4.0-17115-Micoroso] [0.0.0.0 ] [Thứ 4 ngày 28 tháng 2 13:27:14 STD 2018]' | utmpdump -r > /var/run/utmp"
    

    Sau đó, buộc "đăng nhập" với đăng nhập sudo -f $USER. Sau đó, bạn có thể thấy người dùng của mình đã đăng nhập bằng cách sử dụng Ai. Nếu bạn đăng nhập lại qua ssh (bạn cần thiết lập nó trước), sau đó thông tin đăng nhập đó cũng sẽ xuất hiện.

  • Thứ hai, bạn có thể bắt đầu Systemd trong không gian tên PID của chính nó:

    sudo -b unshare --pid --fork --mount-proc /lib/systemd/systemd --system-unit=basic.target
    

    Đợi vài giây để Systemd khởi động và nó sẽ khởi tạo /var/run/utmp. Về mặt kỹ thuật tại thời điểm này, bạn có thể đăng nhập sudo -f $USER và nhìn thấy Ai.

    Lưu ý rằng Systemd không hoàn toàn có thể sử dụng được nếu không có nỗ lực bổ sung (ngoài phạm vi của câu trả lời này) và bạn phải chấm dứt phiên bản Ubuntu WSL sau khi thực hiện việc này để trở về trạng thái ổn định. Thoát khỏi WSL và sau đó wsl --terminate <distro> (ở đâu <distro> có khả năng Ubuntu). Khi bạn khởi động lại, mọi thứ sẽ trở lại bình thường.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.