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

โลโก้

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

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

ง.2. /lib/lsb/init-functions‌


# / bin / sh

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

#

# เริ่มต้น /lib/lsb/init-funtions

#

# คำอธิบาย : เรียกใช้ฟังก์ชันการควบคุมระดับ

#

# / bin / sh

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

#

# เริ่มต้น /lib/lsb/init-funtions

#

# คำอธิบาย : เรียกใช้ฟังก์ชันการควบคุมระดับ

#


#ผู้เขียน

#

# อัปเดต

#

# เวอร์ชั่น

#

# หมายเหตุ

#

#

#

#

#ผู้เขียน

#

# อัปเดต

#

# เวอร์ชั่น

#

# หมายเหตุ

#

#

#

#


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


## การตั้งค่าสิ่งแวดล้อม

# ตั้งค่าเริ่มต้นสำหรับสภาพแวดล้อม umask 022

ส่งออก PATH="/bin:/usr/bin:/sbin:/usr/sbin"


## ตั้งค่าคำสั่งสี ใช้ผ่าน echo

# โปรดปรึกษา `man console_codes สำหรับข้อมูลเพิ่มเติม

# ใต้ส่วน "ECMA-48 Set Graphics Rendition"

#

# คำเตือน: เมื่อเปลี่ยนจากแบบอักษร 8 บิตเป็น 9 บิต

# คอนโซล linux จะตีความตัวหนา (1;) ใหม่เป็น

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


## การตั้งค่าสิ่งแวดล้อม

# ตั้งค่าเริ่มต้นสำหรับสภาพแวดล้อม umask 022

ส่งออก PATH="/bin:/usr/bin:/sbin:/usr/sbin"


## ตั้งค่าคำสั่งสี ใช้ผ่าน echo

# โปรดปรึกษา `man console_codes สำหรับข้อมูลเพิ่มเติม

# ใต้ส่วน "ECMA-48 Set Graphics Rendition"

#

# คำเตือน: เมื่อเปลี่ยนจากแบบอักษร 8 บิตเป็น 9 บิต

# คอนโซล linux จะตีความตัวหนา (1;) ใหม่เป็น

ภาพ


# ร่ายมนตร์ 256 อันดับแรกของแบบอักษร 9 บิต นี้ไม่

#ไม่มีผลกับคอนโซลเฟรมบัฟเฟอร์


NORMAL="\\033[0;39m" # คอนโซลมาตรฐานสีเทา SUCCESS="\\033[1;32m" # Success is green WARNING="\\033[1;33m" # คำเตือนเป็นสีเหลือง FAILURE="\\ 033[1;31m" # ความล้มเหลวเป็นสีแดง INFO="\\033[1;36m" # ข้อมูลเป็น light cyan BRACKET="\\033[1;34m" # วงเล็บเป็นสีน้ำเงิน


# ใช้คำนำหน้าสี BMPREFIX=" "

SUCCESS_PREFIX="${SUCCESS} * ${NORMAL} " FAILURE_PREFIX="${FAILURE}*****${NORMAL} " WARNING_PREFIX="${WARNING} *** ${NORMAL} " SKIP_PREFIX="${ สำเร็จ INFO} ${ปกติ}"


SUCCESS_SUFFIX="${BRACKET}[${SUCCESS} OK ${BRACKET}]${NORMAL}" FAILURE_SUFFIX="${BRACKET}[${FAILURE} FAIL ${BRACKET}]${NORMAL}" WARNING_SUFFIX="$ สำเร็จ {BRACKET}[${WARNING} WARN ${BRACKET}]${NORMAL}" SKIP_SUFFIX="${BRACKET}[${INFO} ข้าม ${BRACKET}]${NORMAL}"


BOOTLOG=/run/bootlog KILLDELAY=3 SCRIPT_STAT="0"


# ตั้งค่าตัวแปรสภาพแวดล้อมที่ผู้ใช้ระบุ เช่น HEADLESS [ -r /etc/sysconfig/rc.site ] && /etc/sysconfig/rc.site


## ขนาดหน้าจอ

# ค้นหาขนาดหน้าจอปัจจุบันถ้า [ -z "${COLUMNS}" ]; แล้ว

COLUMNS=$(ขนาด stty) COLUMNS=${COLUMNS##* }

fi


# เมื่อใช้การเชื่อมต่อระยะไกล เช่นพอร์ตอนุกรม ขนาด stty จะคืนค่า 0 ถ้า [ "${COLUMNS}" = "0" ]; แล้ว

คอลัมน์=80

fi


## การวัดสำหรับข้อความผลลัพธ์การจัดตำแหน่ง COL=$((${COLUMNS} - 8))

WCOL=$((${COL} - 2))


## ตั้งค่าคำสั่งตำแหน่งเคอร์เซอร์ ใช้ผ่าน echo SET_COL="\\033[${COL}G" # ที่ $COL ถ่าน SET_WCOL="\\033[${WCOL}G" # ที่ $WCOL ถ่าน CURS_UP= "\\033[1A\\033[0G" # ขึ้นหนึ่งบรรทัด ที่อักขระที่ 0 CURS_ZERO="\\033[0G"


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

# start_daemon () #

# การใช้งาน: start_daemon [-f] [-n nicelevel] [-p pidfile] ชื่อพาธ [args...] #

# #

# วัตถุประสงค์: สิ่งนี้รันโปรแกรมที่ระบุเป็น daemon #

# #

ภาพ


# อินพุต: -f: (บังคับ) เรียกใช้โปรแกรมแม้ว่าจะทำงานอยู่แล้วก็ตาม #

# -n nicelevel: ระบุระดับที่ดี ดู 'ผู้ชายที่ดี(1)' #

# -p pidfile: ใช้ไฟล์ที่ระบุเพื่อกำหนด PID #

# ชื่อพาธ: เส้นทางที่สมบูรณ์ไปยังโปรแกรมที่ระบุ #

# args: อาร์กิวเมนต์เพิ่มเติมที่ส่งผ่านไปยังโปรแกรม (ชื่อพาธ) #

# #

# ส่งกลับค่า (ตามที่กำหนดโดยรหัสทางออก LSB): #

# 0 - โปรแกรมกำลังทำงานหรือบริการใช้ได้ #

# 1 - ข้อผิดพลาดทั่วไปหรือไม่ระบุ #

# 2 - อาร์กิวเมนต์ที่ไม่ถูกต้องหรือมากเกินไป #

# 5 - ไม่ได้ติดตั้งโปรแกรม #

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

start_daemon()

{

local force="" local nice="0" local pidfile="" local pidlist="" local retval=""


# ประมวลผลอาร์กิวเมนต์ในขณะที่ true

do

กรณี "${1}" ใน


-NS)


แรง = "1" กะ 1

;;


-NS)


nice="${2}" กะ 2

;;


-NS)


pidfile="${2}" shift 2

;;


-


ส่งคืน 2

;;



ทำ

*)


ว่า C


program="${1}" พัก

;;


# ตรวจสอบโปรแกรมที่ถูกต้อง

ถ้า [ ! -e "${โปรแกรม}" ]; แล้วกลับ 5; fi


#ดำเนินการ

ถ้า [ -z "${force}" ]; แล้ว

ถ้า [ -z "${pidfile}" ]; แล้ว

ภาพ


# กำหนด pid โดยการค้นพบ pidlist=`pidofproc "${1}"` retval="${?}"

อื่น

# ไฟล์ PID มี PID ที่จำเป็น

# โปรดทราบว่าตามข้อกำหนด LSB ต้องกำหนดเส้นทางให้กับ pidofproc

# อย่างไรก็ตาม มันไม่ได้ถูกใช้โดยการใช้งานหรือมาตรฐานในปัจจุบัน pidlist=`pidofproc -p "${pidfile}" "${1}"`

retval="${?}"

fi


# คืนค่าเท่านั้น

# มันเป็นความรับผิดชอบของสคริปต์เริ่มต้น (หรือหน้าที่ของการกระจาย)

# เพื่อบันทึกข้อความ! กรณี "${retval}" ใน


0)

# โปรแกรมทำงานอย่างถูกต้องแล้ว นี่คือ

#เริ่มต้นได้สำเร็จ ส่งคืน 0

;;


1)

# โปรแกรมไม่ทำงาน แต่มีไฟล์ pid ที่ไม่ถูกต้อง

# ลบไฟล์ pid และดำเนินการต่อ rm -f "${pidfile}"

;;


3)

# โปรแกรมไม่ทำงานและไม่มี pidfile อยู่

#ไม่ทำอะไรเลย ให้ start_deamon ไปต่อ

;;


*)


ว่า C

fi


# อื่น ๆ ที่ส่งคืนโดยค่าสถานะจะไม่ถูกตีความ

# และส่งคืนเป็นข้อผิดพลาดที่ไม่ระบุ กลับ 1

;;


#เริ่มเลย!

ดี -n "${nice}" "${@}"

}


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

# killproc () #

# การใช้งาน: killproc [-p pidfile] ชื่อพาธ [สัญญาณ] #

# #

# วัตถุประสงค์: ส่งสัญญาณควบคุมไปยังกระบวนการที่ทำงานอยู่ #

# #

# อินพุต: -p pidfile ใช้ pidfile ที่ระบุ #

# ชื่อพา ธ ชื่อพา ธ ไปยังโปรแกรมที่ระบุ #

# สัญญาณส่งสัญญาณนี้ไปยังชื่อพา ธ #

# #

# ส่งกลับค่า (ตามที่กำหนดโดยรหัสทางออก LSB): #

# 0 - โปรแกรม (ชื่อพาธ) หยุดทำงาน/หยุดทำงานแล้วหรือ #

ภาพ



#

ระบุโปรแกรมที่กำลังทำงานอยู่

สัญญาณและ

หยุด

#

#

ประสบความสำเร็จ

#

#

1

- ข้อผิดพลาดทั่วไปหรือไม่ระบุ

#

#

2

- อาร์กิวเมนต์ที่ไม่ถูกต้องหรือมากเกินไป

#

#

5

- ไม่ได้ติดตั้งโปรแกรม

#

#

7

- โปรแกรมไม่ทำงานและสัญญาณเป็น

ที่จัดมา

#

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

คิลโปรค()

{

pidfile ท้องถิ่น โปรแกรมท้องถิ่น คำนำหน้าท้องถิ่น โปรแกรมท้องถิ่น

local signal="-TERM" local fallback="-KILL" nosig ในพื้นที่

pidlist ท้องถิ่น retval ท้องถิ่น pid ท้องถิ่น

local delay="30" local piddead local dtime


# ประมวลผลอาร์กิวเมนต์ในขณะที่เป็นจริง ทำ

กรณี "${1}" ใน

-NS)

pidfile="${2}" shift 2

;;


*)

โปรแกรม="${1}"

ถ้า [-n "${2}" ]; แล้วสัญญาณ="${2}" fallback=""

อื่น

โนซิก=1

fi


# เกิดข้อผิดพลาดในอาร์กิวเมนต์เพิ่มเติม ถ้า [ -n "${3}" ]; แล้ว

ส่งคืน 2

อื่น

ทำลาย


ทำ

fi

;;

ว่า C


# ตรวจสอบโปรแกรมที่ถูกต้อง

ถ้า [ ! -e "${โปรแกรม}" ]; แล้วกลับ 5; fi


# ตรวจสอบสัญญาณที่ถูกต้อง check_signal "${signal}"

ถ้า [ "${?}" -ne "0" ]; แล้วกลับ 2; fi

ภาพ


# รับรายการ pids

ถ้า [ -z "${pidfile}" ]; แล้ว

# กำหนด pid โดยการค้นพบ pidlist=`pidofproc "${1}"` retval="${?}"

อื่น

# ไฟล์ PID มี PID ที่จำเป็น

# โปรดทราบว่าตามข้อกำหนด LSB ต้องกำหนดเส้นทางให้กับ pidofproc

# อย่างไรก็ตาม มันไม่ได้ถูกใช้โดยการใช้งานหรือมาตรฐานในปัจจุบัน pidlist=`pidofproc -p "${pidfile}" "${1}"`

retval="${?}"

fi


# คืนค่าเท่านั้น

# มันเป็นความรับผิดชอบของสคริปต์เริ่มต้น (หรือหน้าที่ของการกระจาย)

# เพื่อบันทึกข้อความ! กรณี "${retval}" ใน


0)

#โปรแกรมทำงานถูกต้อง

#อย่าทำอะไรที่นี่ ให้ killproc ดำเนินการต่อ

;;


1)

# โปรแกรมไม่ทำงาน แต่มีไฟล์ pid ที่ไม่ถูกต้อง

# ลบไฟล์ pid rm -f "${pidfile}"


# นี่เป็นความสำเร็จหากไม่มีสัญญาณผ่าน ถ้า [ -n "${nosig}" ]; แล้ว

ส่งคืน 0

อื่น

ส่งคืน 7

fi

;;


3)

# โปรแกรมไม่ทำงานและไม่มี pidfile อยู่

# นี่เป็นความสำเร็จหากไม่มีสัญญาณผ่าน ถ้า [ -n "${nosig}" ]; แล้ว

ส่งคืน 0

อื่น

ส่งคืน 7

fi

;;


*)


ว่า C


# อื่น ๆ ที่ส่งคืนโดยค่าสถานะจะไม่ถูกตีความ

# และส่งคืนเป็นข้อผิดพลาดที่ไม่ระบุ กลับ 1

;;


# ดำเนินการต่าง ๆ สำหรับสัญญาณออกและสัญญาณควบคุม check_sig_type "${signal}"


ถ้า [ "${?}" -eq "0" ]; จากนั้น # สัญญาณจะใช้เพื่อยุติโปรแกรม

ภาพ


# บัญชีสำหรับ pidlist ที่ว่างเปล่า (ไฟล์ pid ยังคงอยู่และไม่มี

#สัญญาณได้รับ)

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


# ฆ่ารายการ pids สำหรับ pid ใน ${pidlist}; ทำ

kill -0 "${pid}" 2> /dev/null if [ "${?}" -ne "0" ]; แล้ว

# กระบวนการตายแล้ว ดำเนินการต่อและถือว่าทุกอย่างดำเนินไปได้ด้วยดี

อื่น

ฆ่า "${signal}" "${pid}" 2> /dev/null


# รอถึง ${delay}/10 วินาทีสำหรับ "${pid}" ถึง

# สิ้นสุดใน 10 วินาที


ในขณะที่ [ "${delay}" -ne "0" ]; ทำ

ฆ่า -0 "${pid}" 2> /dev/null || piddead="1" ถ้า [ "${piddead}" = "1" ]; แล้วแตก; fi สลีป 0.1

ล่าช้า="$(( ${ล่าช้า} - 1 ))"

ทำ


# หากตั้งค่าทางเลือกไว้ และโปรแกรมยังทำงานอยู่ แสดงว่า

#ใช้ทางเลือกสำรอง

ถ้า [-n "${fallback}" -a "${piddead}" != "1" ]; จากนั้นฆ่า "${fallback}" "${pid}" 2> /dev/null

นอนหลับ 1

# ตรวจสอบอีกครั้ง และล้มเหลวหากยังคงเรียกใช้ kill -0 "${pid}" 2> /dev/null && return 1

fi

fi

ทำ

fi


# ตรวจสอบและลบไฟล์ PID ที่เก่าแล้ว ถ้า [ -z "${pidfile}" ]; แล้ว

# ค้นหาชื่อฐานของ $program

prefix=`echo "${program}" | sed 's/[^/]*$//'` progname=`echo "${program}" | sed 's/[^/]*$//'' progname=`echo "${program}" | sed 's/[^/]*$//' sed "s@${prefix}@@"`


ถ้า [ -e "/var/run/${progname}.pid" ]; แล้ว

rm -f "/var/run/${progname}.pid" 2> /dev/null

fi

อื่น

ถ้า [ -e "${pidfile}" ]; จากนั้น rm -f "${pidfile}" 2> /dev/null; fi

fi


# สำหรับสัญญาณที่ไม่คาดหวังให้โปรแกรมออก ง่ายๆ

# ให้ kill ทำหน้าที่ของมัน และประเมินผลตอบแทนจากการฆ่าเพื่อมูลค่า


else# check_sig_type - สัญญาณไม่ได้ใช้เพื่อยุติโปรแกรมสำหรับ pid ใน ${pidlist}; ทำ

ฆ่า "${signal}" "${pid}"

ภาพ


ถ้า [ "${?}" -ne "0" ]; แล้วกลับ 1; fi

ทำ

fi

}


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

# pidofproc() #

# การใช้งาน: pidofproc [-p pidfile] ชื่อพาธ #

# #

# วัตถุประสงค์: ฟังก์ชันนี้ส่งคืน pid หนึ่งรายการขึ้นไปสำหรับ daemon เฉพาะ #

# #

# อินพุต: -p pidfile ใช้ pidfile ที่ระบุแทน pidof #

# ชื่อพาธ, พาธไปยังโปรแกรมที่ระบุ #

# #

# ส่งกลับค่า (ตามที่กำหนดโดยรหัสสถานะ LSB): #

# 0 - ความสำเร็จ (PID ถึง stdout) #

# 1 - โปรแกรมตายแล้ว ไฟล์ PID ยังคงอยู่ (เอาต์พุต PID ที่เหลืออยู่) #

# 3 - โปรแกรมไม่ทำงาน (ไม่มีเอาต์พุต) #

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

พิดอฟโปรค()

{

pidfile ท้องถิ่น โปรแกรมท้องถิ่น คำนำหน้าท้องถิ่น โปรแกรมท้องถิ่น pidlist ท้องถิ่น lpids

สถานะทางออกในท้องถิ่น="0"


# ประมวลผลอาร์กิวเมนต์ในขณะที่เป็นจริง ทำ

กรณี "${1}" ใน


-NS)


pidfile="${2}" shift 2

;;


*)

โปรแกรม="${1}"

ถ้า [ -n "${2}" ]; แล้ว

#มีข้อโต้แย้งมากเกินไป

# เนื่องจากนี่คือสถานะ ส่งคืนที่ไม่รู้จัก return 4

อื่น

ทำลาย


ทำ

fi

;;

ว่า C


# หากไม่ได้ระบุไฟล์ PID ให้ลองค้นหา ถ้า [ -z "${pidfile}" ]; แล้ว

# รับชื่อฐานของโปรแกรม

prefix=`echo "${program}" | sed 's/[^/]*$//'` if [ -z "${prefix}" ]; แล้ว

ภาพ


progname="${program}" else

progname=`echo "${program}" | sed "s@${prefix}@@"`

fi


# หากมีไฟล์ PID ที่ใช้ชื่อนั้นอยู่ ให้ถือว่านั่นคือชื่อนั้น ถ้า [ -e "/var/run/${progname}.pid" ]; แล้ว

pidfile="/var/run/${progname}.pid"

fi

fi


# หากไฟล์ PID ถูกตั้งค่าและมีอยู่แล้ว ให้ใช้ไฟล์นั้น

ถ้า [ -n "${pidfile}" -a -e "${pidfile}" ]; แล้ว


# ใช้ค่าในบรรทัดแรกของ pidfile pidlist=`/bin/head -n1 "${pidfile}"`

# สามารถเขียนเป็น 'sed 1q' เพื่อแทนที่ 'head -n1'

# LFS ควรย้าย /bin/head ไปที่ /usr/bin/head

อื่น

# ใช้ pidof

pidlist=`pidof "${program}"`

fi


# ดูว่า PID ที่ระบุไว้ทั้งหมดกำลังทำงานอยู่หรือไม่ สำหรับ pid ใน ${pidlist}; ทำ

ฆ่า -0 ${pid} 2> /dev/null


ถ้า ["${?}" -eq "0" ]; จากนั้น lpids="${lpids}${pid} "

อื่น

exitstatus="1"

fi

ทำ


ถ้า [-z "${lpids}" -a ! -f "${pidfile}" ]; แล้วกลับ 3

อื่น

เสียงสะท้อน "${lpids}"

ส่งคืน "${exitstatus}"

fi

}


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

# สถานะโพรค () #

# การใช้งาน: statusproc [-p pidfile] ชื่อพาธ #

# #

# วัตถุประสงค์: ฟังก์ชันนี้พิมพ์สถานะของภูตเฉพาะไปยัง stdout #

# #

# อินพุต: -p pidfile ใช้ pidfile ที่ระบุแทน pidof #

# ชื่อพาธ, พาธไปยังโปรแกรมที่ระบุ #

# #

# ส่งกลับค่า: #

# 0 - พิมพ์สถานะ #

# 1 - ข้อผิดพลาดในการป้อนข้อมูล ไม่ได้ระบุภูตที่จะตรวจสอบ #

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

สถานะโปรค()

{

ภาพ


pidfile ท้องถิ่น pidlist ท้องถิ่น


ถ้า [ "${#}" = "0" ]; แล้ว

echo "การใช้งาน: statusproc [-p pidfle] {program}" ออก 1

fi


# ประมวลผลอาร์กิวเมนต์ในขณะที่เป็นจริง ทำ

กรณี "${1}" ใน


-NS)


pidfile="${2}" shift 2

;;


*)

ถ้า [ -n "${2}" ]; แล้ว

echo "มีอาร์กิวเมนต์มากเกินไป" คืนค่า 1

อื่น

ทำลาย


ทำ

fi

;;

ว่า C


ถ้า [ -n "${pidfile}" ]; จากนั้น pidlist=`pidofproc -p "${pidfile}" $@`

อื่น

pidlist=`pidofproc $@`

fi


# ตัดช่องว่างต่อท้าย

pidlist=`echo "${pidlist}" | sed -r 's/ +$//'` base="${1##*/}"

ถ้า [ -n "${pidlist}" ]; แล้ว

/bin/echo -e "${INFO}${base} กำลังทำงานด้วย Process" \ "ID(s) ${pidlist}.${NORMAL}"

อื่น

ถ้า [ -n "${base}" -a -e "/var/run/${base}.pid" ]; แล้ว

/bin/echo -e "${WARNING}${1} ไม่ทำงาน แต่" \"/var/run/${base}.pid มีอยู่.${NORMAL}"

อื่น

ถ้า [ -n "${pidfile}" -a -e "${pidfile}" ]; แล้ว

/bin/echo -e "${WARNING}${1} ไม่ทำงาน" \ "แต่ ${pidfile} มีอยู่${NORMAL}"

อื่น

/bin/echo -e "${INFO}${1} ไม่ทำงาน${NORMAL}"

fi

fi

fi

}

ภาพ


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

# ตารางเวลา () #

# #

# วัตถุประสงค์: ฟังก์ชันยูทิลิตี้ภายในเพื่อจัดรูปแบบการประทับเวลา #

# ไฟล์บันทึกการบูต ตั้งค่าตัวแปร STAMP #

# #

# ค่าส่งคืน: ไม่ได้ใช้ #

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

ตารางเวลา ()

{

STAMP="$(echo `date +"%b %d %T %:z"` `hostname`) " return 0

}


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

# log_success_msg() #

# การใช้งาน: log_success_msg ["ข้อความ"] #

# #

# วัตถุประสงค์: พิมพ์ข้อความสถานะสำเร็จไปที่หน้าจอและ #

# ไฟล์บันทึกการบูต #

# #

# อินพุต: $@ - ข้อความ #

# #

# ส่งกลับค่า: ไม่ได้ใช้ #

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

log_success_msg()

{

/bin/echo -n -e "${BMPREFIX}${@}"

/bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"


# ตัดอักขระที่ไม่สามารถพิมพ์ได้จากล็อกไฟล์ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g''


ตารางเวลา

/bin/echo -e "${STAMP} ${logmessage} ตกลง" >> ${BOOTLOG}


ส่งคืน 0

}


log_success_msg2()

{

/bin/echo -n -e "${BMPREFIX}${@}"

/bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}" echo " ตกลง" >> ${BOOTLOG}

ส่งคืน 0

}


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

# log_failure_msg() #

# การใช้งาน: log_failure_msg ["ข้อความ"] #

# #

# วัตถุประสงค์: พิมพ์ข้อความสถานะความล้มเหลวไปที่หน้าจอและ #

# ไฟล์บันทึกการบูต #

# #

# อินพุต: $@ - ข้อความ #

ภาพ


# #

# ส่งกลับค่า: ไม่ได้ใช้ #

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

log_failure_msg()

{

/bin/echo -n -e "${BMPREFIX}${@}"

/bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"

# ถอดอักขระที่ไม่สามารถพิมพ์ได้ออกจากไฟล์บันทึก timespec

logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g''

/bin/echo -e "${STAMP} ${logmessage} ล้มเหลว" >> ${BOOTLOG}


ส่งคืน 0

}


log_failure_msg2()

{

/bin/echo -n -e "${BMPREFIX}${@}"

/bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}" เสียงก้อง "FAIL" >> ${BOOTLOG}

ส่งคืน 0

}


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

# log_warning_msg() #

# การใช้งาน: log_warning_msg ["ข้อความ"] #

# #

# วัตถุประสงค์: พิมพ์ข้อความสถานะคำเตือนไปที่หน้าจอและ #

# ไฟล์บันทึกการบูต #

# #

# ส่งกลับค่า: ไม่ได้ใช้ #

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

log_warning_msg()

{

/bin/echo -n -e "${BMPREFIX}${@}"

/bin/echo -e "${CURS_ZERO}${WARNING_PREFIX}${SET_COL}${WARNING_SUFFIX}"


# ตัดอักขระที่ไม่สามารถพิมพ์ได้จากล็อกไฟล์ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` timespec

/bin/echo -e "${STAMP} ${logmessage} WARN" >> ${BOOTLOG}


ส่งคืน 0

}


log_skip_msg()

{

/bin/echo -n -e "${BMPREFIX}${@}"

/bin/echo -e "${CURS_ZERO}${SKIP_PREFIX}${SET_COL}${SKIP_SUFFIX}"


# ตัดอักขระที่ไม่สามารถพิมพ์ได้จากล็อกไฟล์ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g''

/bin/echo "ข้าม" >> ${BOOTLOG}

ภาพ


ส่งคืน 0

}


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

# log_info_msg() #

# การใช้งาน: ข้อความ log_info_msg #

# #

# วัตถุประสงค์: พิมพ์ข้อความข้อมูลไปที่หน้าจอและ #

# ไฟล์บันทึกการบูต ไม่พิมพ์อักขระขึ้นบรรทัดใหม่ต่อท้าย #

# #

# ส่งกลับค่า: ไม่ได้ใช้ #

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

log_info_msg()

{

/bin/echo -n -e "${BMPREFIX}${@}"


# ตัดอักขระที่ไม่สามารถพิมพ์ได้จากล็อกไฟล์ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` timespec

/bin/echo -n -e "${STAMP} ${logmessage}" >> ${BOOTLOG}


ส่งคืน 0

}


log_info_msg2()

{

/bin/echo -n -e "${@}"


# ตัดอักขระที่ไม่สามารถพิมพ์ได้จากล็อกไฟล์ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g''

/bin/echo -n -e "${logmessage}" >> ${BOOTLOG}


ส่งคืน 0

}


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

# ประเมิน_retval() #

# การใช้งาน: ประเมินผลตอบแทนและพิมพ์สำเร็จหรือล้มเหลวตามความเหมาะสม #

# #

# วัตถุประสงค์: ฟังก์ชันอำนวยความสะดวกในการยุติข้อความข้อมูล #

# #

# ส่งกลับค่า: ไม่ได้ใช้ #

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

ประเมิน_retval()

{

local error_value="${?}"


ถ้า [ ${error_value} = 0]; จากนั้น log_success_msg2

อื่น

log_failure_msg2

fi

}


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

# ตรวจสอบสัญญาณ () #

ภาพ


# การใช้งาน: check_signal [ -{signal} | {สัญญาณ} ] #

# #

# วัตถุประสงค์: ตรวจสอบสัญญาณที่ถูกต้อง สิ่งนี้ไม่ได้กำหนดโดยร่าง LSB ใด ๆ #

# อย่างไรก็ตาม จำเป็นต้องตรวจสอบสัญญาณเพื่อดูว่า #

# สัญญาณที่เลือกเป็นอาร์กิวเมนต์ที่ไม่ถูกต้องสำหรับฟังก์ชันอื่นๆ #

# #

# อินพุต: ยอมรับค่าสตริงเดียวในรูปแบบหรือ -{สัญญาณ} หรือ {สัญญาณ} #

# #

# ส่งกลับค่า: #

# 0 - สำเร็จ (สัญญาณถูกต้อง #

# 1 - สัญญาณไม่ถูกต้อง #

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

ตรวจสอบสัญญาณ ()

{

valsig ท้องถิ่น


# เพิ่มการจัดการข้อผิดพลาดสำหรับสัญญาณที่ไม่ถูกต้อง

valsig="-ALRM -HUP -INT -KILL -PIPE -POLL -PROF -TERM -USR1 -USR2" valsig="${valsig} -VTALRM -STKFLT -PWR -WINCH -CHLD -URG -TSTP -TTIN" valsig= "${valsig} -TTOU -STOP -CONT -ABRT -FPE -ILL -QUIT -SEGV -TRAP" valsig="${valsig} -SYS -EMT -BUS -XCPU -XFSZ -0 -1 -2 -3 - 4 -5 -6 -8 -9"

valsig="${valsig} -11 -13 -14 -15"

echo "${valsig}" | grep -- " ${1} " > /dev/null if [ "${?}" -eq "0" ]; แล้ว

ส่งคืน 0

อื่น

ส่งคืน 1

fi

}


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

# check_sig_type() #

# การใช้งาน: check_signal [ -{signal} | {สัญญาณ} ] #

# #

# วัตถุประสงค์: ตรวจสอบว่าสัญญาณเป็นสัญญาณยุติโปรแกรมหรือสัญญาณควบคุม #

# สิ่งนี้ไม่ได้กำหนดโดยร่าง LSB ใด ๆ อย่างไรก็ตามจำเป็นต้อง #

# ตรวจสอบสัญญาณเพื่อดูว่ามีจุดมุ่งหมายเพื่อสิ้นสุด #

# โปรแกรมหรือเพียงแค่ควบคุมมัน #

# #

# อินพุต: ยอมรับค่าสตริงเดียวในรูปแบบหรือ -{สัญญาณ} หรือ {สัญญาณ} #

# #

# ส่งกลับค่า: #

# 0 - สัญญาณใช้สำหรับการยกเลิกโปรแกรม #

# 1 - สัญญาณใช้สำหรับควบคุมโปรแกรม #

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

check_sig_type()

{

valsig ท้องถิ่น


# รายการสัญญาณบอกเลิก (จำกัดเฉพาะรายการที่ใช้โดยทั่วไป) valsig="-ALRM -INT -KILL -TERM -PWR -STOP -ABRT -QUIT -2 -3 -6 -9 -14 -15"


echo "${valsig}" | grep -- " ${1} " > /dev/null if [ "${?}" -eq "0" ]; แล้ว



ส่งคืน 0

อื่น

ส่งคืน 1

fi

}


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

# wait_for_user() #

# #

# วัตถุประสงค์: รอให้ผู้ใช้ตอบสนองหากไม่ใช่ระบบหัวขาด #

# #

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

wait_for_user()

{

# รอผู้ใช้โดยค่าเริ่มต้น

[ "${HEADLESS=0}" = "0" ] && อ่าน ENTER

ส่งคืน 0

}


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

# เป็นความจริง() #

# #

# วัตถุประสงค์: ยูทิลิตี้เพื่อทดสอบว่าตัวแปรเป็นจริงหรือไม่ | ใช่ | 1 #

# #

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

เป็นความจริง()

{

[ "$1" = "1" ] || [ "$1" = "ใช่" ] || [ "$1" = "จริง" ] || [ "$1" = "y" ] || [ "$1" = "ท" ]

}


# สิ้นสุด /lib/lsb/init-functions

ส่งคืน 0

อื่น

ส่งคืน 1

fi

}


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

# wait_for_user() #

# #

# วัตถุประสงค์: รอให้ผู้ใช้ตอบสนองหากไม่ใช่ระบบหัวขาด #

# #

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

wait_for_user()

{

# รอผู้ใช้โดยค่าเริ่มต้น

[ "${HEADLESS=0}" = "0" ] && อ่าน ENTER

ส่งคืน 0

}


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

# เป็นความจริง() #

# #

# วัตถุประสงค์: ยูทิลิตี้เพื่อทดสอบว่าตัวแปรเป็นจริงหรือไม่ | ใช่ | 1 #

# #

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

เป็นความจริง()

{

[ "$1" = "1" ] || [ "$1" = "ใช่" ] || [ "$1" = "จริง" ] || [ "$1" = "y" ] || [ "$1" = "ท" ]

}


# สิ้นสุด /lib/lsb/init-functions


ภาพ

ภาพ

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

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

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

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

: แอลเอฟเอส 7.0

: แอลเอฟเอส 7.0

เมานต์เวอร์ต

เมานต์เวอร์ต

S

S

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