ผลรวมของชื่อค่อนข้างมาก
ฉันจะเพิ่ม startup.sh และ shutdown.sh ของแอพเซิร์ฟเวอร์ของฉันไปยังลำดับการเริ่มต้นและปิดระบบของ Debian OS ได้อย่างไร
ผลรวมของชื่อค่อนข้างมาก
ฉันจะเพิ่ม startup.sh และ shutdown.sh ของแอพเซิร์ฟเวอร์ของฉันไปยังลำดับการเริ่มต้นและปิดระบบของ Debian OS ได้อย่างไร
คำตอบ:
ใน Debian, /etc/init.d/
บริการและแอปพลิเคบูตและปิดสคริปต์ควรจะวางลง
Debian มีสคริปต์ตัวอย่าง/etc/init.d/skeleton
ที่คุณสามารถปรับเปลี่ยนตามรสนิยมของคุณสำหรับแอปพลิเคชันเฉพาะของคุณ
เมื่ออยู่ในสถานที่โทร:
# update-rc.d YOURAPP defaults
หากต้องการให้ Debian เพิ่ม/etc/rc?.d/
symlink ให้คุณ
หากคุณต้องการเมนูหรือส่วนต่อประสานกราฟิกดูที่sysv-rc-conf
หรือksysv
แพ็คเกจ
คุณสามารถเรียกสคริปต์ของคุณได้จาก/etc/rc.localก่อนถึงบรรทัดที่ระบุว่าexit 0
สำหรับการปิดแอปของคุณผมจะแนะนำให้วางสคริปต์ใน/etc/rc0.d คุณต้องตั้งชื่อด้วยตัวพิมพ์ใหญ่Kจากนั้นตัวเลข 2 หลักซึ่งระบุลำดับการเรียกใช้สคริปต์เหล่านี้แล้วชื่อ มันจะถูกเรียกด้วยพารามิเตอร์ "หยุด" แต่คุณสามารถละเว้นนี้สำหรับสคริปต์หยุดง่าย
สำหรับการเริ่มต้นมีลักษณะที่นี้
สำหรับการปิดระบบให้สร้างลิงค์ / คัดลอกสคริปต์ของคุณไปยังหนึ่งในโฟลเดอร์ /etc/rcX.d โดยที่ X คือ runlevel ที่คุณต้องการให้รัน 0 คือระดับการปิดระบบสำหรับเดเบียนฉันเชื่อว่า
วิธีที่ง่ายที่สุดคือการแก้ไขสคริปต์ที่มีอยู่ทำงานในระบบของฉันใช้สำหรับเสียง :)
/etc/init.d/rc.local
, เพิ่ม sh ของคุณในตอนท้ายของไฟล์ก่อน: (มันจะดำเนินการได้ก่อนที่จะเข้าสู่ระบบ "หน้าจอ")/etc/init.d/halt
, เพิ่ม sh ของคุณที่จุดเริ่มต้นของไฟล์หลังจากความคิดเห็นเริ่มต้น (มันจะถูกดำเนินการก่อนคำสั่งปิดจริงที่เรียกว่าโดยไฟล์สคริปต์นี้/etc/init.d/reboot
ตั้งแต่ Debian Jessie init
โปรแกรมเก่าได้ถูกแทนที่ด้วยsystemd
!
ลองดูด้วยตัวคุณเอง เรียกใช้: ls -l /sbin/init
และดูสิ่งที่ชี้ไป วันนี้มันชี้ไปที่systemd
( /sbin/init -> /lib/systemd/systemd
) ซึ่งเป็นโปรแกรมเริ่มต้นใหม่และดีกว่า
ดังนั้นทางเลือกและคำตอบอื่น ๆ ที่นี่อยู่ในขณะนี้ล้าสมัย !!!
* ในขณะที่คุณยังคงสามารถติดตั้งสคริปต์แบบเดิมด้วยเครื่องมือ System-V แต่ก็ไม่ควรพูดโดยทั่วไป
man systemd.service
พูดว่า: *
หากมีการร้องขอบริการภายใต้ชื่อที่แน่นอน แต่ไม่พบไฟล์การกำหนดค่าหน่วย systemd จะค้นหาสคริปต์เริ่มต้น SysV ด้วยชื่อเดียวกัน ... และสร้างหน่วยบริการจากสคริปต์นั้นแบบไดนามิก สิ่งนี้มีประโยชน์สำหรับความเข้ากันได้กับ SysV โปรดทราบว่าความเข้ากันได้นี้ค่อนข้างครอบคลุม แต่ไม่ถึง 100%
ง่ายกว่าที่คุณคิด (-:
ต่อไปนี้เป็นวิธีการใหม่และเป็นที่นิยมในการติดตั้งโปรแกรมบูตเครื่องหรือปิดเครื่อง
กับsystemd
ครั้งแรกที่คุณต้องการที่จะสร้างไฟล์หน่วย ไฟล์หน่วยส่วนใหญ่เป็นการประกาศไม่ใช่รหัส
จากนั้นคุณจะใช้systemctl
คำสั่งเพื่อเปิดใช้งานหรือเริ่มหน่วยนั้น
systemd
ทำงานมากสำหรับคุณทำให้ง่ายเช่นมีโปรแกรมที่สำคัญเริ่มต้นใหม่โดยอัตโนมัติหากมันล้มเหลวหรือถูกฆ่าตาย นอกจากนี้มันจะปิดโปรแกรมของคุณเมื่อใดที่ควรจะเป็นค่าเริ่มต้นโดยไม่มีการทำงานพิเศษในส่วนของคุณ
เริ่มเรียนรู้เกี่ยวกับsystemd
ที่นี่:
จาก Debianและอื่น ๆและฯลฯ และฯลฯ
หน้าคนที่จะเริ่มต้นด้วย:
man systemd.unit
- เกี่ยวกับไฟล์หน่วยโดยทั่วไป
man systemd.service
- เกี่ยวกับไฟล์หน่วยบริการเช่น daemons และโปรแกรมที่รันครั้งเดียว
man systemctl
- ส่วนต่อประสานผู้ใช้บรรทัดคำสั่ง
man journalctl
- ดูบันทึกการทำงานของ systemd
man systemd
- เกี่ยวกับโปรแกรม init เอง
นอกจากนี้ยังมีไฟล์ประเภทอื่น ๆ อีกมากมายเช่น
man systemd.target
- สำหรับกลุ่มและเป้าหมายที่ซิงค์ทั่วไป
เมื่อคุณสรุปข้อมูลเบื้องต้นด้านบนแล้วขุดด้วยman -k systemd
เพื่อค้นหาหน้าคนอื่นที่เกี่ยวข้อง
ไม่ว่าคุณจะทำอะไรบน Debian อย่าใช้สิ่งเหล่านี้ :
update-rc.d
- ติดตั้งและลบลิงค์สคริปต์เริ่มต้น System-V สไตล์sysv-rc-conf
- การกำหนดค่าระดับ Run สำหรับ SysV เช่นลิงค์สคริปต์ initrunlevel
- พิมพ์ระดับ run Svel ก่อนหน้าและปัจจุบันBUM
- B oot U p M anager - โปรแกรมแก้ไข runlevel แบบกราฟิกsystemadm
- ส่วนหน้าแบบกราฟิกสำหรับ systemd systemd และผู้จัดการบริการไฟล์หน่วยนี้เริ่มทำงาน NoIP.com daemon เมื่อฉันบูตเครื่องและปิดเครื่องเมื่อฉันปิดระบบ
ภูตนี้จากเวลาที่ส่งที่อยู่ IP ปัจจุบันของฉันเพื่ออัปเดตของฉัน DDNS ( DแบบไดนามิกDNS ( D omain N AME S erver)) ของผู้ให้บริการฐานข้อมูลจึงทำให้ชื่อโดเมนของฉันชี้ที่คอมพิวเตอร์ของฉันทุกที่ที่เดินทางไป
ไฟล์หน่วยนี้อยู่ในระบบของฉันในไฟล์การตั้งค่านี้: /etc/systemd/system/noip2.service
นี่คือสิ่งที่อยู่ในไฟล์หน่วย:
# Comments can only go at the beginning of the line!
[Unit]
Description=Start the NoIP IP update daemon. This runs every 30 minutes and reports our current IP to NoIP.com to update Love2d.ddns.net.
Documentation=https://no-ip.com/
Documentation=file:///nobak/Installers/NoIP/noip-2.1.9-1/README.FIRST
[Service]
# 'forking' because process returns after starting daemon (traditional unix daemon).
Type=forking
# This program runs and returns, leaving the running daemon
ExecStart=/usr/local/bin/noip2
# Be in no hurry to start this. Max nice is +19.
Nice=15
# If it dies for any reason, then restart it
Restart=always
[Install]
# Installs a hook to use this unit file when the system boots or shuts down
WantedBy=multi-user.target
เรียกใช้ไฟล์หน่วยด้วยตนเอง (เช่นสำหรับการทดสอบ):
$ sudo systemctl start noip2
ด้วย $ sudo systemctl restart noip2
กับ $ sudo systemctl stop noip2
กับ กำหนดค่าระบบให้เรียกใช้ไฟล์หน่วยโดยอัตโนมัติเมื่อเริ่มต้นหรือปิดระบบ:
$ sudo systemctl enable noip2
กับ $ sudo systemctl disable noip2
กับดูบันทึก
$ sudo journalctl -u noip2