Your message dated Wed, 09 Aug 2006 03:46:08 +0200
with message-id <[EMAIL PROTECTED]>
and subject line Bug#382113: Acknowledgement (console-tools: console-screen.sh
spawns many unnecessary processes)
has caused the attached Bug report to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere. Please contact me immediately.)
Debian bug tracking system administrator
(administrator, Debian Bugs database)
--- Begin Message ---
Package: console-tools
Version: 1:0.2.3dbs-64
Severity: normal
Tags: patch
console-screen.sh init script spawns many really unncessary processes.
I'm providing patch along with commentary to fix this.
--- console-screen.sh.orig 2006-08-09 02:04:35.000000000 +0200
+++ console-screen.sh 2006-08-09 02:02:38.000000000 +0200
@@ -82,16 +82,15 @@
# start vcstime
if [ "${DO_VCSTIME}" = "yes" -a -x ${VCSTIME} ] ; then
- echo -n Starting clock on text console: `basename ${VCSTIME}`
+ echo Starting clock on text console: ${VCSTIME}
Spawning process to canoncalize executable name seems unncessary for me...
${VCSTIME} ${VCSTIME_OPT} &
- echo .
Style... I really don't like "echo -n"; ...; echo "done" combo.
This is just personal thing, "echo" is shell built-in so it doesn't do
harm, please ignore this if you like different way. (and it seems you
do :)
fi
# Global default font+sfm
if [ "${SCREEN_FONT}" ]
then
- echo -n "Setting up general console font... "
+ echo "Setting up general console font."
SCREEN_FONT="-f ${SCREEN_FONT}"
# maybe use an external SFM
@@ -101,76 +100,56 @@
# _before_ getty and so only one console running. So,
# Set for the first 6 VCs (as they are allocated in /etc/inittab)
NUM_CONSOLES=`fgconsole --next-available`
- NUM_CONSOLES=`expr ${NUM_CONSOLES} - 1`
+ NUM_CONSOLES=$(($NUM_CONSOLES - 1))
$((expression)) works with dash/ash, no need for expr.
[ ${NUM_CONSOLES} -eq 1 ] && NUM_CONSOLES=6
- for vc in `seq 0 ${NUM_CONSOLES}`
+ i=0
+ while [ $i -lt $NUM_CONSOLES ]
do
- ${SETFONT} --tty=${DEVICE_PREFIX}$vc ${SETFONT_OPT} ${SCREEN_FONT}
${SCREEN_FONT_MAP} || { echo " failed."; break; }
- if [ "$vc" -eq ${NUM_CONSOLES} ]; then echo " done."; fi
+ ${SETFONT} --tty=${DEVICE_PREFIX}$i ${SETFONT_OPT} ${SCREEN_FONT}
${SCREEN_FONT_MAP} || { echo "$i failed."; break; }
+ i=$(($i + 1))
done
fi
seq of course spawns process... "[" and "$((expression))" is built-in.
Here goes tricky part, I wont explain this -- I dont use SFMs so I
fixed ACMs and copied changes here... I haven't tested font+sfm
part! (It should work, though.)
- # Per-VC font+sfm
- PERVC_FONTS="`set | grep "^SCREEN_FONT_vc[0-9]*=" | tr -d \' `"
- if [ "${PERVC_FONTS}" ]
+ # Per-VC SFMs
+ VCS="`set | grep '^SCREEN_FONT_vc[0-9]*=' | sed -e 's/^SCREEN_FONT_vc//'
-e 's/=.*//'`"
+ if [ "${VCS}" ]
then
- echo -n "Setting up per-VC fonts: "
- for font in ${PERVC_FONTS}
+ echo "Setting up per-VC fonts."
+ for vc in ${VCS}
do
- # extract VC and FONTNAME info from variable setting
- vc=`echo $font | cut -b15- | cut -d= -f1`
eval font=\$SCREEN_FONT_vc$vc
- if [ X"$QUIET_PERVC" != X1 ] ; then
- echo -n "${DEVICE_PREFIX}${vc}, "
- fi
- # eventually find an associated SFM
eval sfm=\${SCREEN_FONT_MAP_vc${vc}}
[ "$sfm" ] && sfm="-u $sfm"
-
${SETFONT} --tty=${DEVICE_PREFIX}$vc ${SETFONT_OPT} -f $font $sfm
done
- echo "done."
fi
-
# Global ACM
[ "${APP_CHARSET_MAP}" ] && ${CHARSET} G0 ${APP_CHARSET_MAP}
ACMs start here:
-
# Per-VC ACMs
- PERVC_ACMS="`set | grep "^APP_CHARSET_MAP_vc[0-9]*=" | tr -d \' `"
- if [ "${PERVC_ACMS}" ]
+ VCS="`set | grep '^APP_CHARSET_MAP_vc[0-9]*=' | sed -e
's/^APP_CHARSET_MAP_vc//' -e 's/=.*//'`"
Here, by use of different construct I got list of numbers instead of
APP_CHARSET_MAP_vc-thing that need to be parsed in every iteration of loop.
+ if [ "${VCS}" ]
then
- echo -n "Setting up per-VC ACM's: "
- for acm in ${PERVC_ACMS}
+ echo "Setting up per-VC ACM's."
+ for vc in ${VCS}
do
- # extract VC and FONTNAME info from variable setting
- vc=`echo $acm | cut -b19- | cut -d= -f1`
That saves many processess per iteration...
eval acm=\$APP_CHARSET_MAP_vc$vc
- if [ X"$QUIET_PERVC" != X1 ] ; then
- echo -n "${DEVICE_PREFIX}${vc} ($acm), "
- fi
Personal style... sorry for that. ;)
- eval "${CHARSET} --tty='${DEVICE_PREFIX}$vc' G0 '$acm'"
+ ${CHARSET} --tty="${DEVICE_PREFIX}$vc" G0 "$acm"
eval wasn't needed there, was it?
done
- echo "done."
fi
# Go to UTF-8 mode as necessary
#
- ENV_FILE="/dev/null"
+ ENV_FILE=''
[ -r /etc/environment ] && ENV_FILE="/etc/environment"
[ -r /etc/default/locale ] && ENV_FILE="/etc/default/locale"
- for var in LANG LC_ALL LC_CTYPE ; do
- value=$(egrep "^\s*${var}=" $ENV_FILE | tail -n1 | cut -d= -f2)
- eval $var=$value
- done
- CHARMAP=`LANG=$LANG LC_ALL=$LC_ALL LC_CTYPE=$LC_CTYPE locale charmap`
- if test "$CHARMAP" = "UTF-8"
+ [ "$ENV_FILE" ] && CHARMAP=$(set -a && . "$ENV_FILE" && locale charmap)
This is fast -- by use of auto export shell option this work
flawlessly (I hope).
+ if test "$CHARMAP" = "UTF-8"
then
unicode_start 2> /dev/null || true
-
else
unicode_stop 2> /dev/null|| true
fi
@@ -212,14 +191,16 @@
# Allow user to remap keys on the console
if [ -r /etc/console-tools/remap ]
then
- dumpkeys < ${DEVICE_PREFIX}1 |sed -f /etc/console-tools/remap |loadkeys
--quiet
+ dumpkeys < ${DEVICE_PREFIX}1 | sed -f /etc/console-tools/remap |
loadkeys --quiet
Couldn't resist.
fi
# Set LEDS here
if [ "$LEDS" != "" ]
then
- for i in `seq 1 ${NUM_CONSOLES}`
+ i=1
+ while [ $i -lt $NUM_CONSOLES ]
do
setleds -D $LEDS < $DEVICE_PREFIX$i
+ i=$(($i + 1))
done
Yet another remove-seq, use-builtins fixes.
fi
}
These changes save about 90 pids! Main offenders are now consolechars
and charset by itself ("consolechars -f font -m acm" spawns 7 pids).
Please consider using parts (non-cosmetic ones) of my patch.
Thanks for your work!
Here goes patch without commentary:
--- console-screen.sh.orig 2006-08-09 02:04:35.000000000 +0200
+++ console-screen.sh 2006-08-09 02:02:38.000000000 +0200
@@ -82,16 +82,15 @@
# start vcstime
if [ "${DO_VCSTIME}" = "yes" -a -x ${VCSTIME} ] ; then
- echo -n Starting clock on text console: `basename ${VCSTIME}`
+ echo Starting clock on text console: ${VCSTIME}
${VCSTIME} ${VCSTIME_OPT} &
- echo .
fi
# Global default font+sfm
if [ "${SCREEN_FONT}" ]
then
- echo -n "Setting up general console font... "
+ echo "Setting up general console font."
SCREEN_FONT="-f ${SCREEN_FONT}"
# maybe use an external SFM
@@ -101,76 +100,56 @@
# _before_ getty and so only one console running. So,
# Set for the first 6 VCs (as they are allocated in /etc/inittab)
NUM_CONSOLES=`fgconsole --next-available`
- NUM_CONSOLES=`expr ${NUM_CONSOLES} - 1`
+ NUM_CONSOLES=$(($NUM_CONSOLES - 1))
[ ${NUM_CONSOLES} -eq 1 ] && NUM_CONSOLES=6
- for vc in `seq 0 ${NUM_CONSOLES}`
+ i=0
+ while [ $i -lt $NUM_CONSOLES ]
do
- ${SETFONT} --tty=${DEVICE_PREFIX}$vc ${SETFONT_OPT} ${SCREEN_FONT}
${SCREEN_FONT_MAP} || { echo " failed."; break; }
- if [ "$vc" -eq ${NUM_CONSOLES} ]; then echo " done."; fi
+ ${SETFONT} --tty=${DEVICE_PREFIX}$i ${SETFONT_OPT} ${SCREEN_FONT}
${SCREEN_FONT_MAP} || { echo "$i failed."; break; }
+ i=$(($i + 1))
done
fi
- # Per-VC font+sfm
- PERVC_FONTS="`set | grep "^SCREEN_FONT_vc[0-9]*=" | tr -d \' `"
- if [ "${PERVC_FONTS}" ]
+ # Per-VC SFMs
+ VCS="`set | grep '^SCREEN_FONT_vc[0-9]*=' | sed -e 's/^SCREEN_FONT_vc//'
-e 's/=.*//'`"
+ if [ "${VCS}" ]
then
- echo -n "Setting up per-VC fonts: "
- for font in ${PERVC_FONTS}
+ echo "Setting up per-VC fonts."
+ for vc in ${VCS}
do
- # extract VC and FONTNAME info from variable setting
- vc=`echo $font | cut -b15- | cut -d= -f1`
eval font=\$SCREEN_FONT_vc$vc
- if [ X"$QUIET_PERVC" != X1 ] ; then
- echo -n "${DEVICE_PREFIX}${vc}, "
- fi
- # eventually find an associated SFM
eval sfm=\${SCREEN_FONT_MAP_vc${vc}}
[ "$sfm" ] && sfm="-u $sfm"
-
${SETFONT} --tty=${DEVICE_PREFIX}$vc ${SETFONT_OPT} -f $font $sfm
done
- echo "done."
fi
-
# Global ACM
[ "${APP_CHARSET_MAP}" ] && ${CHARSET} G0 ${APP_CHARSET_MAP}
-
# Per-VC ACMs
- PERVC_ACMS="`set | grep "^APP_CHARSET_MAP_vc[0-9]*=" | tr -d \' `"
- if [ "${PERVC_ACMS}" ]
+ VCS="`set | grep '^APP_CHARSET_MAP_vc[0-9]*=' | sed -e
's/^APP_CHARSET_MAP_vc//' -e 's/=.*//'`"
+ if [ "${VCS}" ]
then
- echo -n "Setting up per-VC ACM's: "
- for acm in ${PERVC_ACMS}
+ echo "Setting up per-VC ACM's."
+ for vc in ${VCS}
do
- # extract VC and FONTNAME info from variable setting
- vc=`echo $acm | cut -b19- | cut -d= -f1`
eval acm=\$APP_CHARSET_MAP_vc$vc
- if [ X"$QUIET_PERVC" != X1 ] ; then
- echo -n "${DEVICE_PREFIX}${vc} ($acm), "
- fi
- eval "${CHARSET} --tty='${DEVICE_PREFIX}$vc' G0 '$acm'"
+ ${CHARSET} --tty="${DEVICE_PREFIX}$vc" G0 "$acm"
done
- echo "done."
fi
# Go to UTF-8 mode as necessary
#
- ENV_FILE="/dev/null"
+ ENV_FILE=''
[ -r /etc/environment ] && ENV_FILE="/etc/environment"
[ -r /etc/default/locale ] && ENV_FILE="/etc/default/locale"
- for var in LANG LC_ALL LC_CTYPE ; do
- value=$(egrep "^\s*${var}=" $ENV_FILE | tail -n1 | cut -d= -f2)
- eval $var=$value
- done
- CHARMAP=`LANG=$LANG LC_ALL=$LC_ALL LC_CTYPE=$LC_CTYPE locale charmap`
- if test "$CHARMAP" = "UTF-8"
+ [ "$ENV_FILE" ] && CHARMAP=$(set -a && . "$ENV_FILE" && locale charmap)
+ if test "$CHARMAP" = "UTF-8"
then
unicode_start 2> /dev/null || true
-
else
unicode_stop 2> /dev/null|| true
fi
@@ -212,14 +191,16 @@
# Allow user to remap keys on the console
if [ -r /etc/console-tools/remap ]
then
- dumpkeys < ${DEVICE_PREFIX}1 |sed -f /etc/console-tools/remap |loadkeys
--quiet
+ dumpkeys < ${DEVICE_PREFIX}1 | sed -f /etc/console-tools/remap |
loadkeys --quiet
fi
# Set LEDS here
if [ "$LEDS" != "" ]
then
- for i in `seq 1 ${NUM_CONSOLES}`
+ i=1
+ while [ $i -lt $NUM_CONSOLES ]
do
setleds -D $LEDS < $DEVICE_PREFIX$i
+ i=$(($i + 1))
done
fi
}
-- System Information:
Debian Release: testing/unstable
APT prefers testing
APT policy: (500, 'testing'), (10, 'unstable')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/dash
Kernel: Linux 2.6.17-riddly3
Locale: LANG=C, LC_CTYPE=pl_PL (charmap=ISO-8859-2)
Versions of packages console-tools depends on:
ii debconf [debconf-2.0] 1.5.2 Debian configuration management sy
ii libc6 2.3.6-15 GNU C Library: Shared libraries
ii libconsole 1:0.2.3dbs-64 Shared libraries for Linux console
ii sysvinit 2.86.ds1-15 System-V-like init utilities
Versions of packages console-tools recommends:
ii console-common 0.7.60 Basic infrastructure for text cons
ii console-data 2:1.0-2 Keymaps, fonts, charset maps, fall
-- no debconf information
--- End Message ---
--- Begin Message ---
> To: Karol Lewandowski <[EMAIL PROTECTED]>
This bug was filed with incorrectly configured reportbug -- it
contains address I no longer use. After reporting I noticed
that mail to me ([EMAIL PROTECTED]) was stuck frozen in mail queue
(but mail to @debian was sent successufly, I wasn't aware of
that) so I reported it again with properly configured reportbug.
(Its number is #382115.)
This is duplicate. Please close it.
Sorry for noise.
--- End Message ---