On Fri, Nov 21, 2003 at 12:00:32PM -0500, David Z Maze wrote: > "Sridhar M.A." <[EMAIL PROTECTED]> writes: > > > If you want to temporarily disable booting to xdm on your VT100 and > > revert to xdm once you get back the monitor, just disable the xdm > > startup from all levels. > > > > # update-rc.d -f xdm remove > > > > After you get back the monitor, > > > > # update-rc.d xdm defaults > > Neither of these are the right answer. (a) will cause the /etc/rc?.d > links to be put back into place if the package gets upgraded; (b) will > put the links back, but at the wrong priority, so xdm would get > started before things like cron. Not a huge deal, but it's probably > easier to leave one runlevel (say, 5) in the "pristine" state; delete > /etc/rc2.d/S99xdm if you don't want xdm to start, and then use 'ln -s' > to make a link identical to what's in /etc/rc5.d if you want to bring > it back. >
I have written a bash script to remove/restore any file entry in '/etc/init.d', including ALL links and save them to '/etc/init.d/SAVE/' as <file>.tar.gz. e.g. "init.d -s xdm" saves /etc/init.d/xdm and ALL links referring to xdm to "/etc/init.d/SAVE/xdm.tar.gz "init.d -r xdm" will restore xdm and ALL links to place The advantage: any change made to "xdm" or to any link adjustment will be saved and, if needed, later restored to its original state. One can easily test the system's reaction to removing a file, and, if problems show up, restore the file. Here is this script: (on my system stored in '/usr/local/sh') --------------------- #!/bin/sh # \wwf 9.3.02 USE () { echo echo "========================================================" echo "Save+Remove // Restore Start_Stop Files in /etc/init.d/" echo "========================================================" setterm -bold on echo 'including related Links in /etc/rc?.d/' setterm -bold off echo echo echo "usage:" echo echo "$0 [{-s|-r}] <fname ...> (-s = default)" echo "--------------------------------------------------------" echo '( put Filename Wildcards in Double-Quotes: "*", "?" )' echo echo echo 'Options:' echo '--------' echo '-s = (S)ave files to /etc/init.d/SAVE/<file>.tar.gz' echo '-r = (R)estore files from /etc/init.d/SAVE/<file>.tar.gz' echo echo '(-s: Files are MOVED from Directories to Archive)' echo '(-r: Files are MOVED from Archive to Directories)' echo echo } Save () { test -d /etc/init.d/SAVE || mkdir /etc/init.d/SAVE echo "Save+Deinstall init.d Files to /etc/init.d/SAVE/<file>.tar.gz" echo "=============================================================" cd /etc/init.d for FILE in [EMAIL PROTECTED]; do echo # Skip bad Params if [ ! -f ${FILE} ]; then echo "/etc/init.d/${FILE}: NO FILE -- skipping Param" echo "------------------------------------------------------" echo continue ## comment this line: save links only # ## when /etc/init.d/<file> is missing fi if [ -f SAVE/${FILE}.tar.gz ]; then echo "Dest_Archive already exists:" echo "NO REwriting to /etc/SAVE/${FILE}.tar.gz -- skipping Param" echo "----------------------------------------------------------" echo continue fi # Begin of Job echo -n "Save+Deinstall /etc/init.d/${FILE} ? "; read answ case "$answ" in y*|Y*|j*|J*) echo "Answer = ${answ}";; # Save Files * ) echo "Answer = ${answ}: NO Action -- skipping Param" echo continue esac echo echo Saving spec''d Files to /etc/init.d/SAVE/${FILE}.tar.gz echo "---------------------------------------------------------" find /etc/rc* /etc/init.d -name "*${FILE}" | \ tar -cvzf /etc/init.d/SAVE/${FILE}.tar.gz -PT - echo echo "Comparing Tar Archive to orig. Source Files" echo "-------------------------------------------" tar -dvzf /etc/init.d/SAVE/${FILE}.tar.gz if [ `echo $?` = 0 ]; then echo echo "==================" echo "All Files saved OK" echo "==================" echo echo -n "Remove saved Source Files now ? "; read answ case "$answ" in y*|Y*|j*|J*) echo "Answer = ${answ}";; # Remove Files * ) echo "Answer = ${answ}: Files NOT removed" i echo continue esac echo echo "Removing saved Files from /etc/rc*/ /etc/init.a/" find /etc/rc* /etc/init.d -name "*${FILE}" -exec rm {} \; else echo echo "ERROR, BAD Match!!" echo "==================" echo "/etc/init.d/SAVE/${FILE}.tar.gz differs to" echo "Source Files in /etc/rc*/, /etc/init.d/" echo "NO File removed" echo fi done } Restore () { echo "Reinstall Files from /etc/init.d/SAVE/<file>.tar.gz" echo "---------------------------------------------------" cd /etc/init.d/SAVE/ for FILE in [EMAIL PROTECTED]; do echo ARCHIV="" [ -f ${FILE} ] && ARCHIV=${FILE} [ -f ${FILE}.tar.gz ] && ARCHIV=${FILE}.tar.gz ## echo "File = " ${FILE} "Archive = " ${ARCHIV}; read answ if [ -z ${ARCHIV} ]; then echo "NO matching Archive: " ${FILE} "-- skipping Param" echo continue fi echo -n "Reinstall ${ARCHIV} ? "; read answ case "$answ" in y*|Y*|j*|J*) ;; # Answer = 'yes', start Job * ) echo "Answer = ${answ}: NO Action taken!!"; echo continue;; esac echo "Reinstalling Archive to /etc/rc*, /etc/init.d/" tar -xvkzf ${ARCHIV} -P echo -n "Remove" ${ARCHIV} "now ? "; read answ case "$answ" in y*|Y*|j*|J*) echo "Answer = ${answ}";; # Remove Archive * ) echo "Answer = ${answ}: Archive NOT removed" echo continue;; esac echo echo "Removing" /etc/init.d/SAVE/${ARCHIV} rm ${ARCHIV} done } Delete () { rm -i /etc/init.d/SAVE/${ARCHIV} } # ----------------------------------------------------------------- # main prog # ----------------------------------------------------------------- clear [ $# = 0 ] && USE && exit 1 # -> No Param: Help JOB=Save; # default -> Save to tar archive, Deinstall case $1 in -s ) JOB=Save; shift;; # -> Save to tar archive, Deinstall -r ) JOB=Restore; shift;; # -> Reinstall from tar archive -d ) JOB=Delete; shift;; # -> Delete tar archive -* ) USE; exit 1 # -> Help esac # Select JOB: Deinstall, Reinstall or Remove ${JOB} [EMAIL PROTECTED] && exit 0 || exit -1 # ------------------------------------------ # End of Program # ------------------------------------------ -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]