我已经编写了一个Shell脚本来关闭独立显卡。
如何将其转换为systemd脚本以在启动时运行它?
/>
#1 楼
主要有两种方法可以执行此操作:如果必须运行脚本,则无需转换,而是通过
systemd
服务运行脚本。 因此,您需要两个文件:脚本和
.service
文件(单元配置文件)。确保脚本是可执行文件,第一行(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
的内容应该be:[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 in
start|stop) "" ;;
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
它将在下次启动时自动启动。从
systemd v.220
起,您甚至可以使用systemctl enable --now vgaoff.service
一次性启用和启动服务(在较旧的设置下,您必须手动启动它)。
有关更多详细信息,请参见
systemd.service
手册页。故障排除。
从这里开始:如何查看
systemd
服务的完整日志? systemd
服务出口代码和状态信息说明
评论
感谢您的详细回答。该脚本包含一个命令“ echo OFF> / sys / kernel / debug / vgaswitcheroo / switch”
– Sharique
2012年9月11日在10:04
它失败并显示以下消息vgaoff.service-关机gpu已加载:已加载(/usr/lib/systemd/system/vgaoff.service;已启用)活动:自2012年9月11日星期二以来失败(结果:退出代码)23: 46:46 +0530; 30年前进程:5258 ExecStart = / usr / lib / systemd / scripts / vgaoff(代码=退出,状态= 203 / EXEC)CGroup:名称= systemd:/system/vgaoff.service
– Sharique
2012年9月11日18:17
糟糕,我又错过了这个小东西,一切正常。.再次感谢。
– Sharique
2012年9月12日在18:58
@Bazon-根据这种逻辑,该站点上成千上万的答案是没有经验的用户的“潜在陷阱”。不了解/完全了解echo Something> / some / file(实际上是任何其他命令)功能的人应该在尝试在系统上运行内容之前熟悉CLI的基础知识。另外,FYI,请阅读如何在几种笔记本电脑型号上关闭dGPU,看看那里使用的命令是否可以用您建议的方式代替。另外,要恢复原始文件,通常需要重新安装拥有该文件的软件包。
–don_crissti
13年5月14日23:56
@don_crissti哇!谢谢你的提示。 (删除了我的原始评论,以避免传播误导性信息。)
–伍德罗·巴洛
16-11-14在21:39