OnWorks Linux i Windows Online WorkStation

logo

Darmowy hosting online dla stacji roboczych

<Poprzedni | Spis treści | Następne>

D.1. /etc/rc.d/init.d/rc‌

rc skrypt jest pierwszym skryptem wywoływanym przez init i inicjującym proces rozruchu.

obraz

#! / bin / bash

################################################## ######################

# Rozpocznij RC

#

# Opis: Skrypt sterujący poziomem głównego uruchomienia

#

# Autorzy: Gerard Beekmans - [email chroniony]

#: DJ Lucas - [email chroniony]

# Aktualizacja: Bruce Dubbs - [email chroniony]

#

# Wersja: LFS 7.0

#

################################################## ######################

. /lib/lsb/init-functions print_error_msg()

{

log_failure_msg

# $i jest ustawiane po wywołaniu

MSG="FAILURE:\n\nNie powinieneś czytać tego komunikatu o błędzie.\n\n" MSG="${MSG}Oznacza to, że wystąpił nieprzewidziany błąd w\n" MSG="${MSG}${ W"

MSG="${MSG}, które zakończyło się z wartością zwracaną ${error_value}.\n"


MSG="${MSG}Jeśli jesteś w stanie prześledzić ten błąd aż do błędu w jednym z\n" MSG="${MSG}plików dostarczonych w książce ${DISTRO_MINI},\n" MSG=" ${MSG}proszę być tak miłym i poinformować nas o ${DISTRO_CONTACT}.\n" log_failure_msg "${MSG}"


log_info_msg "Naciśnij Enter, aby kontynuować..." wait_for_user

}


check_script_status()

{

# $i jest ustawiane po wywołaniu if [ ! -f ${i} ]; Następnie

log_warning_msg "${i} nie jest prawidłowym dowiązaniem symbolicznym." SCRIPT_STAT="1"

fi


Jeśli [ ! -x ${i}]; Następnie

obraz


log_warning_msg "${i} nie jest wykonywalny, pomijam." SCRIPT_STAT="1"

fi

}


biegać()

{

jeśli [ -z $interaktywny ]; Następnie

${1} ${2}

zwrócić $?

fi


podczas gdy prawda; robić

read -p "Uruchom ${1} ${2} (Tak/nie/kontynuuj)? " -n 1 runit echo


przypadek ${runit} w c | C)

interaktywne=""

${i} ${2}

ret=${?} przerwa;

;;


n | N)

zwróć 0

;;


y | T)

${i} ${2}

ret=${?} przerwa

;;

Esac zrobione!


zwróć $ret

}


# Przeczytaj wszelkie ustawienia/zastąpienia lokalne

[ -r /etc/sysconfig/rc.site ] && źródło /etc/sysconfig/rc.site


DISTRO=${DISTRO:-"Linux od zera"}

DISTRO_CONTACT=${DISTRO_CONTACT:-"[email chroniony] (Wymagana rejestracja)"} DISTRO_MINI=${DISTRO_MINI:-"LFS"}

IPROMPT=${IPROMPT:-"nie"}


# Te 3 sygnały nie spowodują, że nasz skrypt wyjdzie z pułapki "" INT QUIT TSTP


[ "${1}" != "" ] && poziom pracy=${1}


if [ "${poziom działania}" == "" ]; następnie powtórz echo „Użycie: ${0} " >&2 wyjście 1

fi

obraz


poprzedni=${PRZEDNI POZIOM}

[ "${poprzedni}" == "" ] && poprzedni=N


Jeśli [ ! -d /etc/rc.d/rc${poziom działania}.d ]; Następnie

log_info_msg "/etc/rc.d/rc${runlevel}.d nie istnieje.\n" wyjście 1

fi


if [ "$poziom pracy" == "6" -o "$poziom pracy" == "0" ]; następnie IPROMPT="nie"; fi


# Uwaga: w ${LOGLEVEL:-7} jest to ':' 'myślnik' '7', a nie minus 7 if [ "$runlevel" == "S" ]; Następnie

[ -r /etc/sysconfig/console ] && źródło /etc/sysconfig/console dmesg -n "${LOGLEVEL:-7}"

fi


if [ "${IPROMPT}" == "tak" -a "${poziom pracy}" == "S" ]; Następnie

# Całkowita długość łańcucha powitalnego dystrybucji, bez kodów ucieczki wlen=${wlen:-$(echo "Witamy w ${DISTRO}" | wc -c )} Welcome_message=${welcome_message:-"Witamy w ${INFO }${DISTRO}${NORMALNY}"}


# Całkowita długość łańcucha interaktywnego, bez kodów ucieczki ilen=${ilen:-$(echo "Naciśnij 'I', aby rozpocząć interaktywne uruchamianie" | wc -c)}

i_message=${i_message:-"Naciśnij '${FAILURE}I${NORMAL}', aby przejść do interaktywnego uruchamiania"}


# dcol i icol to spacje przed wiadomością, służące do jej wyśrodkowania

# na ekranie. itime to czas oczekiwania użytkownika na naciśnięcie klawisza wcol=$(( ( ${COLUMNS} - ${wlen} ) / 2 ))

icol=$(( ( ${COLUMNS} - ${ilen} ) / 2 )) itime=${itime:-"3"}


echo -e "\n\n"

echo -e "\\033[${wcol}G${welcome_message}" echo -e "\\033[${icol}G${i_message}${NORMALNY}" echo ""

czytaj -t "${itime}" -n 1 interaktywny 2>&1 > /dev/null

fi


# Utwórz małe litery

[ "${interaktywny}" == "I" ] && interaktywny="i" [ "${interaktywny}" != "i" ] && interaktywny=""


# Przeczytaj plik stanu, jeśli istnieje z poziomu działania S

[ -r /var/run/interactive ] && źródło /var/run/interactive


# Próba zatrzymania wszystkich usług uruchomionych na poprzednim poziomie działania,

# i zabity na tym poziomie działania

if [ "${poprzedni}" != "N" ]; Następnie

for i w $(ls -v /etc/rc.d/rc${runlevel}.d/K* 2> /dev/null) wykonaj

stan_skryptu_sprawdzania

if [ "${SCRIPT_STAT}" == "1" ]; następnie SCRIPT_STAT="0"

kontynuować

fi

obraz


suffix=${i#/etc/rc.d/rc$runlevel.d/K[0-9][0-9]} prev_start=/etc/rc.d/rc$previous.d/S[0-9][0-9]$suffix sysinit_start=/etc/rc.d/rcS.d/S[0-9][0-9]$suffix


if [ "${poziom pracy}" != "0" -a "${poziom pracy}" != "6" ]; Następnie

Jeśli [ ! -f ${poprzedni_start} -a ! -f ${sysinit_start}]; wtedy MSG="OSTRZEŻENIE:\n\n${i} nie może być "

MSG="${MSG}wykonano, ponieważ nie zostało " MSG="${MSG}nie zostało uruchomione na poprzednim " MSG="${MSG}poziomie działania (${previous})." log_warning_msg "$MSG"

kontynuować

fi

fi


uruchom ${i} zatrzymaj wartość_błędu=${?}


if [ "${wartość_błędu}" != "0" ]; następnie print_error_msg; gotowe

fi


if [ "${poprzedni}" == "N" ]; następnie eksportuj IN_BOOT=1; fi


if [ "$runlevel" == "6" -a -n "${FASTBOOT}" ]; następnie dotknij /fastboot

fi


# Uruchom wszystkie funkcje na tym poziomie działania

for i w $( ls -v /etc/rc.d/rc${runlevel}.d/S* 2> /dev/null) wykonaj

if [ "${poprzedni}" != "N" ]; następnie przyrostek=${i#/etc/rc.d/rc$runlevel.d/S[0-9][0-9]} stop=/etc/rc.d/rc$runlevel.d/K[0 -9][0-9]$suffix prev_start=/etc/rc.d/rc$previous.d/S[0-9][0-9]$suffix


[ -f ${poprzedni_start} -a ! -f ${stop} ] && kontynuuj

fi


stan_skryptu_sprawdzania

if [ "${SCRIPT_STAT}" == "1" ]; następnie SCRIPT_STAT="0"

kontynuować

fi


przypadek ${poziom działania} w 0|6)

uruchom ${i} zatrzymaj się

;;

*)


to C


uruchom ${i} start

;;


wartość_błędu=${?}



if [ "${wartość_błędu}" != "0" ]; następnie print_error_msg; gotowe


# Zapisz zmienną interaktywną na przełączniku z poziomu pracy S i usuń, jeśli nie, if [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; Następnie

echo "interactive=\"i\"" > /var/run/interactive

więcej

rm -f /var/run/interactive 2> /dev/null

fi


# Skopiuj dziennik rozruchu tylko przy pierwszym uruchomieniu

if [ "${poprzedni}" == "N" -a "${poziom pracy}" != "S" ]; następnie cat $BOOTLOG >> /var/log/boot.log


# Zaznacz koniec rozruchu

echo "--------" >> /var/log/boot.log


# Usuń plik tymczasowy rm -f $BOOTLOG 2> /dev/null

fi


# Zakończ RC

if [ "${wartość_błędu}" != "0" ]; następnie print_error_msg; gotowe


# Zapisz zmienną interaktywną na przełączniku z poziomu pracy S i usuń, jeśli nie, if [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; Następnie

echo "interactive=\"i\"" > /var/run/interactive

więcej

rm -f /var/run/interactive 2> /dev/null

fi


# Skopiuj dziennik rozruchu tylko przy pierwszym uruchomieniu

if [ "${poprzedni}" == "N" -a "${poziom pracy}" != "S" ]; następnie cat $BOOTLOG >> /var/log/boot.log


# Zaznacz koniec rozruchu

echo "--------" >> /var/log/boot.log


# Usuń plik tymczasowy rm -f $BOOTLOG 2> /dev/null

fi


# Zakończ RC


obraz

obraz

: Gerard Beekmans - [email chroniony]

: DJ Lucas - [email chroniony]

: Bruce Dubbs - [email chroniony]

: Gerard Beekmans - [email chroniony]

: DJ Lucas - [email chroniony]

: Bruce Dubbs - [email chroniony]

: LFS 7.0


: Z kodem opartym na Simpleinit-msb Matthiasa Benkmanna http://winterdrache.de/linux/newboot/index.html


Plik powinien znajdować się w katalogu /lib/lsb

: LFS 7.0


: Z kodem opartym na Simpleinit-msb Matthiasa Benkmanna http://winterdrache.de/linux/newboot/index.html


Plik powinien znajdować się w katalogu /lib/lsb

Najlepsze przetwarzanie w chmurze dla systemu operacyjnego w OnWorks: