OnWorks Linux ו-Windows Online WorkStations

לוגו

אירוח מקוון בחינם עבור תחנות עבודה

<הקודם | תוכן | הבא>

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

השמיים rc script הוא הסקריפט הראשון שנקרא על ידי init ומתחיל את תהליך האתחול.

תמונה

#! / bin / bash

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

# התחל rc

#

# תיאור: סקריפט בקרת רמת ריצה ראשי

#

# מחברים : ג'רארד ביקמנס - [מוגן בדוא"ל]

# : DJ לוקאס - [מוגן בדוא"ל]

# עדכון: ברוס דאבס - [מוגן בדוא"ל]

#

# גרסה: LFS 7.0

#

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

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

{

log_failure_msg

# $i מוגדר בעת קריאה

MSG="FAILURE:\n\nאתה לא אמור לקרוא את הודעת השגיאה הזו.\n\n" MSG="${MSG}זה אומר שהתרחשה שגיאה בלתי צפויה ב\n" MSG="${MSG}${ i},\n"

MSG="${MSG}אשר יצא עם ערך החזרה של ${error_value}.\n"


MSG="${MSG}אם אתה מצליח לעקוב אחר שגיאה זו עד לבאג באחד\n" MSG="${MSG}הקבצים שסופקו על ידי הספר ${DISTRO_MINI},\n" MSG=" ${MSG}אנא תהיו כל כך אדיבים ליידע אותנו ב-${DISTRO_CONTACT}.\n" log_failure_msg "${MSG}"


log_info_msg "הקש Enter כדי להמשיך..." wait_for_user

}


check_script_status()

{

# $i מוגדר כאשר נקרא אם [ ! -f ${i} ]; לאחר מכן

log_warning_msg "${i} אינו קישור סימלי חוקי." SCRIPT_STAT="1"

fi


אם [ ! -x ${i} ]; לאחר מכן

תמונה


log_warning_msg "${i} אינו בר הפעלה, מדלג." SCRIPT_STAT="1"

fi

}


לָרוּץ()

{

if [-z $interactive]; לאחר מכן

${1} ${2}

להחזיר $?

fi


בעוד נכון; לַעֲשׂוֹת

קרא -p "הפעל ${1} ${2} (כן/לא/המשך)? " -n 1 runit echo


מקרה ${runit} ב-c | ג)

אינטראקטיבי =""

${i} ${2}

ret=${?} הפסקה;

;;


n | נ)

חזור 0

;;


y | י)

${i} ${2}

ret=${?} הפסקה

;;

esac נעשה


להחזיר $ret

}


# קרא כל הגדרות/עקיפות מקומיות

[ -r /etc/sysconfig/rc.site ] && מקור /etc/sysconfig/rc.site


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

DISTRO_CONTACT=${DISTRO_CONTACT:-"[מוגן בדוא"ל] (נדרש הרשמה)"} DISTRO_MINI=${DISTRO_MINI:-"LFS"}

IPROMPT=${IPROMPT:-"no"}


# 3 האותות הללו לא יגרמו לסקריפט שלנו לצאת מ-"" INT QUIT TSTP


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


if [ "${runlevel}" == "" ]; ואז הד "שימוש: ${0} " >&2 יציאה 1

fi

תמונה


הקודם=${PREVLEVEL}

[ "${previous}" == "" ] && הקודם=N


אם [ ! -d /etc/rc.d/rc${runlevel}.d ]; לאחר מכן

log_info_msg "/etc/rc.d/rc${runlevel}.d אינו קיים.\n" יציאה 1

fi


if [ "$runlevel" == "6" -o "$runlevel" == "0" ]; ואז IPROMPT="לא"; fi


# הערה: ב-${LOGLEVEL:-7}, זה ':' 'מקף' '7', לא מינוס 7 אם [ "$runlevel" == "S" ]; לאחר מכן

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

fi


if [ "${IPROMPT}" == "yes" -a "${runlevel}" == "S" ]; לאחר מכן

# האורך הכולל של מחרוזת הפתיחה של ההפצה, ללא קודי בריחה wlen=${wlen:-$(echo "Welcome to ${DISTRO}" | wc -c )} welcome_message=${welcome_message:-"ברוכים הבאים ל-${INFO }${DISTRO}${NORMAL}"}


# האורך הכולל של המחרוזת האינטראקטיבית, ללא קודי בריחה ilen=${ilen:-$(echo "Press 'I' to enter startup interactive" | wc -c )}

i_message=${i_message:-"הקש '${FAILURE}I${NORMAL}' כדי להיכנס להפעלה אינטראקטיבית"}


# dcol ו-icol הם רווחים לפני ההודעה כדי למרכז את ההודעה

# על המסך. itime הוא משך זמן ההמתנה עד שהמשתמש ילחץ על מקש 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 ""

קרא -t "${itime}" -n 1 אינטראקטיבי 2>&1 > /dev/null

fi


# עשה אותיות קטנות

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


# קרא את קובץ המצב אם הוא קיים מ-runlevel S

[ -r /var/run/interactive ] && מקור /var/run/interactive


# נסה להפסיק את כל השירותים שהתחילו ברמת הריצה הקודמת,

# ונהרג ברמת הריצה הזו

if [ "${previous}" != "N" ]; לאחר מכן

עבור i ב-$(ls -v /etc/rc.d/rc${runlevel}.d/K* 2> /dev/null) do

check_script_status

if [ "${SCRIPT_STAT}" == "1" ]; ואז SCRIPT_STAT="0"

להמשיך

fi

תמונה


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" ]; לאחר מכן

אם [ ! -f ${prev_start} -a ! -f ${sysinit_start} ]; אז MSG="אזהרה:\n\n${i} לא יכול להיות "

MSG="${MSG}הופעל מכיוון שהוא לא " MSG="${MSG}לא הופעל ברמת הריצה הקודמת של " MSG="${MSG}(${previous})." log_warning_msg "$MSG"

להמשיך

fi

fi


הפעל ${i} stop error_value=${?}


if [ "${error_value}" != "0" ]; ואז print_error_msg; פי בוצע

fi


if [ "${previous}" == "N" ]; לאחר מכן ייצא IN_BOOT=1; fi


if [ "$runlevel" == "6" -a -n "${FASTBOOT}" ]; לאחר מכן גע ב-/fastboot

fi


# הפעל את כל הפונקציות ברמת הריצה הזו

עבור i ב-$( ls -v /etc/rc.d/rc${runlevel}.d/S* 2> /dev/null) do

if [ "${previous}" != "N" ]; ואז סיומת=${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 ${prev_start} -a! -f ${stop} ] && המשך

fi


check_script_status

if [ "${SCRIPT_STAT}" == "1" ]; ואז SCRIPT_STAT="0"

להמשיך

fi


מקרה ${runlevel} ב-0|6)

להפעיל ${i} עצירה

;;

*)


esac


הפעל את ${i} התחל

;;


error_value=${?}



if [ "${error_value}" != "0" ]; ואז print_error_msg; פי בוצע


# אחסן משתנה אינטראקטיבי במעבר מ-Runlevel S והסר אם לא אם [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; לאחר מכן

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

אחר

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

fi


# העתק את יומן האתחול באתחול ראשוני בלבד

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


# סמן את סוף האתחול

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


# הסר את הקובץ הזמני rm -f $BOOTLOG 2> /dev/null

fi


# סוף rc

if [ "${error_value}" != "0" ]; ואז print_error_msg; פי בוצע


# אחסן משתנה אינטראקטיבי במעבר מ-Runlevel S והסר אם לא אם [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; לאחר מכן

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

אחר

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

fi


# העתק את יומן האתחול באתחול ראשוני בלבד

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


# סמן את סוף האתחול

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


# הסר את הקובץ הזמני rm -f $BOOTLOG 2> /dev/null

fi


# סוף rc


תמונה

תמונה

: ג'רארד ביקמנס - [מוגן בדוא"ל]

: DJ לוקאס - [מוגן בדוא"ל]

: ברוס דאבס - [מוגן בדוא"ל]

: ג'רארד ביקמנס - [מוגן בדוא"ל]

: DJ לוקאס - [מוגן בדוא"ל]

: ברוס דאבס - [מוגן בדוא"ל]

: LFS 7.0


: עם קוד המבוסס על ה-simpleinit-msb של Matthias Benkmann http://winterdrache.de/linux/newboot/index.html


הקובץ צריך להיות ממוקם ב-/lib/lsb

: LFS 7.0


: עם קוד המבוסס על ה-simpleinit-msb של Matthias Benkmann http://winterdrache.de/linux/newboot/index.html


הקובץ צריך להיות ממוקם ב-/lib/lsb

מחשוב ענן מערכת ההפעלה המוביל ב-OnWorks: