我有以下脚本,如何在debian linux关机时运行它? (不想使用GUI)
#!/bin/bash vms=$(vmrun list | grep '/'); for vm in ${vms} do echo 'suspending ' $vm vmrun suspend $vm soft done
我试图用chmod + x权限将它添加到/ usr / local / bin。 然后我创build了符号链接到rc0.d(关机)和rc6.d(重启)。
然后我做了update-rc.d shutdown_vms 0 6。
当我做关机-r现在,它切换到控制台模式重新启动….在这一点上,我可以看到一个错误消息,说明shutdown_vms失败。
我这是正确的方法来安装关机脚本,为什么它失败(我在哪里看日志?)
编辑:我使用了命令update-rc.d -f shutdown_vms start 0 0 6。
当我查看rc0.d(shutdown)的启动列表时,我发现shutdown_vms,vmware和gdm都是0的顺序。我想如果gdm在shutdown_vms之前触发,它将会终止vms。 我认为这是发生了什么事情,因为当我logging脚本执行时运行的vms的数量,它logging0。
我可以将gdm / vmware的顺序更改为1,以便shutdown_vms先运行?
这看起来像你应该把它放在一个适当的init脚本作为“停止”的方法。 由于退出代码不等于零,所以当前脚本可能失败。
除此之外,你应该附上“$()”,因为你的vms列表可以包含空格。
用sh -x YOURSCRIPT stoptesting你的脚本。
尝试添加:退出0下完成。
所以它看起来像gdm在关机过程中做到这一点。 也许更好的方法是让你的vms脚本testing是否真的有必要通过closures程序。 在这种情况下,它不会closures一个不存在的进程。 这个不存在的过程可能会导致你的错误信息。
你是否已经在/etc/rc[06].d目录下以'K'开头来命名文件? 如果你不这样做,他们将不会在关机时执行。
嗯…如果失败的输出可以显示,那将会很好。 这可能很容易清理一些事情。
还有一个想法,试着在#!/ bin / sh后面加个PATH语句。
#! /bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:.....<anything else you need> export PATH . . (rest of script) . exit 0
我不熟悉vmlist。