llm Posted September 11, 2023 Share Posted September 11, 2023 如题,我现在使用的是UserScripts,触发条件只有定时和阵列启停 1 Quote Link to comment
JackieWu Posted September 11, 2023 Share Posted September 11, 2023 KVM, QEMU start or stop virtual machine from command line (CLI) 查看虚拟机列表: # virsh list --all Id Name State --------------------------------------- - CentOS7 shut off - debian shut off 启动名为 CentOS7 的虚拟机: virsh start CentOS7 Quote Link to comment
llm Posted September 11, 2023 Author Share Posted September 11, 2023 额,我想问的是,以 一个docker或者虚拟机启动或者结束 作为触发条件,执行脚本 Quote Link to comment
JackieWu Posted September 11, 2023 Share Posted September 11, 2023 (edited) 20 minutes ago, llm said: 额,我想问的是,以 一个docker或者虚拟机启动或者结束 作为触发条件,执行脚本 如果是虚拟机,可以借助 libvirt hook: docker 的我不太清除,有知道的朋友可以分享一下。 Edited September 11, 2023 by JackieWu Quote Link to comment
Solution suosuosi Posted September 12, 2023 Solution Share Posted September 12, 2023 (edited) #!/bin/bash # 设置你要检查容器的名称 container_name="AList" # 获取容器的状态 container_status=$(docker inspect -f '{{.State.Status}}' "$container_name" 2>/dev/null) # 检查容器状态并输出结果 if [ -z "$container_status" ]; then echo "容器 '$container_name' 不存在或无法访问。" exit 1 fi if [ "$container_status" == "running" ]; then echo "容器 '$container_name' 已经运行。" # 容器运行中,需要执行的代码 else echo "容器 '$container_name' 已关闭。" # 容器停运,需要执行的代码 fi 这是判断的脚本,判断后执行什么,就需要自己加了 Edited September 12, 2023 by suosuosi 1 Quote Link to comment
llm Posted September 12, 2023 Author Share Posted September 12, 2023 在两位大佬的指导下,本小白成功实现了一定的unraid自动化,下面分享出来给大家参考 Quote Link to comment
llm Posted September 12, 2023 Author Share Posted September 12, 2023 (edited) 游戏虚拟机关闭后自动降低显卡功耗 效果: 虚拟机启动后独立显卡自动进入工作模式,unraid无法查看显卡功耗 虚拟机关机后unraid接管独立显卡,显卡进入低功耗模式 功耗对比:索泰RTX4080天启OC,unraid接管状态下功耗由45W降至16W,风扇由低速转动变为停转 其他参考文章: [Unraid] 不直通独显将N卡直接传递给虚拟机使用并设置虚拟机关机时降低显卡功耗_NAS存储_什么值得买 (smzdm.com) UnRaid硬件直通的n种正确姿势_unraid 显卡直通-CSDN博客 Spoiler 打开unraid终端,进入/dev/disk/by-id/,查看硬盘名称用于直通硬盘 总结: unraid不屏蔽显卡 安装插件 Nvidia Driver 和 Gpu Statistics 主界面→flash→在unraid os中 append 和 initrd=/bzroot 之间添加 video=efifb:off(记得加空格) 在Windows物理机上使用GPU-Z提取显卡BIOS的rom文件。如果没有其他机器,可以在unraid里的硬盘里选一块固态(后称为硬盘A),先数据迁移到其他盘,然后取消分配,开启Unassigned Devices插件的破坏性模式,将硬盘A格式化,然后创建一个虚拟机,将硬盘A直通给虚拟机,在上面安装windows,然后重启机器,启动项选择硬盘A,就进入windows物理机了。 安装HxD或者使用VSCode安装Hex Editor扩展修改rom文件,搜索“VGA”,定位第一个,然后删除55 AA之前的全部内容,如图删除00009400那一行之前的全部内容(00009400那一行不删除) 按照一般直通显卡的方式操作 User Scripts创建脚本,内容如下 #!/bin/bash nvidia-smi --persistence-mode=1 打开unraid终端,在/etc/libvirt/hooks/目录下创建文件夹qemu.d,在qemu.d内创建脚本文件(随便命名,不需要后缀名),脚本内容如下 #!/bin/bash if [[ $2 == "release" ]] then bash /boot/config/plugins/user.scripts/scripts/gpu.lowpower/script fi 其中gpu.lowpower是上一步创建的脚本名,改成你自己的 额,写出来才发现,好像可以直接在qemu.d里那个脚本里把bash /boot/config/plugins/user.scripts/scripts/gpu.lowpower/script改成nvidia-smi --persistence-mode=1 Edited September 12, 2023 by llm 有错字 2 1 Quote Link to comment
JackieWu Posted September 12, 2023 Share Posted September 12, 2023 17 minutes ago, llm said: 游戏虚拟机关闭后自动降低显卡功耗 效果: 虚拟机启动后独立显卡自动进入工作模式,unraid无法查看显卡功耗 虚拟机关机后unraid接管独立显卡,显卡进入低功耗模式 功耗对比:索泰RTX4080天启OC,unraid接管状态下功耗由45W降至16W,风扇由低俗转动变为停转 其他参考文章: [Unraid] 不直通独显将N卡直接传递给虚拟机使用并设置虚拟机关机时降低显卡功耗_NAS存储_什么值得买 (smzdm.com) UnRaid硬件直通的n种正确姿势_unraid 显卡直通-CSDN博客 Reveal hidden contents 打开unraid终端,进入/dev/disk/by-id/,查看硬盘名称用于直通硬盘 总结: unraid不屏蔽显卡 安装插件 Nvidia Driver 和 Gpu Statistics 主界面→flash→在unraid os中 append 和 initrd=/bzroot 之间添加 video=efifb:off(记得加空格) 在Windows物理机上使用GPU-Z提取显卡BIOS的rom文件。如果没有其他机器,可以在unraid里的硬盘里选一块固态(后称为硬盘A),先数据迁移到其他盘,然后取消分配,开启Unassigned Devices插件的破坏性模式,将硬盘A格式化,然后创建一个虚拟机,将硬盘A直通给虚拟机,在上面安装windows,然后重启机器,启动项选择硬盘A,就进入windows物理机了。 安装HxD或者使用VSCode安装Hex Editor扩展修改rom文件,搜索“VGA”,定位第一个,然后删除55 AA之前的全部内容,如图删除00009400那一行之前的全部内容(00009400那一行不删除) 按照一般直通显卡的方式操作 User Scripts创建脚本,内容如下 #!/bin/bash nvidia-smi --persistence-mode=1 打开unraid终端,在/etc/libvirt/hooks/目录下创建文件夹qemu.d,在qemu.d内创建脚本文件(随便命名,不需要后缀名),脚本内容如下 #!/bin/bash if [[ $2 == "release" ]] then bash /boot/config/plugins/user.scripts/scripts/gpu.lowpower/script fi 其中gpu.lowpower是上一步创建的脚本名,改成你自己的 谢谢分享 Quote Link to comment
llm Posted September 12, 2023 Author Share Posted September 12, 2023 v2rayA代理应用市场自动化 由于搞clash和SSR总是不成功,我还是用的自己习惯的v2ray,但是有时候应用市场是能直连的,我不想一直开着代理。 但是v2rayA代理应用市场要改配置文件,在 /boot/config/plugins/community.applications/ 目录下创建文件proxy.cfg,所需命令如下 echo -n "" > /boot/config/plugins/community.applications/proxy.cfg echo "port=20171" >> /boot/config/plugins/community.applications/proxy.cfg echo "tunnel=1" >> /boot/config/plugins/community.applications/proxy.cfg echo "proxy=http://127.0.0.1" >> /boot/config/plugins/community.applications/proxy.cfg 但是改了配置文件就不能直连了,之前我是用两个脚本分别手动创建/删除这个文件 自动化效果: 每10秒检查一次v2rayA这个docker的状态以及代理配置文件是否存在且不为空,据此进行相应操作 方法如下: 新建脚本ca.proxy.v2raya #!/bin/bash # 删除日志文件 rm /tmp/user.scripts/tmpScripts/ca.proxy.v2raya/log.txt # 设置你要检查容器的名称,改成自己的 container_name="v2rayA" # 获取容器的状态 container_status=$(docker inspect -f '{{.State.Status}}' "$container_name" 2>/dev/null) # 获取代理状态(文件存在且不为空) proxy_status=0 if [ -e /boot/config/plugins/community.applications/proxy.cfg ]; then if [ -s /boot/config/plugins/community.applications/proxy.cfg ]; then proxy_status=1 fi fi # 检查容器状态 if [ -z "$container_status" ]; then # 容器 '$container_name' 不存在或无法访问。 exit 1 fi if [ "$container_status" == "running" ]; then # 容器 '$container_name' 已经运行。 if [ $proxy_status == 1 ]; then exit 0 fi echo -n "" > /boot/config/plugins/community.applications/proxy.cfg echo "port=20171" >> /boot/config/plugins/community.applications/proxy.cfg echo "tunnel=1" >> /boot/config/plugins/community.applications/proxy.cfg echo "proxy=http://127.0.0.1" >> /boot/config/plugins/community.applications/proxy.cfg else # 容器 '$container_name' 已关闭。 if [ $proxy_status == 0 ]; then exit 0 fi rm /boot/config/plugins/community.applications/proxy.cfg 2>/dev/nul fi 新建用于定时执行ca.proxy.v2raya的脚本auto.v2raya_proxy.ca #!/bin/bash # 删除日志文件 rm /tmp/user.scripts/tmpScripts/auto.v2raya_proxy.ca/log.txt bash /boot/config/plugins/user.scripts/scripts/ca.proxy.v2raya/script sleep 10s bash /boot/config/plugins/user.scripts/scripts/ca.proxy.v2raya/script sleep 10s bash /boot/config/plugins/user.scripts/scripts/ca.proxy.v2raya/script sleep 10s bash /boot/config/plugins/user.scripts/scripts/ca.proxy.v2raya/script sleep 10s bash /boot/config/plugins/user.scripts/scripts/ca.proxy.v2raya/script sleep 10s bash /boot/config/plugins/user.scripts/scripts/ca.proxy.v2raya/script 将auto.v2raya_proxy.ca的定时执行设为Custom,然后设为* * * * *,意思是每分钟执行一次auto.v2raya_proxy.ca。而auto.v2raya_proxy.ca的内容为每10秒执行一次ca.proxy.v2raya,共6次。 Quote Link to comment
llm Posted September 12, 2023 Author Share Posted September 12, 2023 另外,我发现v2rayA会自动代理应用市场以外的流量,比如plex刮削anidb数据的时候,不需要进行配置 Quote Link to comment
shadowtyw Posted November 15, 2023 Share Posted November 15, 2023 On 9/12/2023 at 5:01 PM, llm said: 游戏虚拟机关闭后自动降低显卡功耗 效果: 虚拟机启动后独立显卡自动进入工作模式,unraid无法查看显卡功耗 虚拟机关机后unraid接管独立显卡,显卡进入低功耗模式 功耗对比:索泰RTX4080天启OC,unraid接管状态下功耗由45W降至16W,风扇由低速转动变为停转 其他参考文章: [Unraid] 不直通独显将N卡直接传递给虚拟机使用并设置虚拟机关机时降低显卡功耗_NAS存储_什么值得买 (smzdm.com) UnRaid硬件直通的n种正确姿势_unraid 显卡直通-CSDN博客 Hide contents 打开unraid终端,进入/dev/disk/by-id/,查看硬盘名称用于直通硬盘 总结: unraid不屏蔽显卡 安装插件 Nvidia Driver 和 Gpu Statistics 主界面→flash→在unraid os中 append 和 initrd=/bzroot 之间添加 video=efifb:off(记得加空格) 在Windows物理机上使用GPU-Z提取显卡BIOS的rom文件。如果没有其他机器,可以在unraid里的硬盘里选一块固态(后称为硬盘A),先数据迁移到其他盘,然后取消分配,开启Unassigned Devices插件的破坏性模式,将硬盘A格式化,然后创建一个虚拟机,将硬盘A直通给虚拟机,在上面安装windows,然后重启机器,启动项选择硬盘A,就进入windows物理机了。 安装HxD或者使用VSCode安装Hex Editor扩展修改rom文件,搜索“VGA”,定位第一个,然后删除55 AA之前的全部内容,如图删除00009400那一行之前的全部内容(00009400那一行不删除) 按照一般直通显卡的方式操作 User Scripts创建脚本,内容如下 #!/bin/bash nvidia-smi --persistence-mode=1 打开unraid终端,在/etc/libvirt/hooks/目录下创建文件夹qemu.d,在qemu.d内创建脚本文件(随便命名,不需要后缀名),脚本内容如下 On 9/12/2023 at 5:01 PM, llm said: 游戏虚拟机关闭后自动降低显卡功耗 效果: 虚拟机启动后独立显卡自动进入工作模式,unraid无法查看显卡功耗 虚拟机关机后unraid接管独立显卡,显卡进入低功耗模式 功耗对比:索泰RTX4080天启OC,unraid接管状态下功耗由45W降至16W,风扇由低速转动变为停转 其他参考文章: [Unraid] 不直通独显将N卡直接传递给虚拟机使用并设置虚拟机关机时降低显卡功耗_NAS存储_什么值得买 (smzdm.com) UnRaid硬件直通的n种正确姿势_unraid 显卡直通-CSDN博客 Hide contents 打开unraid终端,进入/dev/disk/by-id/,查看硬盘名称用于直通硬盘 总结: unraid不屏蔽显卡 安装插件 Nvidia Driver 和 Gpu Statistics 主界面→flash→在unraid os中 append 和 initrd=/bzroot 之间添加 video=efifb:off(记得加空格) 在Windows物理机上使用GPU-Z提取显卡BIOS的rom文件。如果没有其他机器,可以在unraid里的硬盘里选一块固态(后称为硬盘A),先数据迁移到其他盘,然后取消分配,开启Unassigned Devices插件的破坏性模式,将硬盘A格式化,然后创建一个虚拟机,将硬盘A直通给虚拟机,在上面安装windows,然后重启机器,启动项选择硬盘A,就进入windows物理机了。 安装HxD或者使用VSCode安装Hex Editor扩展修改rom文件,搜索“VGA”,定位第一个,然后删除55 AA之前的全部内容,如图删除00009400那一行之前的全部内容(00009400那一行不删除) 按照一般直通显卡的方式操作 User Scripts创建脚本,内容如下 #!/bin/bash nvidia-smi --persistence-mode=1 打开unraid终端,在/etc/libvirt/hooks/目录下创建文件夹qemu.d,在qemu.d内创建脚本文件(随便命名,不需要后缀名),脚本内容如下 #!/bin/bash if [[ $2 == "release" ]] then bash /boot/config/plugins/user.scripts/scripts/gpu.lowpower/script fi 其中gpu.lowpower是上一步创建的脚本名,改成你自己的 额,写出来才发现,好像可以直接在qemu.d里那个脚本里把bash /boot/config/plugins/user.scripts/scripts/gpu.lowpower/script改成nvidia-smi --persistence-mode=1 其中gpu.lowpower是上一步创建的脚本名,改成你自己的 额,写出来才发现,好像可以直接在qemu.d里那个脚本里把bash /boot/config/plugins/user.scripts/scripts/gpu.lowpower/script改成nvidia-smi --persistence-mode=1 先谢谢兄弟分享,麻烦问下,只要设置第八个步骤的那个脚本就行了吗?那脚本里面的if [[ $2 == "release" ]]是什么意思,判断什么? Quote Link to comment
shadowtyw Posted November 15, 2023 Share Posted November 15, 2023 On 9/12/2023 at 5:01 PM, llm said: 游戏虚拟机关闭后自动降低显卡功耗 效果: 虚拟机启动后独立显卡自动进入工作模式,unraid无法查看显卡功耗 虚拟机关机后unraid接管独立显卡,显卡进入低功耗模式 功耗对比:索泰RTX4080天启OC,unraid接管状态下功耗由45W降至16W,风扇由低速转动变为停转 其他参考文章: [Unraid] 不直通独显将N卡直接传递给虚拟机使用并设置虚拟机关机时降低显卡功耗_NAS存储_什么值得买 (smzdm.com) UnRaid硬件直通的n种正确姿势_unraid 显卡直通-CSDN博客 Reveal hidden contents 打开unraid终端,进入/dev/disk/by-id/,查看硬盘名称用于直通硬盘 总结: unraid不屏蔽显卡 安装插件 Nvidia Driver 和 Gpu Statistics 主界面→flash→在unraid os中 append 和 initrd=/bzroot 之间添加 video=efifb:off(记得加空格) 在Windows物理机上使用GPU-Z提取显卡BIOS的rom文件。如果没有其他机器,可以在unraid里的硬盘里选一块固态(后称为硬盘A),先数据迁移到其他盘,然后取消分配,开启Unassigned Devices插件的破坏性模式,将硬盘A格式化,然后创建一个虚拟机,将硬盘A直通给虚拟机,在上面安装windows,然后重启机器,启动项选择硬盘A,就进入windows物理机了。 安装HxD或者使用VSCode安装Hex Editor扩展修改rom文件,搜索“VGA”,定位第一个,然后删除55 AA之前的全部内容,如图删除00009400那一行之前的全部内容(00009400那一行不删除) 按照一般直通显卡的方式操作 User Scripts创建脚本,内容如下 #!/bin/bash nvidia-smi --persistence-mode=1 打开unraid终端,在/etc/libvirt/hooks/目录下创建文件夹qemu.d,在qemu.d内创建脚本文件(随便命名,不需要后缀名),脚本内容如下 #!/bin/bash if [[ $2 == "release" ]] then bash /boot/config/plugins/user.scripts/scripts/gpu.lowpower/script fi 其中gpu.lowpower是上一步创建的脚本名,改成你自己的 额,写出来才发现,好像可以直接在qemu.d里那个脚本里把bash /boot/config/plugins/user.scripts/scripts/gpu.lowpower/script改成nvidia-smi --persistence-mode=1 谢谢兄弟分享,步骤7之前的我都会,就想问一句,下面两个脚本只需要用8步骤就行了吗(把bash换成nvidia那个),请问下if [[ $2 == "release" ]]这个是判断什么?谢谢 Quote Link to comment
llm Posted November 15, 2023 Author Share Posted November 15, 2023 13 minutes ago, shadowtyw said: 谢谢兄弟分享,步骤7之前的我都会,就想问一句,下面两个脚本只需要用8步骤就行了吗(把bash换成nvidia那个),请问下if [[ $2 == "release" ]]这个是判断什么?谢谢 后来发现还是需要步骤7的,因为开机时也需要运行一次这个脚本 if [[ $2 == "release" ]] 的意思是 “当虚拟机成功关机、显卡控制权交回unraid主系统” Quote Link to comment
shadowtyw Posted November 15, 2023 Share Posted November 15, 2023 40 minutes ago, llm said: 感谢兄弟的指导,已经成功了!!! 我在这里提示几点给其他兄弟: 1.步骤8中的脚本切记新建后记得给权限(chmod +x /etc/libvirt/hooks/qemu.d/****); 2.如果nvidia-smi --persistence-mode=1 这个命令不起作用或者提示错误之类的,请尝试nvidia-smi -pm 1 这个命令。(我就是这样) 再次感谢 Quote Link to comment
dengniweiyi Posted November 23, 2023 Share Posted November 23, 2023 感谢分享,Mark一下,慢慢研究😀 Quote Link to comment
final Posted June 8 Share Posted June 8 6.12.8下是不是不能这么用 虚拟机关机后没有调那个脚本呢 日志里看不到信息 Quote Link to comment
llm Posted June 16 Author Share Posted June 16 On 6/8/2024 at 9:40 PM, final said: 6.12.8下是不是不能这么用 虚拟机关机后没有调那个脚本呢 日志里看不到信息 我现在是6.12.10,还是正常的 Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.