#! /bin/bash # Script from Frans Pop set -e if [ -z "$1" ]; then echo "Usage: insserv-seq-changes /var/lib/insserv/" exit 1 fi oldtar="$(tar tzf $1)" for i in S $(seq 0 6); do echo "Runlevel $i" new="$(cd /etc/rc$i.d; ls -1 [KS]* | sort | nl)" old="$(echo "$oldtar" | grep "^rc$i.d/[KS]" | cut -d/ -f2 | sort | nl)" case $i in S|0|6) old="$(echo "$old" | sed -r "s/[KS][0-9]+//")" new="$(echo "$new" | sed -r "s/[KS][0-9]+//")" ;; *) old="$(echo "$old" | sed -r "s/([KS])[0-9]+/\1_/")" new="$(echo "$new" | sed -r "s/([KS])[0-9]+/\1_/")" ;; esac echo "$new" | while read num cmd; do oldnum=$(echo "$old" | grep "[[:space:]]$cmd$" | awk '{print $1}') if [ "$oldnum" ]; then diff=$(($num - $oldnum)) else oldnum="---" diff="" fi if [ ${#cmd} -ge 16 ]; then echo -e "$cmd\t$num\t$oldnum\t$diff" elif [ ${#cmd} -ge 8 ]; then echo -e "$cmd\t\t$num\t$oldnum\t$diff" else echo -e "$cmd\t\t\t$num\t$oldnum\t$diff" fi done echo "$old" | while read num cmd; do if ! echo "$new" | grep -q "[[:space:]]$cmd$"; then if [ ${#cmd} -ge 16 ]; then echo -e "$cmd\t---\t$oldnum" elif [ ${#cmd} -ge 8 ]; then echo -e "$cmd\t\t---\t$oldnum" else echo -e "$cmd\t\t\t---\t$oldnum" fi fi done echo done