6,534
edits
Changes
→Running Commands in Container: filled in
== Running Commands in Container ==
Usually, a Container administrator logs in to the Container via network and executes any commands in the Container as on any other Linux box. However, you might need to execute commands inside Containers bypassing the normal login sequence. This can be helpful if:
* You do not know the Container login information, and you need to run some diagnosis commands inside the Container in order to verify that it is operational.
* Network access is absent for a Container. For example, the Container administrator might have accidentally applied incorrect firewalling rules or stopped the SSH daemon.
The OpenVZ software allows you to execute commands in a Container in these cases. Use the <code>vzctl exec</code> command for running a command inside the Container with the given ID. The session below illustrates the situation when the SSH daemon is not started:
# '''vzctl exec 103 /etc/init.d/sshd status'''
openssh-daemon is stopped
# '''vzctl exec 103 /etc/init.d/sshd start'''
Starting sshd: [ OK ]
# '''vzctl exec 103 /etc/init.d/sshd status'''
openssh-daemon (pid 9899) is running...
Now Container users can log in to the Container via SSH (assuming that networking and firewall are not misconfigured).
When executing commands inside a Container from shell scripts, use the <code>vzctl exec2</code> command. It has the same syntax as <code>vzctl exec</code> but returns the exit code of the command being executed instead of the exit code of <code>vzctl</code> itself. You can check the exit code to find out whether the command has completed successfully.
If you wish to execute a command in all running Containers, you can use the following script:
# '''for CT in $(vzlist -H -o ctid); do echo "== CT $CT =="; vzctl exec $CT ''command''; done'''
where ''<code>command</code>'' is the command to be executed in all the running Containers. For example:
# '''for CT in $(vzlist -H -o ctid); do echo "== CT $CT =="; vzctl exec $CT uptime; done'''
== CT 103 ==
15:17:19 up 13 min, 0 users, load average: 0.00, 0.00, 0.00
== CT 123123123 ==
15:17:19 up 22:00, 0 users, load average: 0.00, 0.00, 0.00
<noinclude>{{UG/Footer}}</noinclude>