내 노트북에는 그래픽 카드가 2개 있다. 하나는 IGP이고 다른 하나는 이산형입니다.
개별 그래픽 카드를 끄는 쉘 스크립트를 작성했습니다.
시작할 때 실행하기 위해 이것을 시스템 스크립트로 어떻게 변환할 수 있습니까?
답변1
이를 수행하는 방법에는 주로 두 가지가 있습니다.
스크립트 포함
스크립트를 실행해야 하는 경우 변환할 필요가 없습니다. 대신 서비스를 통해 스크립트를 실행하세요 systemd
.
따라서 스크립트와 .service
파일(유닛 구성 파일)이라는 두 개의 파일이 필요합니다.
스크립트가 실행 가능하고 첫 번째 줄(셰르본) 예 #!/bin/sh
. 그런 다음 .service
파일 /etc/systemd/system
(일반 텍스트 파일이라고 함 )을 만듭니다 vgaoff.service
.
예를 들어:
- 스크립트:
/usr/bin/vgaoff
- 유닛 파일:
/etc/systemd/system/vgaoff.service
이제 유닛 파일을 편집합니다. 내용은 스크립트 작동 방식에 따라 다릅니다.
vgaoff
예를 들어 GPU의 전원을 끄는 경우 :
exec blah-blah pwrOFF etc
그러면 내용은 다음 vgaoff.service
과 같아야 합니다.
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff
[Install]
WantedBy=multi-user.target
vgaoff
GPU 전원을 끄고 GPU 전원을 다시 켜는 데 사용되는 경우 , 예를 들면 다음과 같습니다.
start() {
exec blah-blah pwrOFF etc
}
stop() {
exec blah-blah pwrON etc
}
case $1 in
start|stop) "$1" ;;
esac
그러면 내용은 다음 vgaoff.service
과 같아야 합니다.
[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
스크립트 없음
가장 간단한 경우에는 스크립트를 건너뛰고 명령을 직접 실행할 수 있습니다.
전원을 끄십시오:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"
[Install]
WantedBy=multi-user.target
전원을 끄고 켜려면:
[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
서비스 활성화
파일을 완성한 후 서비스를 활성화합니다.
systemctl enable vgaoff.service
다음 부팅 시 자동으로 시작됩니다. 서비스를 한 번 활성화하고 시작할 수도 있습니다.
systemctl enable --now vgaoff.service
현재 systemd v.220
(이전 설정에서는 수동으로 시작해야 함)
자세한 내용은 다음을 참조하세요.systemd.service
맨 페이지.
문제 해결
답변2
systemd에 시작 항목을 추가하는 것은 복잡하고 지루합니다. 이것을 더 편리하게 만들기 위해 도구를 작성했습니다.서비스 추가systemd에 시작 항목을 빠르게 추가하는 쉬운 방법을 제공합니다.
설치하다:
pip3 install add_service
용법:
python -m add_service [shell_file/cmd] [user (default `whoami`)]
예:
python -m add_service ssh_nat.sh # by default user is `whoami`
python -m add_service "`which python3` -m http.server 80" root