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

สคริปต์ที่จะดำเนินการเมื่อบูตโดยปกติจะใช้สำหรับการเริ่มต้น deamons และการติดตั้งระบบไฟล์

1
วิธีเขียนสคริปต์เริ่มต้นสำหรับ systemd
ฉันมีการ์ดกราฟิก 2 อันบนแล็ปท็อปของฉัน หนึ่งคือ IGP และอีกอย่างไม่ต่อเนื่อง ฉันได้เขียนเชลล์สคริปต์เพื่อปิดการ์ดกราฟิกแบบแยก ฉันจะแปลงเป็นสคริปต์ 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 ทั้งหมดหรือไม่

3
ฉันจะสร้างสคริปต์ใน /etc/init.d เริ่มต้นตอนบูตได้อย่างไร
ฉันคิดว่าฉันอ่านบางสิ่งบางอย่างในขณะนี้ แต่ฉันจำไม่ได้ว่ามันเสร็จสิ้นแล้ว เป็นหลักฉันมีบริการ/etc/init.dที่ฉันต้องการเริ่มต้นโดยอัตโนมัติในเวลาบูต ฉันจำได้ว่ามันเกี่ยวกับการเชื่อมโยงสคริปต์เข้ากับ/etc/rc.dไดเรกทอรี แต่ฉันจำไม่ได้ในปัจจุบัน คำสั่งสำหรับสิ่งนี้คืออะไร? ฉันเชื่อว่าฉันใช้อนุพันธ์ของ Fedora / CentOS

3
วิธีการทำให้บริการยูนิกซ์เห็นตัวแปรสภาพแวดล้อม?
ฉันได้ตั้งค่าตัวแปรสภาพแวดล้อมของฉันโดยใช้/etc/profile: export VAR=/home/userhome ถ้าอย่างนั้นฉันecho $VARก็แสดงให้เห็น/home/userhome แต่เมื่อฉันใส่การอ้างอิงตัวแปรนี้ลงใน/etc/init.d/servicenameไฟล์มันไม่สามารถหาตัวแปรนี้ เมื่อฉันเรียกservice servicename statusใช้/etc/init.d/servicenameไฟล์ที่มีเนื้อหาดังต่อไปนี้: case "$1" in status) cd $VAR/dir ;; esac มันบอกว่า /dir: No such file or directory แต่มันใช้งานได้ถ้าฉันวิ่ง/etc/init.d/servicename statusแทนservice servicename status ฉันจะทำให้ยูนิกซ์เห็นตัวแปรสภาพแวดล้อมได้อย่างไร?

3
การเรียกใช้สคริปต์ระหว่างการบูท / เริ่มต้น; init.d vs cron @reboot
ฉันกำลังพยายามที่จะเข้าใจความแตกต่างระหว่างinit.dและ cron @rebootสำหรับการเรียกใช้สคริปต์เมื่อเริ่มต้น / บูตระบบ การใช้@reboot(วิธีนี้ถูกกล่าวถึงในฟอรัมนี้โดยhs.chandra ) เป็นสิ่งที่ง่ายกว่าเพียงเข้าไปในcrontab -eการสร้าง@reboot /some_directory/to_your/script/your_script.txtและจากนั้นyour_script.txtจะถูกเรียกใช้งานทุกครั้งที่มีการรีบูตระบบ ในเชิงลึกของคำอธิบาย@rebootคือที่นี่ อีกทางเลือกหนึ่งโดยฝัง/etc/init.d/your_script.txtลงในบรรทัดที่สองของสคริปต์ของคุณเช่น: #!/bin/bash # /etc/init.d/your_script.txt คุณสามารถเรียกใช้chmod +x /etc/init.d/your_script.txtและควรส่งผลyour_script.txtให้รันทุกครั้งที่ระบบบูต Q1:ความแตกต่างที่สำคัญระหว่างสองคืออะไร Q2: ข้อไหนแข็งแกร่งกว่ากัน Q3:มีหนึ่งในสองที่ดีกว่านี้หรือไม่? Q4:นี่เป็นวิธีที่ถูกต้องในการฝังสคริปต์เพื่อให้ทำงานในระหว่างการบูทหรือไม่? ฉันจะรวมไฟล์ bash .sh ไว้เพื่อทำงานในระหว่างการเริ่มต้น

3
ไดเร็กทอรี rc0.d, rc1.d, …ใน / etc
ผมใช้อูบุนตูที่ฉันมีไดเรกทอรี/etc/rc0.d, /etc/rc1.d, /etc/rc2.d, ... /etc/rc6.d, ตัวอย่างไฟล์จากเครื่องของฉัน: directory example symlinks in the dir ------------------------------------------ /etc/rc1.d: K76dovecot, K77ntp /etc/rc2.d: S23ntp, S24dovecot /etc/rc3.d: S23ntp, S24dovecot /etc/rc4.d: S23ntp, S24dovecot /etc/rc5.d: S23ntp, S24dovecot คำถาม: จุดประสงค์ของไดเรกทอรี "rc" หลายรายการคืออะไร? อูบุนตูไม่ติดตั้งซ้ำกันทำไมdovecotและntpในทุกไดเรกทอรียกเว้นrc0.dและrc6.d? หากระบุไว้หลายครั้งเหมือนด้านบนพวกเขาจะดำเนินการหลายครั้งจริง ๆ หรือไม่ คุณสามารถบอกได้จากข้างต้นในลำดับใดdovecotและntpจะดำเนินการเมื่อเริ่มต้น? เป็นวิธีที่เหมาะสมในการบอกให้ Ubuntu ดำเนินการntpมาก่อนเสมอdovecotเมื่อเริ่มต้นอย่างไร

4
การเชื่อมต่อระหว่างไดเร็กทอรี“ /etc/init.d” และ“ /etc/rcX.d” ใน Linux คืออะไร
ฉันกำลังเรียนรู้บรรทัดคำสั่งจากหนังสือที่ชื่อว่า " Linux Command Line และ Shell Scripting Bible, Second Edition " หนังสือเล่มนี้ระบุว่า: การใช้งานลินุกซ์บางตัวจะมีตารางของกระบวนการที่จะเริ่มต้นโดยอัตโนมัติเมื่อบูต บนระบบ Linux ตารางนี้มักจะอยู่ในไฟล์พิเศษ / etc / inittabs ระบบอื่น ๆ (เช่นการกระจาย Ubuntu Linux ยอดนิยม) ใช้โฟลเดอร์ /etc/init.d ซึ่งมีสคริปต์สำหรับการเริ่มต้นและหยุดแอปพลิเคชันแต่ละรายการในเวลาบูต สคริปต์เริ่มทำงานผ่านรายการภายใต้โฟลเดอร์ /etc/rcX.d โดยที่ X คือระดับการรัน อาจเป็นเพราะฉันใหม่สำหรับ linux ฉันไม่เข้าใจความหมายของย่อหน้าที่สองที่ยกมา บางคนสามารถอธิบายสิ่งเดียวกันด้วยภาษาที่ชัดเจนกว่าได้หรือไม่?

1
อะไรทำให้ systemd แตกต่างจากระบบ init อื่น ๆ ?
มันไม่เป็นทางการมากนัก แต่ดูเหมือนว่า systemd กำลังจะมาถึง Debian และหลังจากได้อ่านการอภิปรายรายชื่อผู้รับจดหมายที่ร้อนแรงในการตัดสินใจครั้งนั้น ฉันใช้ระบบ Debian (sysvinit) และ Gentoo (OpenRC) และไม่รู้อะไรเลยเกี่ยวกับ systemd แม้ว่ามันจะดูเหมือนว่ามันกำลังเข้ามาแล้วก็ตาม ฉันได้เห็นคำถามที่เกี่ยวข้องกับการถามข้อดีข้อเสียของ systemd vs พุ่งพรวด แต่มันเป็นเวลา 3 ปีตั้งแต่คำถามนั้นถูกโพสต์และฉันแน่ใจว่าสิ่งต่าง ๆ มีการเปลี่ยนแปลงในเวลานั้น คำถามของฉันคือ: systemd เปรียบเทียบกับระบบ init อื่น ๆ อย่างไร อะไรแยกมันออกจากกัน - มันทำอะไรได้บ้างที่ระบบ init อื่นไม่สามารถทำได้? มีอะไรที่เสียไปในการเปลี่ยนจากระบบ init อื่นหรือไม่? การบริหารระบบเปรียบเทียบกับคนอื่นอย่างไร?

6
ไม่มีไฟล์หรือไดเร็กทอรี /etc/init.d/functions ดังกล่าว
ฉันสร้างสคริปต์เริ่มต้นเพื่อเริ่ม / รีสตาร์ท / หยุดกลุ่มแอปพลิเคชัน ฉันใช้ lib /etc/init.d/functionsในสคริปต์ของฉัน มันทำงานได้ดีกับระบบของฉัน แต่มันไม่ทำงานสำหรับลูกค้า เขาได้รับข้อผิดพลาด: ไม่มีไฟล์หรือไดเร็กทอรี /etc/init.d/functions ดังกล่าว ตอนนี้ฉันไม่รู้ว่า linux ตัวใดที่ลูกค้าของฉันใช้ เป็นinit.d/functionsที่แตกต่างกันของแฟ้มสำหรับลินุกซ์ distros แตกต่างกันอย่างไร ถ้าเป็นเช่นนั้นฉันจะหามันได้อย่างไร

8
hostapd จะไม่เริ่มต้นผ่าน“ บริการ” - แต่จะเริ่มโดยตรง
ฉันมีปัญหาในการhostapdเริ่มต้นเป็นบริการ มันล้มเหลวเมื่อฉันพยายามเริ่ม: $ sudo service hostapd start [FAIL] Starting advanced IEEE 802.11 management: hostapd failed! จากสิ่งที่ฉันเข้าใจนี่ใช้การกำหนดค่าใน/etc/default/hostapd: $ cat /etc/default/hostapd # Defaults for hostapd initscript # # See /usr/share/doc/hostapd/README.Debian for information about alternative # methods of managing hostapd. # # Uncomment and set DAEMON_CONF to the absolute path of a hostapd …

2
ฉันจะทำให้ daemon / init นี้ทำงานเป็นผู้ใช้ที่ไม่ใช่รูทได้อย่างไร
ฉันมีสคริปต์ init เพื่อเริ่มดีมอน ปัญหาคือมันทำงานเป็นราก ฉันต้องการให้มันทำงานในฐานะผู้ใช้ที่เรียกว่า "ปรับใช้" Ubuntu 12.04 #! /bin/sh # File: /etc/init.d/unicorn ### BEGIN INIT INFO # Provides: unicorn # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the unicorn web server …

1
ไม่สามารถติดตั้งอะไรก็ได้โดยใช้ apt-get เนื่องจากการ insserv
เมื่อใดก็ตามที่ฉันพยายามที่จะติดตั้งสิ่งที่ใช้ฉันได้รับข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องกับapt-get insservฉันได้ลองติดตั้งแพคเกจต่าง ๆ มากมาย แต่ทุกอย่างมีข้อผิดพลาดเดียวกัน และเห็นได้ชัดว่าแพ็คเกจ CUPS กำลังทำ / ทำบางสิ่งบางอย่างเพราะทุกข้อผิดพลาดเกี่ยวข้อง ต่อไปนี้เป็นข้อผิดพลาดที่ปรากฏขึ้นเมื่อฉันวิ่งsudo apt-get install wine1.8 winetricks: After this operation, 716 MB of additional disk space will be used. Do you want to continue? [Y/n] y Extracting templates from packages: 100% Preconfiguring packages ... Setting up util-linux (2.27.1-6ubuntu3.1) ... insserv: warning: script …

1
สับสนเกี่ยวกับ“ /etc/init.d” และบริการใน“ / lib / systemd / system”
ฉันยังใหม่กับโลกของลินุกซ์ดังนั้นฉันจึงขอโทษสำหรับสิ่งผิดปกติ ฉันพยายามเรียกใช้ Mongo DB บนเครื่อง Debian 8.5 เมื่อฉันติดตั้งแพคเกจ (สร้างไว้ล่วงหน้าจาก percona.com) ฉันสังเกตเห็นไฟล์ต่อไปนี้: /etc/init.d/mongod (1) /lib/systemd/system/mongod.service (2) เกี่ยวกับ /etc/init.d/mongod ฉันเข้าใจว่าสิ่งนี้เรียกว่า (ตราบใดที่มีการลงทะเบียนผ่านupdate-rc.d) ที่บูต / ในสถานะระบบอื่น ๆ (ไม่ต้องการรับข้อมูลทางเทคนิคเกี่ยวกับเรื่องนี้ฉันดูดซับข้อมูลจำนวนมากและสิ่งนี้ดูมีความสำคัญน้อยกว่า) นี่เป็นสิ่งที่ดีที่สุดสำหรับฉัน สคริปต์ทำการเริ่มต้นจำนวนมากและเปิด mongo daemon ในที่สุด มันดูเหมือนว่าจะมี“ทริกเกอร์” สำหรับการเริ่มต้น, หยุด, รีสตาร์ท ฯลฯ sudo service mongod <action>และเท่าที่ผมเข้าใจว่าฉันสามารถเรียกผู้ที่มี เกี่ยวกับ /lib/systemd/system/mongod.service ไฟล์นี้ดูเหมือนจะทำสิ่งเดียวกัน (เช่นเรียกใช้ mongo) แต่มีการกำหนดค่าน้อยกว่าเพียงหนึ่งบรรทัดในพารามิเตอร์ ExecStart: [Unit] Description=MongoDB (High-performance, schema-free document-oriented …

7
/etc/rc.d vs /etc/init.d
/etc/init.dไดเรกทอรีของอูบุนตูนั้นเทียบเท่ากับการใช้งานจริงหรือไม่กับสิ่งที่ฉันคิดว่าเป็นมาตรฐานที่มากขึ้น/etc/rc.d/(อย่างน้อยใน arch) มีเหตุผลใดที่ใช้ canonical init.d แทน rc.d สำหรับสคริปต์เริ่มต้นหรือไม่

2
กระบวนการ init สามารถเป็นเชลล์สคริปต์ใน Linux ได้หรือไม่
ฉันกำลังผ่านการสอนเกี่ยวกับการตั้งค่า initramfsที่กำหนดเองซึ่งระบุว่า: สิ่งเดียวที่ขาดหายไปคือ / init ไฟล์เรียกทำงานในรูทของ initramfs ที่ถูกเรียกใช้โดยเคอร์เนลเมื่อโหลดแล้ว เนื่องจาก sys-apps / busybox มีเชลล์ที่ใช้งานได้อย่างสมบูรณ์ซึ่งหมายความว่าคุณสามารถเขียนไบนารี / init ของคุณเป็นเชลล์สคริปต์แบบง่าย ๆ (แทนที่จะทำให้มันเป็นแอพพลิเคชั่นที่ซับซ้อนที่เขียนใน Assembler หรือ C ที่คุณต้องรวบรวม) และให้ตัวอย่างของ init เป็นเชลล์สคริปต์ที่ขึ้นต้นด้วย #!/bin/busybox sh จนถึงตอนนี้ฉันอยู่ภายใต้การแสดงผลที่ init เป็นกระบวนการหลักที่เปิดตัวและกระบวนการพื้นที่ผู้ใช้อื่น ๆ ทั้งหมดเป็นลูกของ init ในที่สุด อย่างไรก็ตามในตัวอย่างที่กำหนดกระบวนการแรกนั้นจริง ๆ แล้วbin/busybox/ shซึ่ง init นั้นจะเกิดขึ้นในภายหลัง นี่เป็นการรบกวนที่ถูกต้องหรือไม่? ตัวอย่างเช่นถ้าฉันมีล่ามที่มีอยู่ ณ ตอนนั้นฉันสามารถเขียน init เป็นสคริปต์ Python ได้หรือไม่?

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