เวิร์กสเตชันออนไลน์ของ OnWorks Linux และ Windows

โลโก้

ฟรีโฮสติ้งออนไลน์สำหรับเวิร์กสเตชัน

<ก่อนหน้านี้ | Contents | ถัดไป>

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

การขอ rc สคริปต์เป็นสคริปต์แรกที่เรียกโดย init และเริ่มกระบวนการบูต

ภาพ

#! / bin / ทุบตี

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

#เริ่มต้นrc

#

# คำอธิบาย : สคริปต์ควบคุมระดับการรันหลัก

#

# ผู้เขียน : เจอราร์ด บีคแมนส์ - [ป้องกันอีเมล]

# : ดีเจ ลูคัส - [ป้องกันอีเมล]

# อัปเดต: Bruce Dubbs - [ป้องกันอีเมล]

#

# เวอร์ชัน : LFS 7.0

#

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

. /lib/lsb/init-ฟังก์ชั่น print_error_msg()

{

log_failure_msg

# $i ถูกตั้งค่าเมื่อถูกเรียก

MSG="FAILURE:\n\nคุณไม่ควรอ่านข้อความแสดงข้อผิดพลาดนี้\n\n" MSG="${MSG}หมายความว่าเกิดข้อผิดพลาดที่ไม่คาดคิดใน\n" MSG="${MSG}${ ใน"

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

}


วิ่ง()

{

ถ้า [ -z $โต้ตอบ ]; แล้ว

${1} ${2}

คืน $?

fi


ในขณะที่จริง; ทำ

read -p "เรียกใช้ ${1} ${2} (ใช่/ไม่ใช่/ดำเนินการต่อ)? " -n 1 runit echo


กรณี ${runit} ใน c | NS)

โต้ตอบ=""

${i} ${2}

ret=${?} แตก;

;;


n | NS)

ส่งคืน 0

;;


y | จ)

${i} ${2}

ret=${?} แตก

;;

เสร็จแล้ว


คืนค่า $ret

}


# อ่านการตั้งค่าท้องถิ่น / แทนที่

[ -r /etc/sysconfig/rc.site ] && แหล่งที่มา /etc/sysconfig/rc.site


DISTRO=${DISTRO:-"Linux ตั้งแต่เริ่มต้น"}

DISTRO_CONTACT=${DISTRO_CONTACT:-"[ป้องกันอีเมล] (ต้องลงทะเบียน)"} DISTRO_MINI=${DISTRO_MINI:-"LFS"}

IPROMPT=${IPROMPT:-"ไม่"}


# 3 สัญญาณนี้จะไม่ทำให้สคริปต์ของเราออกจากกับดัก "" INT QUIT TSTP


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


ถ้า [ "${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


ถ้า [ "$runlevel" == "6" -o "$runlevel" == "0" ]; แล้ว IPROMPT="ไม่"; fi


# หมายเหตุ: ใน ${LOGLEVEL:-7} มันคือ ':' 'dash' '7' ไม่ใช่ลบ 7 ถ้า [ "$runlevel" == "S" ]; แล้ว

[ -r /etc/sysconfig/console ] && แหล่งที่มา /etc/sysconfig/console dmesg -n "${LOGLEVEL:-7}"

fi


ถ้า [ "${IPROMPT}" == "ใช่" -a "${runlevel}" == "S" ]; แล้ว

# ความยาวทั้งหมดของสตริงต้อนรับ distro โดยไม่มีรหัส Escape wlen=${wlen:-$(echo "Welcome to ${DISTRO}" | wc -c )} welcome_message=${welcome_message:-"ยินดีต้อนรับสู่ ${INFO }${DISTRO}${ปกติ}"}


# ความยาวทั้งหมดของสตริงแบบโต้ตอบ โดยไม่มี Escape Codes ilen=${ilen:-$(echo "Press 'I' to enter interactive startup" | wc -c )}

i_message=${i_message:-"กด '${FAILURE}I${NORMAL}' เพื่อเข้าสู่การเริ่มต้นแบบโต้ตอบ"}


# dcol และ icol เป็นช่องว่างหน้าข้อความเพื่อจัดข้อความให้อยู่ตรงกลาง

# บนหน้าจอ. itime คือระยะเวลารอให้ผู้ใช้กดปุ่ม wcol=$(( ( ${COLUMNS} - ${wlen} ) / 2 ))

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


เสียงสะท้อน -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


# พยายามหยุดบริการทั้งหมดที่เริ่มต้นโดย runlevel ก่อนหน้า

#และเสียชีวิตในการรันเลเวลนี้

ถ้า [ "${previous}" != "N" ]; แล้ว

สำหรับฉันใน $(ls -v /etc/rc.d/rc${runlevel}.d/K* 2> /dev/null) ทำ

check_script_status

ถ้า [ "${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


ถ้า [ "${runlevel}" != "0" -a "${runlevel}" != "6" ]; แล้ว

ถ้า [ ! -f ${prev_start} -a ! -f ${sysinit_start} ]; ดังนั้น MSG="WARNING:\n\n${i} can't be "

MSG="${MSG}ดำเนินการเพราะไม่ใช่ " MSG="${MSG}ไม่ได้เริ่มใน " MSG="${MSG}runlevel (${previous}) ก่อนหน้านี้" log_warning_msg "$MSG"

ต่อ

fi

fi


เรียกใช้ ${i} หยุด error_value=${?}


ถ้า [ "${error_value}" != "0" ]; จากนั้น print_error_msg; เสร็จแล้ว

fi


ถ้า [ "${previous}" == "N" ]; จากนั้นส่งออก IN_BOOT=1; fi


ถ้า [ "$runlevel" == "6" -a -n "${FASTBOOT}" ]; จากนั้นแตะ /fastboot

fi


# เริ่มฟังก์ชั่นทั้งหมดใน runlevel นี้

สำหรับฉันใน $( ls -v /etc/rc.d/rc${runlevel}.d/S* 2> /dev/null) ทำ

ถ้า [ "${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]$ต่อท้าย


[ -f ${prev_start} -a ! -f ${stop} ] && ดำเนินการต่อ

fi


check_script_status

ถ้า [ "${SCRIPT_STAT}" == "1" ]; จากนั้น SCRIPT_STAT="0"

ต่อ

fi


กรณี ${runlevel} ใน 0|6)

เรียกใช้ ${i} หยุด

;;

*)


ว่า C


เรียกใช้ ${i} start

;;


error_value=${?}



ถ้า [ "${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


# คัดลอกบันทึกการบูตในการบูตครั้งแรกเท่านั้น

ถ้า [ "${previous}" == "N" -a "${runlevel}" != "S" ]; แล้วก็ cat $BOOTLOG >> /var/log/boot.log


#ทำเครื่องหมายจุดสิ้นสุดของการบูต

เสียงสะท้อน "-------" >> /var/log/boot.log


# ลบไฟล์ชั่วคราว rm -f $BOOTLOG 2> /dev/null

fi


#จบrc

ถ้า [ "${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


# คัดลอกบันทึกการบูตในการบูตครั้งแรกเท่านั้น

ถ้า [ "${previous}" == "N" -a "${runlevel}" != "S" ]; แล้วก็ cat $BOOTLOG >> /var/log/boot.log


#ทำเครื่องหมายจุดสิ้นสุดของการบูต

เสียงสะท้อน "-------" >> /var/log/boot.log


# ลบไฟล์ชั่วคราว rm -f $BOOTLOG 2> /dev/null

fi


#จบrc


ภาพ

ภาพ

: เจอราร์ด บีคแมนส์ - [ป้องกันอีเมล]

: ดีเจ ลูคัส - [ป้องกันอีเมล]

: บรูซ ดับบ์ส - [ป้องกันอีเมล]

: เจอราร์ด บีคแมนส์ - [ป้องกันอีเมล]

: ดีเจ ลูคัส - [ป้องกันอีเมล]

: บรูซ ดับบ์ส - [ป้องกันอีเมล]

: แอลเอฟเอส 7.0


: ด้วยรหัสตาม simpleinit-msb ของ Matthias Benkmann http://winterdrache.de/linux/newboot/index.html


ไฟล์ควรอยู่ใน /lib/lsb

: แอลเอฟเอส 7.0


: ด้วยรหัสตาม simpleinit-msb ของ Matthias Benkmann http://winterdrache.de/linux/newboot/index.html


ไฟล์ควรอยู่ใน /lib/lsb

ระบบปฏิบัติการคลาวด์คอมพิวติ้งยอดนิยมที่ OnWorks: