Điểm:2

Acpid không thể thực thi tập lệnh

lá cờ cn

Tôi có một máy tính xách tay cũ và tôi đã cài đặt phiên bản Ubuntu 20.04 LTS Server (không có GUI, chỉ có CLI). Nó được quản lý thông qua SSH nên việc hiển thị của nó là không cần thiết. Tôi muốn tắt màn hình khi đóng nắp và bật lại nếu tôi mở.

Tôi đã cấu hình thành công acpid để quản lý màn hình.

Trong /etc/acpi/sự kiện Tôi đã tạo một tệp:

sự kiện=nút/nắp.*
hành động =/etc/acpi/lid.sh

Kịch bản:

#!/bin/sh

grep -q đã đóng /proc/acpi/nút/nắp/LID/trạng thái
nếu [ $? = 0 ]
sau đó
    # đóng hành động
    setterm --blank force
khác
    # hành động mở
    setterm --blank poke
fi

Nếu tôi chạy tập lệnh này theo cách thủ công, nó sẽ hoạt động hoàn hảo, tuy nhiên có vẻ như acpi không thể chạy tập lệnh:

$ sudo tạp chí -u acpid -f

...
Ngày 04 tháng 7 20:03:01 máy chủ acpid[1179]: đã nhận được sự kiện lớp đầu vào "đóng nút/nắp LID"
Ngày 04 tháng 7 20:03:01 máy chủ acpid[1179]: quy tắc từ/etc/acpi/events/lid khớp
Ngày 04 tháng 7 20:03:01 máy chủ acpid[1353]: thực hiện hành động "/etc/acpi/lid.sh"
Ngày 04 tháng 7 20:03:01 máy chủ acpid[1179]: hành động đã thoát với trạng thái 1
04 tháng 7 20:03:01 acpid máy chủ[1179]: 1 tổng số quy tắc phù hợp
Ngày 04 tháng 7 20:03:01 máy chủ acpid[1179]: hoàn thành sự kiện lớp đầu vào "đóng nút/nắp LID"
...

Lỗi: hành động đã thoát với trạng thái 1 (không phải 0)

Nếu tôi biết đúng, mã thoát 1 là vấn đề về quyền (không được phép thao tác). Tôi không biết tại sao nó "không được phép", vì tôi không cần sử dụng sudo để chạy tập lệnh này.

lá cờ hr
Bạn có tài nguyên nào nói rằng điều này có thể thực hiện được bằng cách sử dụng `setterm` từ một hành động acpid không? Tôi hiểu rằng `setterm` cần được chạy bên trong một thiết bị đầu cuối. Tôi tự hỏi liệu trạng thái thoát 1 có thực sự là `setterm` cho bạn biết rằng nó không được kết nối với thiết bị đầu cuối (hoặc không nhận dạng được loại thiết bị đầu cuối), chứ không phải là lỗi EPERM?
Điểm:0
lá cờ cn

Vì vậy, cuối cùng tôi đã tìm ra vấn đề là gì.

Như Steeldriver đã đề cập, thời hạn định sẵn cần được chạy bên trong một thiết bị đầu cuối (phía trước máy tính xách tay) và trong kịch bản của tôi, nó không được kết nối với một thiết bị đầu cuối thực và thời hạn định sẵn không thay đổi được gì.

Dựa theo cái này post, chúng ta cần chuyển hướng đầu ra hoặc đầu vào đến/từ bảng điều khiển.

Vì vậy, tôi đã sửa đổi kịch bản của mình:

#!/bin/sh

grep -q đã đóng /proc/acpi/nút/nắp/LID/trạng thái
nếu [ $? = 0 ]
sau đó
    # đóng hành động
    setterm -term linux --blank force </dev/tty1
khác
    # hành động mở
    setterm -term linux --blank poke </dev/tty1
fi

Tôi đã thử nghiệm tập lệnh này và nó hoạt động rất tốt;)

Đă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.