回答:
これを行うには、主に2つのアプローチがあります。
systemd
サービスを介してスクリプトを実行します。したがって、スクリプトと.service
ファイル(ユニット構成ファイル)の2つのファイルが必要です。
スクリプトが実行可能であり、最初の行(shebang)がであることを確認してください#!/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の電源をオフにし、また電源をオンにするために使用される場合、たとえば:
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
マニュアルページを参照してください。
トラブルシューティング。
ここ
からsystemd
始めましょう:サービスの完全なログを見るには?
systemd
サービス終了コードとステータス情報の説明
echo SOMETHING > /some/file
(または実際のところ他のコマンド)を知らない/完全に理解していない人は、システムで何かを実行しようとする前にCLIの基本を理解する必要があります。それ以外に、参考までに、いくつかのラップトップモデルでdGPUをオフにする方法を読んで、そこで使用されているコマンドをあなたが提案したようなものに置き換えることができるかどうかを確認してください。また、元のファイルを復元するには、通常、それを所有するパッケージを再インストールします。