Difference between revisions of "ExecuteInAllVEs"
| (7 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
| + | I found myself often faced with a need to run the same command in all VEs, e.g. ''apachectl restart'' to restart all webservers or ''dmesg | tail'' to see the latest news from everybody. | ||
| + | |||
| + | You can loop through all VEs and execute this this easily: | ||
<code> | <code> | ||
| − | #!/bin/bash | + | for veid in `vzlist -Hoveid`; do vzctl exec $veid COMMAND; done |
| − | + | </code> | |
| − | if [ "$1" == "" ]; then | + | |
| − | + | Knowing this, you can also save some typing later by making a simple utility out of it. | |
| − | + | I like to call this ''/usr/sbin/vzexec'' so I can later just say ''vzexec apachectl restart'' | |
| − | + | <code> | |
| − | + | #!/bin/bash | |
| − | + | # vzexec -- execute a command on all VEs | |
| − | + | if [ "$1" == "" ]; then | |
| − | + | echo "$0 -- Execute a command on all VEs" | |
| − | fi | + | echo "" |
| − | for | + | echo "Example: vzexec service httpd restart" |
| − | + | echo "" | |
| − | + | echo "Note that variables are expanded in the host's shell, and use ' ' to prevent this." | |
| − | + | echo "Example: vzexec echo \$PWD and vzexec 'echo \$PWD' are different." | |
| − | + | exit | |
| − | + | fi | |
| − | done | + | for veid in `vzlist -Hoveid`; do |
| + | echo "*** VE $veid" | ||
| + | vzctl exec $veid $@ | ||
| + | done | ||
</code> | </code> | ||
Latest revision as of 15:23, 6 January 2008
I found myself often faced with a need to run the same command in all VEs, e.g. apachectl restart to restart all webservers or dmesg | tail to see the latest news from everybody.
You can loop through all VEs and execute this this easily:
for veid in `vzlist -Hoveid`; do vzctl exec $veid COMMAND; done
Knowing this, you can also save some typing later by making a simple utility out of it.
I like to call this /usr/sbin/vzexec so I can later just say vzexec apachectl restart
#!/bin/bash
# vzexec -- execute a command on all VEs
if [ "$1" == "" ]; then
echo "$0 -- Execute a command on all VEs"
echo ""
echo "Example: vzexec service httpd restart"
echo ""
echo "Note that variables are expanded in the host's shell, and use ' ' to prevent this."
echo "Example: vzexec echo \$PWD and vzexec 'echo \$PWD' are different."
exit
fi
for veid in `vzlist -Hoveid`; do
echo "*** VE $veid"
vzctl exec $veid $@
done