Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

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

. rc script è il primo script chiamato da init e avvia il processo di avvio.

Immagine

#! / Bin / bash

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

# Inizia rc

#

# Descrizione: Script di controllo del livello di esecuzione principale

#

# Autori: Gerard Beekmans - [email protected]

# : DJ Lucas - [email protected]

# Aggiornamento: Bruce Dubbs - [email protected]

#

# Versione: LFS 7.0

#

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

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

{

log_failure_msg

# $i viene impostato quando viene chiamato

MSG="FAILURE:\n\nNon dovresti leggere questo messaggio di errore.\n\n" MSG="${MSG}Significa che si è verificato un errore imprevisto in\n" MSG="${MSG}${ in"

MSG="${MSG}che è uscito con un valore di ritorno di ${error_value}.\n"


MSG="${MSG}Se riesci a ricondurre questo errore a un bug in uno dei\n" MSG="${MSG}file forniti dal libro ${DISTRO_MINI},\n" MSG=" ${MSG}si prega di essere così gentile da informarci su ${DISTRO_CONTACT}.\n" log_failure_msg "${MSG}"


log_info_msg "Premi Invio per continuare..." wait_for_user

}


check_script_status()

{

# $i viene impostato quando viene chiamato if [ ! -f ${i} ]; poi

log_warning_msg "${i} non è un collegamento simbolico valido." SCRIPT_STAT="1"

fi


Se [ ! -x ${i} ]; poi

Immagine


log_warning_msg "${i} non è eseguibile, salta." SCRIPT_STAT="1"

fi

}


correre()

{

if [ -z $interattivo ]; poi

${1} ${2}

restituire $?

fi


mentre vero; fare

read -p "Esegui ${1} ${2} (Sì/no/continua)? " -n 1 runit echo


caso ${runit} in c | C)

interattivo=""

${i} ${2}

ret=${?} pausa;

;;


n | N)

ritorna 0

;;


sì | sì)

${i} ${2}

ret=${?} pausa

;;

esac fatto


restituire $re

}


# Leggi eventuali impostazioni/sostituzioni locali

[ -r /etc/sysconfig/rc.site ] && source /etc/sysconfig/rc.site


DISTRO=${DISTRO:-"Linux da zero"}

DISTRO_CONTACT=${DISTRO_CONTACT:-"[email protected] (Registrazione richiesta)"} DISTRO_MINI=${DISTRO_MINI:-"LFS"}

IPROMPT=${IPROMPT:-"no"}


# Questi 3 segnali non faranno uscire il nostro script dalla trap "" INT QUIT TSTP


[ "${1}" != "" ] && runlevel=${1}


if [ "${runlevel}" == "" ]; poi echo "Utilizzo: ${0} " >&2 uscita 1

fi

Immagine


precedente=${LIVELLO PRECEDENTE}

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


Se [ ! -d /etc/rc.d/rc${runlevel}.d ]; poi

log_info_msg "/etc/rc.d/rc${runlevel}.d non esiste.\n" exit 1

fi


if [ "$runlevel" == "6" -o "$runlevel" == "0" ]; quindi IPROMPT="no"; fi


# Nota: in ${LOGLEVEL:-7}, è ':' 'trattino' '7', non meno 7 if [ "$runlevel" == "S" ]; poi

[ -r /etc/sysconfig/console ] && source /etc/sysconfig/console dmesg -n "${LOGLEVEL:-7}"

fi


if [ "${IPROMPT}" == "yes" -a "${runlevel}" == "S" ]; poi

# La lunghezza totale della stringa di benvenuto della distro, senza codici di escape wlen=${wlen:-$(echo "Benvenuto in ${DISTRO}" | wc -c )} messaggio_di_benvenuto=${messaggio_di_benvenuto:-"Benvenuto in ${INFO }${DISTRO}${NORMALE}"}


# La lunghezza totale della stringa interattiva, senza codici di escape ilen=${ilen:-$(echo "Premi 'I' per accedere all'avvio interattivo" | wc -c )}

i_message=${i_message:-"Premi '${FAILURE}I${NORMAL}' per accedere all'avvio interattivo"}


# dcol e icol sono spazi prima del messaggio per centrare il messaggio

# sullo schermo. itime è la quantità di tempo di attesa per l'utente per premere un tasto wcol=$(( ( ${COLUMNS} - ${wlen} ) / 2 ))

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


echo -e "\n\n"

echo -e "\\033[${wcol}G${messaggio_di_benvenuto}" echo -e "\\033[${icol}G${i_messaggio}${NORMALE}" echo ""

read -t "${itime}" -n 1 interattivo 2>&1 > /dev/null

fi


# Crea minuscolo

[ "${interattivo}" == "io" ] && interattivo="i" [ "${interattivo}" != "i" ] && interattivo=""


# Legge il file di stato se esiste dal runlevel S

[ -r /var/esegui/interattivo ] && source /var/esegui/interattivo


# Tentativo di interrompere tutti i servizi avviati dal precedente runlevel,

# e ucciso in questo runlevel

if [ "${precedente}" != "N" ]; poi

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

controlla_script_status

if [ "${SCRIPT_STAT}" == "1" ]; quindi SCRIPT_STAT="0"

continua

fi

Immagine


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 [ "${runlevel}" != "0" -a "${runlevel}" != "6" ]; poi

Se [ ! -f ${prev_start} -a ! -f ${sysinit_start} ]; quindi MSG="ATTENZIONE:\n\n${i} non può essere "

MSG="${MSG}eseguito perché non era " MSG="${MSG}non avviato nel precedente " MSG="${MSG}runlevel (${precedente})." log_warning_msg "$MSG"

continua

fi

fi


esegui ${i} ferma error_value=${?}


if [ "${valore_errore}" != "0" ]; quindi print_error_msg; fi fatto

fi


if [ "${precedente}" == "N" ]; quindi esporta IN_BOOT=1; fi


if [ "$runlevel" == "6" -a -n "${FASTBOOT}" ]; quindi tocca /fastboot

fi


# Avvia tutte le funzioni in questo runlevel

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

if [ "${precedente}" != "N" ]; poi suffisso=${i#/etc/rc.d/rc$runlevel.d/S[0-9][0-9]} stop=/etc/rc.d/rc$runlevel.d/K[0 -9][0-9]$suffisso prev_start=/etc/rc.d/rc$previous.d/S[0-9][0-9]$suffisso


[ -f ${inizio_precedente} -a ! -f ${stop} ] && continua

fi


controlla_script_status

if [ "${SCRIPT_STAT}" == "1" ]; quindi SCRIPT_STAT="0"

continua

fi


caso ${runlevel} in 0|6)

corri ${i} fermati

;;

*)


che C


corri ${i} inizia

;;


errore_valore=${?}



if [ "${valore_errore}" != "0" ]; quindi print_error_msg; fi fatto


# Memorizza la variabile interattiva allo switch dal runlevel S e rimuove se no if [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; poi

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

altro

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

fi


# Copia il log di avvio solo all'avvio iniziale

if [ "${precedente}" == "N" -a "${runlevel}" != "S" ]; quindi cat $BOOTLOG >> /var/log/boot.log


# Segna la fine dell'avvio

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


# Rimuove il file temporaneo rm -f $BOOTLOG 2> /dev/null

fi


# Fine rc

if [ "${valore_errore}" != "0" ]; quindi print_error_msg; fi fatto


# Memorizza la variabile interattiva allo switch dal runlevel S e rimuove se no if [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; poi

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

altro

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

fi


# Copia il log di avvio solo all'avvio iniziale

if [ "${precedente}" == "N" -a "${runlevel}" != "S" ]; quindi cat $BOOTLOG >> /var/log/boot.log


# Segna la fine dell'avvio

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


# Rimuove il file temporaneo rm -f $BOOTLOG 2> /dev/null

fi


# Fine rc


Immagine

Immagine

:Gerard Beekmans- [email protected]

: DJ Lucas - [email protected]

:Bruce Dubbs- [email protected]

:Gerard Beekmans- [email protected]

: DJ Lucas - [email protected]

:Bruce Dubbs- [email protected]

:LFS 7.0


: Con codice basato su simpleinit-msb di Matthias Benkmann http://winterdrache.de/linux/newboot/index.html


Il file dovrebbe trovarsi in /lib/lsb

:LFS 7.0


: Con codice basato su simpleinit-msb di Matthias Benkmann http://winterdrache.de/linux/newboot/index.html


Il file dovrebbe trovarsi in /lib/lsb

Il miglior sistema operativo cloud computing su OnWorks: