Score:0

การรีบูตไม่ทริกเกอร์ส่วน "หยุด" ของสคริปต์ init.d

ธง cn

ฉันมีสคริปต์ที่ฉันต้องการดำเนินการก่อนที่เครื่องจะปิดหรือรีบูต:

/etc/init.d/init.sh

#!/bin/sh
### เริ่มข้อมูลเริ่มต้น
# ให้: init.sh
# จำเป็น-เริ่มต้น: $all
# จำเป็นต้องหยุด:
# เริ่มต้นเริ่มต้น: 2 3 4 5
# Default-Stop: 0 1 6
# คำอธิบายสั้น ๆ : xxx
# คำอธิบาย: xxx
### สิ้นสุด INIT INFO

ถ้า [ "$1" = "เริ่มต้น" ]; แล้ว
  echo "ข้อความบันทึก"
  su - azureuser -c '/bin/bash /my/script/dir/script1.sh'

  echo "ข้อความบันทึก"
  su - azureuser -c '/bin/bash /my/script/dir/script2.sh -p "parameter2"'
ไฟ

ถ้า [ "$1" = "หยุด" ]; แล้ว
  echo "ข้อความบันทึก"
  su - azureuser -c '<บางคำสั่งเชลล์>'

  ซีดี /my/script/dir/sub
  ./script3.sh พารามิเตอร์ 3
  su - azureuser -c 'cd /my/script/dir/sub; ./script4.sh พารามิเตอร์ 4 --option1 --option2 --option3 ค่าบางอย่าง'
ไฟ

ทางออก 0

(ฉันทำให้เส้นทางและชื่อไฟล์สับสน แต่ยังคงโครงสร้างโดยรวมสำหรับเธรดนี้ไว้ เห็นได้ชัดว่าไม่มีชื่อใดเหมือนอยู่ที่นี่)

สคริปต์ทำงานได้ดีระหว่างการเริ่มต้น แต่บ่นว่าการล้างข้อมูลที่ควรเกิดขึ้นใน หยุด ไม่ได้ดำเนินการบล็อก และฉันไม่เห็นข้อความบันทึกใดๆ ที่มาจาก หยุด บล็อกใน syslog เรียกใช้สคริปต์จากบรรทัดคำสั่ง (sudo /etc/init.d/init.sh หยุด) ทำงานได้อย่างมีเสน่ห์กับทั้งสองอย่าง เริ่ม และ หยุด พารามิเตอร์ ดังนั้นฉันจึงสับสนว่าทำไมมันไม่ทำงานเมื่อฉันหยุดเครื่องของฉัน ค่อนข้างแน่ใจว่าสคริปต์ระดับรันทำงานในฐานะรูท

symlinks ต่อไปนี้มีอยู่ในระบบของฉัน:

/etc/rc0.d/K01init.sh
/etc/rc1.d/K01init.sh
/etc/rc2.d/S99init.sh
/etc/rc3.d/S99init.sh
/etc/rc4.d/S99init.sh
/etc/rc5.d/S99init.sh
/etc/rc6.d/K01init.sh

ซึ่งทั้งหมดชี้ไปที่สคริปต์เดียวกัน ฯลฯ/init.d/init.sh. จากเธรดอื่นที่ฉันได้ลองโดยไม่ใช้ .sh คำต่อท้ายซึ่งไม่ได้เปลี่ยนแปลงอะไรเลย

สิทธิ์สำหรับ สคริปต์1 และ สคริปต์2 เป็นทั้งสองอย่าง 750 และสำหรับ สคริปต์3 และ สคริปต์4 แม้แต่ 755

ฉันไปผิดที่ไหนที่นี่? ฉันใช้ Ubuntu 18.04 และระดับการรันปัจจุบันของฉันคือ 5 (แต่นั่นไม่ควรเกี่ยวข้อง เพราะควรจะประมาณ 0 และ 6 ที่นี่) ตัวสคริปต์เอง (รวมถึงสคริปต์ย่อย) ไม่ได้มีการอภิปรายที่นี่ มันทำงานได้ดีในสภาพแวดล้อมอื่นและการรันด้วยตนเองนำไปสู่สถานะที่ต้องการในสภาพแวดล้อมนี้ ดังนั้นการตั้งค่า (หรือความเข้าใจ) ของสคริปต์เริ่มต้นของฉันจึงต้องผิดพลาดในที่ใดที่หนึ่ง

หากเกี่ยวข้อง: ฉันกำลังพูดถึงการรีบูตทั้งสองทาง sudo รีบูต และ ผ่าน Azure GUI (เป็นเครื่องเสมือน) ไม่แน่ใจว่ากลไกการรีบูต Azures แตกต่างกันหรือไม่ ทั้งสองวิธีไม่ทำงาน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา