From 2ff32aede40c6f18266ee6cdce780ebbaf74e412 Mon Sep 17 00:00:00 2001 From: CyberLeo Date: Wed, 4 May 2011 03:19:05 -0500 Subject: [PATCH] j: support starting and stopping chroot services along with chroot itself --- j | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/j b/j index 6602fb5..157b899 100755 --- a/j +++ b/j @@ -133,6 +133,18 @@ j_start() { meh "starting ${jname} ..." mount -t devpts devpts "${jdir}/dev/pts" mount -t proc proc "${jdir}/proc" + + # Start all services in /etc/rcJ.d + j_root_eval "${jname}" '[ -d /etc/rcJ.d ] && ( ls -1 /etc/rcJ.d/* | grep /S | sed -e "s/$/ start/" | sh )' +} + +# Execute command in chroot as root +j_root_eval() { + jname="${1:-${jname}}" + j_up "${jname}" || wtf "chroot not running" + eval "$(j_params "${jname}")" + shift + env -i ${jenv} /usr/bin/chroot "${jdir}" /bin/sh -c "${*}" } # Execute command in chroot @@ -147,7 +159,7 @@ j_eval() { j_shell() { jname="${1:-${jname}}" eval "$(j_params "${jname}")" - j_eval "${jname}" "${jshell} -l" + j_eval "${jname}" "cd; exec ${jshell} -l" } # Unmount /dev/pts and /proc in the chroot @@ -156,6 +168,10 @@ j_stop() { eval "$(j_params "${jname}")" j_up "${jname}" || return 0 meh "stopping ${jname} ..." + + # Stop all services in /etc/rcJ.d + j_root_eval "${jname}" '[ -d /etc/rcJ.d ] && ( ls -1 /etc/rcJ.d/* | grep /S | sed -e "s/$/ stop/" | sh )' + umount "${jdir}/proc" umount "${jdir}/dev/pts" } -- 2.45.0