OnWorks Linux و Windows Online WorkStations

الشعار

استضافة مجانية على الإنترنت لمحطات العمل

<السابق | المحتويات | التالي>

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

إنّ كافة أنواع عهود الـ rc البرنامج النصي هو أول نص برمجي يتم استدعاؤه بواسطة init ويبدأ عملية التمهيد.

صورة

#! / بن / باش

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

# ابدأ RC

#

# الوصف: البرنامج النصي الرئيسي للتحكم في مستوى التشغيل

#

# المؤلف : جيرارد بيكمانز - [البريد الإلكتروني محمي]

# : دي جي لوكاس - [البريد الإلكتروني محمي]

# تحديث : بروس دوبس - [البريد الإلكتروني محمي]

#

# الإصدار: LFS 7.0

#

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

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

{

log_failure_msg

# $ i تم ضبطه عند استدعائه

MSG = "فشل: \ 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 $ Interactive] ؛ من ثم

$ {1} $ {2}

إرجاع $؟

fi


احيانا صحيح؛ فعل

read -p "تشغيل $ {1} $ {2} (نعم / لا / متابعة)؟" -n 1 runit echo


حالة $ {runit} في c | ج)

تفاعلي = ""

$ {i} $ {2}

ret = $ {؟} break؛

;;


ن | ن)

عودة 0

;;


ذ | ص)

$ {i} $ {2}

ret = $ {؟} فاصل

;;

esac انتهى


العودة $ ret

}


# اقرأ أي إعدادات / تجاوزات محلية

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


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

DISTRO_CONTACT=${DISTRO_CONTACT:-"[البريد الإلكتروني محمي] (التسجيل مطلوب)"} DISTRO_MINI=${DISTRO_MINI:-"LFS"}

IPROMPT = $ {IPROMPT: - "لا"}


# لن تؤدي هذه الإشارات الثلاثة إلى خروج البرنامج النصي من التراكب INT QUIT TSTP


["$ {1}"! = ""] && مستوى التشغيل = $ {1}


إذا ["$ {runlevel}" == ""] ؛ ثم صدى "Usage: $ {0} "> & 2 الخروج 1

fi

صورة


السابق = $ {PREVLEVEL}

["$ {previous}" == ""] && 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 = "لا" ؛ فاي


# ملاحظة: في $ {LOGLEVEL: -7} ، يكون ':' 'dash' '7' ، وليس ناقص 7 إذا ["$ runlevel" == "S"]؛ من ثم

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

fi


إذا ["$ {IPROMPT}" == "نعم" -a "$ {runlevel}" == "S"] ؛ من ثم

# الطول الإجمالي لسلسلة الترحيب في التوزيعة ، بدون رموز الهروب. } $ {DISTRO} $ {عادي} "}


# الطول الإجمالي للسلسلة التفاعلية ، بدون رموز الهروب ilen = $ {ilen: - $ (صدى "اضغط على" I "للدخول إلى بدء التشغيل التفاعلي" | 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 Interactive 2> & 1> / dev / null

fi


# اجعلها صغيرة

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


# اقرأ ملف الحالة إذا كان موجودًا من مستوى التشغيل S.

[-r / var / run / dynamic] && source / var / run / التفاعلي


# محاولة إيقاف جميع الخدمات التي بدأها مستوى التشغيل السابق ،

# وقتل في هذا المستوى

إذا ["$ {previous}"! = "N"] ؛ من ثم

بالنسبة لـ i في $ (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 = "تحذير: \ n \ n $ {i} لا يمكن أن يكون"

MSG = "تم تنفيذ $ {MSG} لأنه لم يكن" MSG = "$ {MSG} لم يبدأ في المستوى السابق" MSG = "$ {MSG} ($ {previous})." log_warning_msg "$ MSG"

استمر

fi

fi


تشغيل $ {i} stop error_value = $ {؟}


إذا ["$ {error_value}"! = "0"]؛ ثم print_error_msg ؛ انتهى فاي

fi


إذا ["$ {previous}" == "N"] ؛ ثم تصدير IN_BOOT = 1 ؛ فاي


إذا ["$ runlevel" == "6" -a -n "$ {FASTBOOT}"] ؛ ثم المس / fastboot

fi


# ابدأ جميع الوظائف في مستوى التشغيل هذا

بالنسبة لـ i في $ (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] اللاحقة $ 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} stop

;;

*)


ESAC


تشغيل $ {i} start

;;


error_value = $ {؟}



إذا ["$ {error_value}"! = "0"]؛ ثم print_error_msg ؛ انتهى فاي


# تخزين المتغير التفاعلي عند التبديل من مستوى التشغيل S وإزالته إن لم يكن ["$ {runlevel}" == "S" -a "$ {Interactive}" == "i"]؛ من ثم

صدى "Interactive = \" i \ ""> / var / run / Interactive

آخر

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

fi


# انسخ سجل التمهيد عند التمهيد الأولي فقط

إذا ["$ {previous}" == "N" -a "$ {runlevel}"! = "S"]؛ ثم القط $ BOOTLOG >> /var/log/boot.log


# بمناسبة نهاية التمهيد

صدى "--------" >> /var/log/boot.log


# قم بإزالة الملف المؤقت rm -f $ BOOTLOG 2> / dev / null

fi


# نهاية RC

إذا ["$ {error_value}"! = "0"]؛ ثم print_error_msg ؛ انتهى فاي


# تخزين المتغير التفاعلي عند التبديل من مستوى التشغيل S وإزالته إن لم يكن ["$ {runlevel}" == "S" -a "$ {Interactive}" == "i"]؛ من ثم

صدى "Interactive = \" i \ ""> / var / run / Interactive

آخر

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

fi


# انسخ سجل التمهيد عند التمهيد الأولي فقط

إذا ["$ {previous}" == "N" -a "$ {runlevel}"! = "S"]؛ ثم القط $ BOOTLOG >> /var/log/boot.log


# بمناسبة نهاية التمهيد

صدى "--------" >> /var/log/boot.log


# قم بإزالة الملف المؤقت rm -f $ BOOTLOG 2> / dev / null

fi


# نهاية RC


صورة

صورة

: جيرارد بيكمانز - [البريد الإلكتروني محمي]

: دي جي لوكاس - [البريد الإلكتروني محمي]

: بروس دوبس - [البريد الإلكتروني محمي]

: جيرارد بيكمانز - [البريد الإلكتروني محمي]

: دي جي لوكاس - [البريد الإلكتروني محمي]

: بروس دوبس - [البريد الإلكتروني محمي]

: لي اف اس 7.0


: مع رمز يعتمد على simpleinit-msb لماتياس بنكمان http://winterdrache.de/linux/newboot/index.html


يجب أن يكون الملف موجودًا في / lib / lsb

: لي اف اس 7.0


: مع رمز يعتمد على simpleinit-msb لماتياس بنكمان http://winterdrache.de/linux/newboot/index.html


يجب أن يكون الملف موجودًا في / lib / lsb

أفضل الحوسبة السحابية لنظام التشغيل في OnWorks: