Estações de trabalho on-line OnWorks Linux e Windows

Logotipo

Hospedagem online grátis para estações de trabalho

<Anterior | Conteúdo | Próxima>

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

A rc script é o primeiro script chamado pelo init e inicia o processo de inicialização.

imagem

#! / Bin / bash

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

#Iniciar rc

#

# Descrição: Script de controle de nível de execução principal

#

# Autores: Gerard Beekmans - [email protegido]

#:DJ Lucas- [email protegido]

# Atualização: Bruce Dubbs - [email protegido]

#

# Versão: LFS 7.0

#

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

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

{

log_failure_msg

# $ i é definido quando chamado

MSG = "FALHA: \ n \ nVocê não deveria estar lendo esta mensagem de erro. \ N \ n" MSG = "$ {MSG} Significa que ocorreu um erro imprevisto em \ n" MSG = "$ {MSG} $ { no"

MSG = "$ {MSG} que saiu com um valor de retorno de $ {error_value}. \ N"


MSG = "$ {MSG} Se você for capaz de rastrear este erro até um bug em um dos \ n" MSG = "$ {MSG} arquivos fornecidos pelo livro $ {DISTRO_MINI}, \ n" MSG = " $ {MSG} por favor, nos informe em $ {DISTRO_CONTACT}. \ N "log_failure_msg" $ {MSG} "


log_info_msg "Pressione Enter para continuar ..." wait_for_user

}


check_script_status ()

{

# $ i é definido quando chamado if [! -f $ {i}]; então

log_warning_msg "$ {i} não é um link simbólico válido." SCRIPT_STAT = "1"

fi


E se [ ! -x $ {i}]; então

imagem


log_warning_msg "$ {i} não é executável, pulando." SCRIPT_STAT = "1"

fi

}


corre()

{

if [-z $ interativo]; então

$ {1} $ {2}

devolver $?

fi


enquanto verdadeiro; Faz

leia -p "Executar $ {1} $ {2} (Sim / não / continuar)?" -n 1 runit echo


caso $ {runit} em c | C)

interativo = ""

$ {i} $ {2}

ret = $ {?} pausa;

;;


n | n)

retornar 0

;;


e | S)

$ {i} $ {2}

ret = $ {?} pausa

;;

esac feito


return $ ret

}


# Leia quaisquer configurações / substituições locais

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


DISTRO = $ {DISTRO: - "Linux From Scratch"}

DISTRO_CONTACT=${DISTRO_CONTACT:-"[email protegido] (Registro obrigatório)"} DISTRO_MINI=${DISTRO_MINI:-"LFS"}

IPROMPT = $ {IPROMPT: - "não"}


# Esses 3 sinais não farão com que nosso script saia da armadilha "" INT SAIR TSTP


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


if ["$ {runlevel}" == ""]; em seguida, echo "Uso: $ {0} "> & 2 saída 1

fi

imagem


anterior = $ {PREVLEVEL}

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


E se [ ! -d /etc/rc.d/rc${runlevel}.d]; então

log_info_msg "/etc/rc.d/rc${runlevel}.d não existe. \ n" saída 1

fi


if ["$ runlevel" == "6" -o "$ runlevel" == "0"]; então IPROMPT = "não"; fi


# Observação: em $ {LOGLEVEL: -7}, é ':' 'traço' '7', não menos 7 if ["$ runlevel" == "S"]; então

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

fi


if ["$ {IPROMPT}" == "yes" -a "$ {runlevel}" == "S"]; então

# O comprimento total da string de boas-vindas da distro, sem códigos de escape wlen = $ {wlen: - $ (echo "Bem-vindo a $ {DISTRO}" | wc -c)} welcome_message = $ {welcome_message: - "Bem-vindo a $ {INFO } $ {DISTRO} $ {NORMAL} "}


# O comprimento total da string interativa, sem códigos de escape ilen = $ {ilen: - $ (echo "Pressione 'I' para entrar na inicialização interativa" | wc -c)}

i_message = $ {i_message: - "Pressione '$ {FAILURE} I $ {NORMAL}' para entrar na inicialização interativa"}


# dcol e icol são espaços antes da mensagem para centralizar a mensagem

# na tela. itime é a quantidade de tempo de espera para o usuário pressionar uma tecla 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} $ {NORMAL}" echo ""

ler -t "$ {itime}" -n 1 interativo 2> & 1> / dev / null

fi


# Faça minúsculas

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


# Leia o arquivo de estado se ele existir no nível de execução S

[-r / var / run / interativo] && source / var / run / interativo


# Tente parar todos os serviços iniciados pelo nível de execução anterior,

# e morto neste nível de execução

if ["$ {anterior}"! = "N"]; então

para i em $ (ls -v /etc/rc.d/rc${runlevel}.d/K* 2> / dev / null) faça

check_script_status

if ["$ {SCRIPT_STAT}" == "1"]; então SCRIPT_STAT = "0"

continuar

fi

imagem


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"]; então

E se [ ! -f $ {prev_start} -a! -f $ {sysinit_start}]; então MSG = "AVISO: \ n \ n $ {i} não pode ser"

MSG = "$ {MSG} executado porque não foi" MSG = "$ {MSG} não iniciado no nível de execução anterior" MSG = "$ {MSG} ($ {previous})." log_warning_msg "$ MSG"

continuar

fi

fi


execute $ {i} stop error_value = $ {?}


if ["$ {error_value}"! = "0"]; então print_error_msg; fi feito

fi


if ["$ {previous}" == "N"]; em seguida, exporte IN_BOOT = 1; fi


if ["$ runlevel" == "6" -a -n "$ {FASTBOOT}"]; então toque em / fastboot

fi


# Inicie todas as funções neste nível de execução

para i em $ (ls -v /etc/rc.d/rc${runlevel}.d/S* 2> / dev / null) faça

if ["$ {anterior}"! = "N"]; então sufixo = $ {i # / etc / rc.d / rc $ runlevel.d / S [0-9] [0-9]} stop = / etc / rc.d / rc $ runlevel.d / K [0 -9] [0-9] $ sufixo prev_start = / etc / rc.d / rc $ anterior.d / S [0-9] [0-9] $ sufixo


[-f $ {prev_start} -a! -f $ {stop}] && continue

fi


check_script_status

if ["$ {SCRIPT_STAT}" == "1"]; então SCRIPT_STAT = "0"

continuar

fi


caso $ {runlevel} em 0 | 6)

correr $ {i} parar

;;

*)


esac


execute $ {i} start

;;


valor_erro = $ {?}



if ["$ {error_value}"! = "0"]; então print_error_msg; fi feito


# Armazene a variável interativa na mudança do nível de execução S e remova se não if ["$ {runlevel}" == "S" -a "$ {interativo}" == "i"]; então

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

outro

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

fi


# Copie o log de inicialização apenas na inicialização

if ["$ {previous}" == "N" -a "$ {runlevel}"! = "S"]; então cat $ BOOTLOG >> /var/log/boot.log


# Marque o fim da inicialização

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


# Remova o arquivo temporário rm -f $ BOOTLOG 2> / dev / null

fi


# Fim rc

if ["$ {error_value}"! = "0"]; então print_error_msg; fi feito


# Armazene a variável interativa na mudança do nível de execução S e remova se não if ["$ {runlevel}" == "S" -a "$ {interativo}" == "i"]; então

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

outro

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

fi


# Copie o log de inicialização apenas na inicialização

if ["$ {previous}" == "N" -a "$ {runlevel}"! = "S"]; então cat $ BOOTLOG >> /var/log/boot.log


# Marque o fim da inicialização

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


# Remova o arquivo temporário rm -f $ BOOTLOG 2> / dev / null

fi


# Fim rc


imagem

imagem

:Gerard Beekmans- [email protegido]

:DJ Lucas- [email protegido]

: Bruce Dubbs- [email protegido]

:Gerard Beekmans- [email protegido]

:DJ Lucas- [email protegido]

: Bruce Dubbs- [email protegido]

: LFS 7.0


: Com código baseado em simpleinit-msb de Matthias Benkmann http://winterdrache.de/linux/newboot/index.html


O arquivo deve estar localizado em / lib / lsb

: LFS 7.0


: Com código baseado em simpleinit-msb de Matthias Benkmann http://winterdrache.de/linux/newboot/index.html


O arquivo deve estar localizado em / lib / lsb

Top OS Cloud Computing na OnWorks: