run script on shutdown

Posted on

run script on shutdown – Managing your servers can streamline the performance of your team by allowing them to complete complex tasks faster. Plus, it can enable them to detect problems early on before they get out of hand and compromise your business. As a result, the risk of experiencing operational setbacks is drastically lower.

But the only way to make the most of your server management is to perform it correctly. And to help you do so, this article will share nine tips on improving your server management and fix some problem about linux, ubuntu, debian, , .

I have the following script, how do I run it on shutdown in debian linux? (don’t want to use GUI)

vms=$(vmrun list | grep '/');
for vm in ${vms}
        echo 'suspending ' $vm
        vmrun suspend $vm soft

I tried adding it to /usr/local/bin with chmod +x permissions. Then I created symbolic links to rc0.d (shutdown) and rc6.d (reboot).

I then did update-rc.d shutdown_vms 0 6 .

When I do shutdown -r now, it switches to console mode to restart….at that point I can see a error message stating shutdown_vms has failed.

I this the proper way to install the shutdown script and why is it failing (where do I look in the logs?)

I used the command update-rc.d -f shutdown_vms start 0 0 6 .

When I look at the start up list for rc0.d (shutdown), i see that both shutdown_vms, vmware, and gdm are all order of 0. I think if gdm fires before shutdown_vms, it will kill the vms. I think this is what’s happening because when I log the number of vms running when the script executes, it logs 0.

Can I change the order of gdm/vmware to 1 so that shutdown_vms run first?

Solution :

This looks like you should put it into a proper init-script as “stop” method. Your current script propably fails, because of an exit-code that is not equal to zero.

Apart from that you should enclose “$()” because your list of vms propably contains white space.

Test your script by sh -x YOURSCRIPT stop.

try adding: exit 0 under done.

so it looks like gdm does this during the shutdown process.
maybe a better way is that you let your vms script test if it really is necessary to go through the shutdown procedure. In that case it does nothing to shutdown a non-existent process. This non-existent process probably caused your error message.

Have you named the file starting with a ‘K’ in the /etc/rc[06].d directories? If you don’t then they will not be executed on shutdown.

Hmmmm…It would be nice if the failure output could be shown. This would likely easily clearup some things.

One other thought, try putting in a PATH statement right after #!/bin/sh.

 #! /bin/sh
 PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:.....<anything else you need>
 export PATH
 .   (rest of script)
 exit 0

I’m not familiar with vmlist.

Leave a Reply

Your email address will not be published.