จะบอกได้อย่างไรว่าบริการใดบ้างที่เริ่มทำงานใน Raspberry Pi (raspbian)


17

ฉันมีบริการบางอย่างที่เปิดใช้งานการบูต แต่ฉันลืมวิธีการตั้งค่าเหล่านั้นจริง ๆ ! หากฉันต้องการเปลี่ยนกิจกรรมของพวกเขาฉันควรทำอย่างไร ตัวอย่างเช่นฉันอาจต้องการปิดการใช้งานบริการตั้งแต่เริ่มบูตหรืออาจต้องการเริ่มใช้วิธีอื่น

โดยเฉพาะฉันได้รับบริการ openvpn ที่ทำงานได้สำเร็จในการบูต แต่บทเรียนบางอย่างบอกว่าฉันควรผูกบริการของโปรแกรมแชร์ไฟล์กับ vpn ด้วยตัวเองเพื่อที่ว่าถ้า vpn ลดลงบริการของ filesharing ก็เช่นกัน แต่ฉันคิดว่าบางทีการทำงานอัตโนมัติของ vpn ของฉันกำลังซับซ้อนและฉันควรปิดหรือแก้ไขวิธีที่เปิดตัว แต่จะตรวจสอบอย่างไร

คำตอบ:


23

ฉันสมมติว่าคุณมีราสเบอร์รี่ใช้ raspian ซึ่งที่ดีที่สุดของความรู้ของฉันยังไม่ได้ย้ายไปsystemd ในกรณีนี้คำตอบมีดังนี้

แก้ไข: สำหรับ systemd (เจสซีหรือหลังจากนั้น) โปรดดูที่ด้านล่าง

ขั้นแรกคุณสามารถกำหนดได้ว่าระบบใดกำลังทำงานอยู่โดยใช้คำสั่ง:

  sudo service --status-all

คุณจะได้รับรายชื่อดังนี้:

  [ + ]  triggerhappy
  [ + ]  udev
  [ ? ]  udev-mtab
  [ ? ]  umountfs
  [ ? ]  umountnfs.sh
  [ ? ]  umountroot
  [ - ]  urandom
  [ + ]  vsftpd
  [ + ]  weewx
  [ - ]  x11-common

+ 'sบ่งชี้ถึงการบริการที่ทำงานที่-'sบริการไม่ได้ทำงานที่' sบริการที่ไม่อนุญาตให้สถานะเป็นคำสั่งที่เป็นไปได้ที่พวกเขาส่วนใหญ่จะเป็นคำสั่งที่ไม่จำเป็นต้องทำงานตลอดเวลาเพียงแค่ครั้งคราว

หากต้องการกลับไปที่คำถามของคุณคุณต้องเข้าใจrunlevel s ใน Linux Runlevels (0-6 + S) ระบุว่าบริการใดบ้างที่อาจ / ต้องใช้งาน ลำดับการบู๊ตดำเนินไปจาก runlevel เริ่มต้น (ระบุใน/ etc / inittabใน Raspberry ของฉัน

 # The default runlevel.
 id:2:initdefault:

บรรทัดนี้ระบุว่าเป็น 2 จากนั้นไปยังระดับสุดท้ายของ distro มาตรฐานของคุณ (ตั้งแต่ 2 ถึง 5) คุณสามารถระบุระดับ runlevel ปัจจุบันของคุณโดยใช้คำสั่ง

 # runlevel
 N 2

(ในกรณีของฉันเซิร์ฟเวอร์หัวขาด) runlevels อื่นคือ (อีกครั้งจากé / etc / inittab *):

 # Runlevel 0 is halt.
 # Runlevel 1 is single-user.
 # Runlevels 2-5 are multi-user.
 # Runlevel 6 is reboot.

ผู้ใช้คนเดียว (1) มักจะถูกระบุว่าเป็น S

ในการบูตปกติคุณจึงเริ่มต้นที่ 2 และดำเนินไปจนถึง 5 เพื่อค้นหาบริการที่เริ่มต้นในความก้าวหน้านี้ให้ออกคำสั่ง:

 # grep -nrI Default-Start /etc/init.d
 umountroot:7:# Default-Start:
 checkroot.sh:8:# Default-Start:     S
 kbd:6:# Default-Start:     S
 isc-dhcp-server:11:# Default-Start:     2 3 4 5
 mountkernfs.sh:7:# Default-Start:     S
 hostname.sh:7:# Default-Start:     S
 mountnfs.sh:7:# Default-Start:     S
 halt:6:# Default-Start:
 dphys-swapfile:20:# Default-Start:     2 3 4 5
 bootlogs:7:# Default-Start:     1 2 3 4 5
 rc.local:6:# Default-Start:     2 3 4 5
 hostapd:9:# Default-Start:      2 3 4 5
 keyboard-setup:8:# Default-Start:     S
 lightdm:7:# Default-Start:     2 3 4 5
 procps:11:# Default-Start:     S
 mysql:9:# Default-Start:     2 3 4 5
 single:6:# Default-Start:     1
 vsftpd:7:# Default-Start:       2 3 4 5
 samba:7:# Default-Start:     2 3 4 5
 mountall.sh:6:# Default-Start:     S
 weewx:20:# Default-Start:     2 3 4 5
 umountnfs.sh:7:# Default-Start:
 triggerhappy:6:# Default-Start:     2 3 4 5
 ifplugd:24:# Default-Start:     2 3 4 5
 alsa-utils:9:# Default-Start:     S
 bootmisc.sh:7:# Default-Start:     S
 sendsigs:6:# Default-Start:
 console-setup:7:# Default-Start:     S
 nfs-common:7:# Default-Start:     2 3 4 5 S
 checkroot-bootclean.sh:6:# Default-Start:     S
 rsyslog:7:# Default-Start:     2 3 4 5
 x11-common:7:# Default-Start:     S
 mountdevsubfs.sh:7:# Default-Start:     S
 cron:10:# Default-Start:     2 3 4 5
 mountnfs-bootclean.sh:6:# Default-Start:     S
 mountall-bootclean.sh:6:# Default-Start:     S
 screen-cleanup:11:# Default-Start:     S
 udev:6:# Default-Start:     S
 ssh:7:# Default-Start:  2 3 4 5
 haveged:8:# Default-Start:     2 3 4 5
 hwclock.sh:26:# Default-Start:     S
 plymouth:9:# Default-Start:     2 3 4 5
 motd:7:# Default-Start:     1 2 3 4 5
 killprocs:6:# Default-Start:     1
 networking:6:# Default-Start:     S
 fake-hwclock:9:# Default-Start:     S
 udev-mtab:6:# Default-Start:     S
 apache2:6:# Default-Start:     2 3 4 5
 reboot:6:# Default-Start:
 umountfs:6:# Default-Start:
 plymouth-log:9:# Default-Start: S
 openvpn:11:# Default-Start:     2 3 4 5
 kmod:8:# Default-Start:     S
 ntp:7:# Default-Start:   2 3 4 5
 rpcbind:9:# Default-Start:     S 2 3 4 5
 urandom:6:# Default-Start:     S
 rmnologin:6:# Default-Start:     2 3 4 5
 checkfs.sh:7:# Default-Start:     S
 sudo:8:# Default-Start:     2 3 4 5
 mtab.sh:6:# Default-Start:     S
 dbus:6:# Default-Start:     2 3 4 5
 rsync:8:# Default-Start:     2 3 4 5

สิ่งนี้จะพิมพ์บรรทัดที่ขึ้นต้นด้วยDefault-Startในไฟล์ทั้งหมดใน/etc/init.d/ซึ่งเป็นที่เก็บไฟล์ที่ระบุบริการต่างๆ บรรทัดที่มีปัญหาระบุถึง runlevel ที่จะเริ่มให้บริการแต่ละบริการ หากเซอร์วิสถูกสตาร์ทที่ runlevel N เมื่อระบบดำเนินการไปที่ N + 1 ก็ไม่จำเป็นต้องเริ่มต้นใหม่อีกครั้ง แต่หากพบว่าไม่ได้รันอยู่ก็จะเริ่มทำงาน

สิ่งนี้จะช่วยให้คุณมีความคิดที่ชัดเจนเกี่ยวกับขั้นตอนต่างๆที่บริการเริ่มต้น แต่ภายใน runlevel เดียวกันบรรทัดที่ต้องการ - เริ่มและควรเริ่มกำหนดการอ้างอิงที่ยากและนุ่มนวลสำหรับบริการที่เป็นปัญหาคือบริการที่ต้องรันและควรรันก่อนที่จะตรวจสอบบริการ หากไม่มีบริการที่จำเป็นต้องเริ่มบริการที่เป็นปัญหาจะล้มเหลวหากไม่มีบริการที่ควรเริ่มแทนจะไม่มีความล้มเหลวทั่วไปอาจเป็นเพราะขาดคุณสมบัติที่มีประโยชน์บางอย่าง สิ่งเดียวกันนี้เกิดขึ้นเมื่อหยุดด้วย Required-Stop และ Should-Stop

SYSTEMD :

คำสั่งเพื่อแสดงรายการบริการทั้งหมดคือ

systemctl list-unit-files

ซึ่งจะคายข้อมูลมาก ในการเลือกบริการทั้งหมดที่เปิดใช้งาน , คือผู้ที่จะเริ่มต้นที่บูตเพียง grep คำสั่งดังกล่าวดังต่อไปนี้:

 systemctl list-unit-files | grep enabled 

ฉันชอบคำสั่งนี้เพื่อsystemctl list-units : ความแตกต่างคืออันนี้จะแสดงเฉพาะบริการที่ระบบปฏิบัติการของคุณมีอยู่ในหน่วยความจำ = ระบบปฏิบัติการคิดว่ามันต้องการ) ในขณะที่systemctl list-unit-filesจะแสดงบริการที่ติดตั้งทั้งหมดสวมหน้ากาก ( คือผู้ที่ควรไม่เคยที่จะเริ่มต้นไม่ได้ด้วยตนเอง) และผู้ที่จะไม่ได้เปิดใช้งานซึ่งเรียกว่าแบบคงที่ ในคำอื่น ๆ คำสั่งที่ผมแนะนำคือที่ครอบคลุมมากกว่าหนึ่งรายการเท่านั้นที่ใช้งานบริการ

หมายเหตุ : systemd แตกต่างจากระบบเริ่มต้นก่อนหน้านี้มาก โดยเฉพาะอย่างยิ่งมันไม่ได้มีrunlevelsแต่เป้าหมาย runlevelsยังคงมีอยู่สำหรับเหตุผลความเข้ากันได้และสามารถดูเป็นเป้าหมายที่เฉพาะเจาะจงโดยการแสดงรายการเป้าหมายที่มีอยู่ทั้งหมดผ่าน

systemctl list-unit-files --type=target

ในขณะที่คุณสามารถดูเป้าหมายปัจจุบันของคุณโดยการ

$ systemctl get-default
  graphical.target

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้คุณอาจจะอ่านDigitalOcean's หน้าแนะนำที่ดีเยี่ยม


Raspbian Jessie ใช้systemdแต่คำตอบนี้ยังคงใช้ได้
ZX9

1
@ ZX9 ขอบคุณสำหรับการเรียกร้องความสนใจของฉันที่จะโพสต์เก่านี้ผมได้เพิ่มแก้ไขสำหรับsystemd
MariusMatutiae

8

สำหรับการจัดการบริการเริ่มต้นที่ง่ายในราสเบอร์รี่ Pi rcconfผมขอแนะนำเครื่องมือ ช่วยให้คุณสามารถเปิด / ปิดบริการ/etc/init.d/ได้ง่าย นอกจากนี้คุณยังสามารถดูว่าพวกเขาเปิดใช้งานและจะทำงานเมื่อเริ่มต้น

เพื่อติดตั้งเครื่องมือ

sudo apt-get install rcconf

และใช้งานง่ายมากกับ text UI

sudo rcconf

นี่ไม่ตอบ OP ซึ่งเป็น (และฉันพูด): วิธีการบอกบริการที่ทำงานเมื่อเริ่มต้นใน Raspberry Pi? (raspbian)
MariusMatutiae

@MariusMatutiae มันทำตั้งแต่แจ้งrcconfให้คุณทราบว่ามีการเปิดใช้บริการหรือไม่ ฉันแก้ไขคำตอบเพื่อบอกอย่างชัดเจนว่าเครื่องมือแสดงข้อมูลประเภทนี้โดยเฉพาะ
jjurm

3
sudo nano /etc/rc.local

นี่คือที่ที่คุณใส่แบตช์ไฟล์หรือคำสั่งเพื่อเรียกใช้ในการบูต ฉันใช้ Openvpn อัตโนมัติตอนบูตด้วย :)

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