คำถามติดแท็ก init

init เป็นกระบวนการที่เกิดขึ้นจริงครั้งแรก (PID 1) เกิดขึ้นระหว่างลำดับการบูตของระบบ UNIX ระบบบางระบบอาจใช้โซลูชั่นทางเลือกเช่น systemd หรือ Upstart (Ubuntu)

6
ข้อดี / ข้อเสียของการพุ่งพรวดและ systemd คืออะไร?
มันจะปรากฏsystemdเป็นร้อนใหม่initระบบในบล็อกเดียวกับพุ่งพรวดเป็นไม่กี่ปีที่ผ่านมา ข้อดี / ข้อเสียของแต่ละข้อคืออะไร? นอกจากนี้แต่ละระบบยังเปรียบเทียบกับระบบเริ่มต้นอื่น ๆ ได้อย่างไร
183 init  upstart  systemd 

2
systemd ใช้สคริปต์ /etc/init.d อย่างไร
ฉันเพียงแค่เปลี่ยนไปเดเบียน jessie wdmและสิ่งที่มากที่สุดทำงานโอเครวมทั้งผู้จัดการการแสดงผลกราฟิกของฉัน สิ่งนี้คือฉันไม่เข้าใจว่ามันทำงานอย่างไร เห็นได้ชัดว่า/etc/init.d/wdmสคริปต์ของฉันถูกเรียกเพราะเมื่อฉันใส่ไว้exitในนั้น wdm จะไม่เริ่ม แต่เมื่อฉันเปลี่ยนชื่อไดเรกทอรี /etc/rc3.d อีกทางหนึ่ง (runlevel เริ่มต้นของฉันเคยเป็น 3) แล้ว wdm ก็ยังคงเริ่มทำงาน ฉันไม่สามารถหาวิธีที่ systemd ค้นหาสคริปต์นี้และฉันไม่เข้าใจว่ามันทำอะไรกับสคริปต์ init.d อื่น ๆ ทั้งหมด systemd รัน init.d scrips เมื่อใดและอย่างไร ในระยะยาวฉันควรกำจัดสคริปต์ init.d ทั้งหมดหรือไม่


18
ตรวจจับระบบ init โดยใช้เชลล์
สิ่งนี้อาจมีอะไรเพิ่มเติมเกี่ยวกับการตรวจจับระบบปฏิบัติการ แต่ฉันต้องการระบบเริ่มต้นที่ใช้อยู่ในระบบเป็นพิเศษ Fedora 15 และ Ubuntu ตอนนี้ใช้ systemd, Ubuntu เคยใช้ Upstart (เริ่มต้นนานจนถึง 15.04), ในขณะที่คนอื่นใช้รูปแบบของ System V ฉันมีแอปพลิเคชันที่ฉันเขียนเพื่อเป็นภูตข้ามแพลตฟอร์ม สคริปต์ init กำลังถูกสร้างแบบไดนามิกขึ้นอยู่กับพารามิเตอร์ที่สามารถส่งผ่านไปยังการกำหนดค่า สิ่งที่ฉันต้องการทำคือสร้างสคริปต์สำหรับระบบเริ่มต้นเฉพาะที่ใช้ วิธีนี้สคริปต์การติดตั้งสามารถรันได้อย่างสมเหตุสมผลโดยไม่มีพารามิเตอร์เนื่องจากรูทและ daemon สามารถ "ติดตั้ง" โดยอัตโนมัติ นี่คือสิ่งที่ฉันเกิดขึ้น: ค้นหา systemd, พุ่งพรวด, ฯลฯ ใน / bin เปรียบเทียบ / proc / 1 / comm กับ systemd, พุ่งพรวด, ฯลฯ ถามผู้ใช้ สิ่งที่จะเป็นวิธีที่ข้าม / แพลตฟอร์มที่ดีที่สุดในการทำเช่นนี้? ประเภทที่เกี่ยวข้องฉันสามารถพึ่งพาการทุบตีเป็นส่วนใหญ่ของ …

5
init ทำอะไรได้บ้าง?
ฉันกำลังสร้างลินุกซ์ distro และตอนนี้ฉันต้องการโปรแกรมเริ่มต้น ฉันสามารถเขียนโค้ดใน c ได้ดีมากและฉันรู้ค่อนข้างน้อยเกี่ยวกับ linux (ไม่มาก แต่ฉันใช้ arch linux สำหรับการพัฒนาเป็นเวลา 4 ปี) ดังนั้นฉันคิดว่าฉันควรลองเขียนสคริปต์ init พื้นฐานของฉันเองใน C ฉัน แค่สงสัยว่างานเริ่มต้นทำอะไรเพื่อตั้งค่าระบบสำหรับเชลล์แบบง่าย? (เมื่อฉันถามว่า "init ทำอะไรได้บ้าง" ฉันรู้ว่า init คืออะไรและใช้ทำอะไรฉันไม่ทราบว่าจะทำงานอะไร) ฉันไม่จำเป็นต้องรหัสและฉันอาจไม่จำเป็นต้องมีแม้แต่คำสั่งพื้นฐาน แต่ฉันไม่ต้องการเพื่อที่พวกเขาจะทำงานใน
43 linux  startup  init 

4
มีตัวแปร UNIX ใดบ้างที่กระบวนการลูกตายกับผู้ปกครอง?
ฉันได้ศึกษาพฤติกรรมเคอร์เนลของ Linux มาระยะหนึ่งแล้วและมันชัดเจนสำหรับฉันเสมอว่า: เมื่อกระบวนการตายเด็กทุกคนจะถูกส่งกลับไปที่initกระบวนการ (PID 1) จนกว่าพวกเขาจะตายในที่สุด อย่างไรก็ตามเมื่อเร็ว ๆ นี้มีคนที่มีประสบการณ์มากกว่าฉันด้วยเคอร์เนลบอกฉันว่า: เมื่อกระบวนการออกไปเด็กทุกคนในนั้นก็ตาย (ยกเว้นคุณใช้NOHUPในกรณีที่พวกเขากลับไปinit) ตอนนี้แม้ว่าฉันจะไม่เชื่อเรื่องนี้ฉันยังคงเขียนโปรแกรมง่าย ๆ เพื่อให้แน่ใจ ฉันรู้ว่าฉันไม่ควรพึ่งพาเวลา ( sleep) สำหรับการทดสอบเนื่องจากทุกอย่างขึ้นอยู่กับการจัดตารางกระบวนการ แต่สำหรับกรณีง่าย ๆ นี้ฉันคิดว่ามันค่อนข้างเพียงพอ int main(void){ printf("Father process spawned (%d).\n", getpid()); sleep(5); if(fork() == 0){ printf("Child process spawned (%d => %d).\n", getppid(), getpid()); sleep(15); printf("Child process exiting (%d => %d).\n", getppid(), getpid()); …
41 process  init  exit  fork 

5
จะปิดการใช้งาน X server autostart ใน Debian Jessie ได้อย่างไร?
ฉันมีเครื่องระยะไกลที่ใช้ Debian 8 (เจสซี) ติดตั้ง lightdm ฉันต้องการให้เริ่มในโหมด no-GUI แต่ฉันไม่ต้องการลบสิ่งที่เกี่ยวข้องกับ X ทั้งหมดเพื่อให้สามารถเรียกใช้งานได้แม้ว่า SSH ด้วย-Xพารามิเตอร์ ดังนั้นวิธีการปิดการใช้งาน X server เริ่มอัตโนมัติโดยไม่ต้องลบมัน? ฉันพยายามsystemctl stop lightdmมันหยุด lightdm แต่มันจะทำงานอีกครั้งหลังจากรีบูต ฉันพยายามsystemctl disable lightdmด้วยเหมือนกัน แต่มันก็ไม่ทำอะไรเลย มันเปลี่ยนชื่อสคริปต์ของ lightdm ใน/etc/rc*.dไดเรกทอรี แต่ก็ยังคงเริ่มต้นหลังจากรีบูตดังนั้นฉันทำอะไรผิด และฉันทำไม่ได้เพียงupdate-rc.d lightdm stopเพราะมันเลิกใช้แล้วและใช้งานไม่ได้


1
systemd อยู่รอดการฆ่า -9 ได้อย่างไร?
ระหว่างคำถาม "ทำไม 'kill -9 0' ถึงจบเซสชันคอนโซลของฉัน" และ "วิธีการทำให้เคอร์เนลตื่นตระหนก" ฉันได้รับความรำคาญภายใต้อานของฉันและลองkill -9 1ใช้แล็ปท็อป Arch linux ที่ทันสมัยเป็นส่วนใหญ่ ฉันทำมันเป็น ID ผู้ใช้ "รูท" ฉันคาดหวังว่าจะเกิดความผิดพลาดหรือตื่นตระหนกหรือปิดเครื่อง แต่ก็ไม่มีอะไรเกิดขึ้น ฉันทำkill -9 1อีกครั้งไม่มีผล เครื่อง Arch Linux ใช้งานsystemdวันนี้ดังนั้น: systemdเอาตัวรอด kill -9 ได้อย่างไร ฉันคาดหวังว่าจะมีรหัสกรณีพิเศษในเคอร์เนล Linux 3.7 แต่อาจมีสาเหตุอื่นที่ฉันไม่ได้คิด สิ่งอื่น ๆ ที่ทำงานด้วย PID 1 คืออะไร Slackware ยังคงใช้initฉันเชื่อ แต่ฉันกลัวที่จะลองบนเซิร์ฟเวอร์ Slackware ที่ใช้งานจริงของฉัน DD-WRT บนเราเตอร์ไร้สายของฉันรัน / sbin …

2
ฉันจะฆ่ากระบวนการ <defunct> ที่ parent เป็นผู้เริ่มต้นได้อย่างไร
การส่งกำลังแขวนอยู่บน NAS ของฉันเป็นระยะ ถ้าฉันส่ง SIGTERM มันจะไม่หายไปจากรายการกระบวนการและ&lt;defunct&gt;ฉลากจะปรากฏขึ้นถัดจากมัน ถ้าผมส่ง SIGKILL initก็ยังคงไม่ได้หายไปและผมก็ไม่สามารถยุติแม่เพราะแม่เป็น วิธีเดียวที่ฉันสามารถกำจัดกระบวนการและรีสตาร์ทเกียร์คือการรีบูต ฉันตระหนักถึงสิ่งที่ดีที่สุดที่ฉันสามารถทำได้คือลองและแก้ไขการส่งข้อมูล (และฉันพยายามแล้ว) แต่ฉันเป็นผู้เริ่มต้นในการรวบรวมและฉันต้องการให้แน่ใจว่า torrents ของฉันเสร็จสิ้นก่อนที่ฉันจะเริ่มยุ่งกับมัน

2
ซอมบี้สามารถมีเด็กกำพร้าได้หรือไม่? เด็กกำพร้าจะถูกรบกวนจากการเก็บซอมบี้หรือไม่?
ตามที่ฉันเข้าใจแล้วกระบวนการซอมบี้ตายไปแล้ว แต่ยังคงมีอยู่เป็นตัวยึดตำแหน่งในตารางกระบวนการจนกว่าผู้ปกครองของมัน (หรือinitหากตัวเองเป็นผีดิบกำพร้า) ตรวจสอบสถานะทางออกของมัน และความเข้าใจของฉันเกี่ยวกับกระบวนการเด็กกำพร้าก็คือพวกเขาเป็นกระบวนการที่ยังมีชีวิตอยู่และทำงานอยู่ แต่พ่อแม่ของเขาเสียชีวิต เมื่อซอมบี้ตายไปแล้วเด็ก ๆ ของพวกมันจะกลายเป็นเด็กกำพร้าใช่ไหม? พวกเขาจะได้รับผลกระทบหรือไม่เมื่อได้รับผลผีดิบ? โดยเฉพาะจะinitรับเอาพวกมันมาเป็นลูกของมันต่อเมื่อซอมบี้ถูกเก็บเกี่ยวหรือพวกมันจะถูกเลี้ยงทันทีที่แม่กลายเป็นซอมบี้?


1
กระบวนการเริ่มต้น: บรรพบุรุษของกระบวนการทั้งหมดหรือไม่
ฉันได้เรียนรู้อยู่เสมอว่ากระบวนการเริ่มต้นเป็นบรรพบุรุษของกระบวนการทั้งหมด ทำไมโพรเซส 2 จึงมี PPID เป็น 0 $ ps -ef | head -n 3 UID PID PPID C STIME TTY TIME CMD root 1 0 0 May14 ? 00:00:01 /sbin/init root 2 0 0 May14 ? 00:00:00 [kthreadd]
26 linux  process  init 

3
วิธีแก้ไขการบูตในพรอมต์ initramfs และ“ mount: ไม่สามารถอ่าน '/ etc / fstab': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว” และ“ ไม่พบ init”?
การติดตั้งระบบใหม่โดยใช้ดิสก์ที่แบ่งพาร์ติชันGPT สำหรับพาร์ติชันเดียว, รูปแบบext4 , extlinux (รุ่น 4.05) เป็น bootloader, Ubuntu Core version 13.10 amd64 เป็น rootfs และ Ubuntu linux-image-3.11.0-18-generic เป็นเคอร์เนล, และ extlinux-update เพื่อสร้างการกำหนดค่า bootloader ผลลัพธ์หลังจากรีบูตเครื่อง (ยังอยู่ในเครื่องเสมือนที่ใช้ KVM) คือพรอมต์ (initramfs) และข้อความเหล่านี้: mount: can't read '/etc/fstab': No such file or directory mount: mounting /dev on /root/dev failed: No such file or directory …

7
เริ่มต้น Tomcat เมื่อเริ่มต้นด้วยสิทธิ์ระดับผู้ดูแล
ฉันต้องใช้กระบวนการหนึ่งก่อนที่จะเข้าสู่ระบบ วิธีการเรียกใช้บริการ ฉันจะให้บริการใน Linux ได้อย่างไร ใน Ubuntu และ Fedora? บริการได้รับการปรับแต่งโพง
23 startup  init 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.