Câu trả lời:
Có hai cách tiếp cận chủ yếu để làm điều đó:
systemd
dịch vụ.Do đó, bạn cần hai tệp: tập lệnh và .service
tệp (tệp cấu hình đơn vị).
Hãy chắc chắn rằng tập lệnh của bạn có thể thực thi được và dòng đầu tiên ( shebang ) là #!/bin/sh
. Sau đó tạo .service
tệp trong /etc/systemd/system
(một tệp văn bản đơn giản, hãy gọi nó vgaoff.service
).
Ví dụ:
/usr/bin/vgaoff
/etc/systemd/system/vgaoff.service
Bây giờ, chỉnh sửa tập tin đơn vị. Nội dung của nó phụ thuộc vào cách tập lệnh của bạn hoạt động:
Nếu vgaoff
chỉ tắt nguồn gpu, vd:
exec blah-blah pwrOFF etc
thì nội dung của vgaoff.service
nên là:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff
[Install]
WantedBy=multi-user.target
Nếu vgaoff
được sử dụng để tắt nguồn GPU và cũng để bật lại nguồn, ví dụ:
start() {
exec blah-blah pwrOFF etc
}
stop() {
exec blah-blah pwrON etc
}
case $1 in
start|stop) "$1" ;;
esac
thì nội dung của vgaoff.service
nên là:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff start
ExecStop=/usr/bin/vgaoff stop
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Tắt nguồn:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"
[Install]
WantedBy=multi-user.target
Tắt và bật nguồn:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"
ExecStop=/bin/sh -c "echo ON > /whatever/vga_pwr_gadget/switch"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Khi bạn đã hoàn tất các tệp, hãy bật dịch vụ:
systemctl enable vgaoff.service
Nó sẽ tự động bắt đầu vào lần khởi động tiếp theo. Bạn thậm chí có thể kích hoạt và bắt đầu dịch vụ trong một lần với
systemctl enable --now vgaoff.service
kể từ systemd v.220
(trên các thiết lập cũ hơn, bạn sẽ phải khởi động thủ công).
Để biết thêm chi tiết xem systemd.service
trang hướng dẫn.
Xử lý sự cố .
Bắt đầu ở đây:
Làm thế nào để xem nhật ký đầy đủ của một systemd
dịch vụ?
systemd
mã thoát dịch vụ và giải thích thông tin trạng thái
echo SOMETHING > /some/file
(hoặc bất kỳ lệnh nào khác là vấn đề thực tế) nên làm quen với những điều cơ bản của CLI trước khi thử chạy mọi thứ trên hệ thống của họ. Ngoài ra, FYI, hãy đọc cách tắt dGPU trên một số mẫu máy tính xách tay, xem các lệnh được sử dụng ở đó có thể được thay thế bằng thứ gì đó như bạn đề xuất không. Ngoài ra, để khôi phục tập tin gốc, bạn thường cài đặt lại gói sở hữu nó.