Bagaimana cara mengetahui layanan mana yang berjalan saat startup di Raspberry Pi? (raspbian)

17

Saya memiliki beberapa layanan yang berjalan saat boot tetapi saya benar-benar lupa bagaimana saya mengaturnya! Jika saya ingin mengubah aktivitas mereka, bagaimana mungkin saya melakukannya? Sebagai contoh, mungkin saya ingin menonaktifkan layanan dari mulai saat boot atau mungkin saya ingin memulainya dengan menggunakan metode yang berbeda.

Secara khusus, saya mendapatkan layanan openvpn yang berjalan dengan sukses saat boot tetapi beberapa tutorial mengatakan saya harus mengikat layanan program filesharing ke vpn itu sendiri sehingga jika vpn turun maka begitu juga layanan filesharing. Tapi saya pikir mungkin autorunning dari vpn saya menyulitkan dan saya harus menonaktifkannya atau memodifikasi cara peluncurannya. Tapi bagaimana cara mengeceknya?

pengguna1502186
sumber

Jawaban:

23

Saya berasumsi Anda memiliki Raspberry menggunakan raspian, yang, sejauh pengetahuan saya, belum pindah ke systemd . Dalam hal ini, jawabannya adalah sebagai berikut.

EDIT: untuk systemd (Jessie atau yang lebih baru), lihat di bagian bawah .

Pertama, Anda dapat menentukan sistem mana yang sedang berjalan dengan menggunakan perintah:

  sudo service --status-all

Anda akan mendapatkan daftar seperti ini:

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

The + 's menunjukkan layanan yang berjalan, yang para jasa tidak berjalan, ?' S layanan yang tidak memungkinkan statusnya sebagai perintah mungkin: mereka sebagian besar perintah yang tidak perlu menjalankan semua waktu, hanya kadang-kadang.

Untuk kembali ke pertanyaan Anda, Anda perlu memahami runlevel di Linux. Runlevels (0-6 + S) mengidentifikasi layanan mana yang harus / harus dijalankan. Urutan boot berjalan dari runlevel awal (ditentukan di / etc / inittab , di Raspberry saya

 # The default runlevel.
 id:2:initdefault:

baris ini mengidentifikasinya sebagai 2, dan kemudian berlanjut ke runlevel final distro standar Anda (dari 2 menjadi 5). Anda mengidentifikasi runlevel Anda saat ini melalui perintah

 # runlevel
 N 2

(dalam kasus saya, server tanpa kepala). Runlevel lainnya adalah (lagi dari é / etc / inittab *):

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

Pengguna tunggal (1) sering juga diidentifikasi sebagai S.

Dalam boot normal, maka Anda mulai dari 2, dan maju hingga 5. Untuk menemukan layanan yang dimulai pada perkembangan ini, buat perintah:

 # 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

Ini mencetak baris yang dimulai dengan Default-Start di semua file di /etc/init.d/ , yang merupakan tempat file yang mengidentifikasi berbagai layanan disimpan. Baris yang dimaksud mengidentifikasi runlevel tempat setiap layanan akan dimulai. Jika suatu layanan dimulai pada runlevel N, ketika sistem berkembang ke N +1, itu tidak perlu dimulai lagi, tetapi jika ternyata tidak berjalan, maka itu dimulai.

Ini memberi Anda gambaran yang tepat tentang berbagai tahap di mana layanan dimulai. Tetapi dalam runlevel yang sama, garis-garis Diperlukan-Mulai dan Harus-Mulai menentukan dependensi keras dan lunak untuk layanan yang dimaksud, yaitu layanan yang harus dijalankan dan harus berjalan sebelum layanan diperiksa. Tanpa layanan Start-Wajib, layanan yang dipermasalahkan akan gagal, tanpa layanan Start Wajib, tidak akan ada kegagalan umum, mungkin hanya karena kurangnya beberapa fitur yang bermanfaat. Hal yang sama terjadi pada saat berhenti dengan Harus-Berhenti dan Harus-Berhenti.

SYSTEMD :

Perintah untuk mendaftar semua layanan adalah

systemctl list-unit-files

yang akan memuntahkan banyak info. Untuk memilih semua layanan yang diaktifkan , yaitu yang dimulai saat boot, cukup ambil perintah di atas sebagai berikut:

 systemctl list-unit-files | grep enabled 

Saya lebih suka perintah ini untuk daftar-unit systemctl : perbedaannya adalah bahwa yang satu ini hanya akan menampilkan layanan yang dimiliki OS Anda dalam memori = OS menganggapnya perlu), sedangkan daftar-unit-file-file systemctl akan menampilkan semua layanan yang diinstal, termasuk yang bertopeng ( yaitu orang-orang yang seharusnya tidak pernah dimulai, bahkan tidak manual), dan orang-orang yang akan tidak mengaktifkan, yang disebut statis . Dengan kata lain, perintah yang saya sarankan lebih komprehensif daripada yang hanya mendaftar layanan aktif .

NB : systemd sangat berbeda dari sistem init sebelumnya. Secara khusus, ia tidak memiliki runlevel , tetapi target . runlevel masih ada karena alasan kompatibilitas, dan dapat dilihat sebagai target spesifik dengan mendaftar semua target yang tersedia melalui

systemctl list-unit-files --type=target

sementara Anda dapat melihat target Anda saat ini melalui

$ systemctl get-default
  graphical.target

Untuk lebih lanjut tentang ini, Anda dapat membaca halaman pengantar yang sangat baik dari DigitalOcean .

MariusMatutiae
sumber
Jessie raspbian menggunakan systemd, tetapi jawaban ini tampaknya masih berfungsi.
ZX9
1
@ ZX9 Terima kasih telah meminta perhatian saya pada posting lama ini, saya telah menambahkan edit untuk systemd .
MariusMatutiae
8

Untuk manajemen layanan startup sederhana di Raspberry Pi, saya merekomendasikan alat rcconf. Ini memungkinkan Anda untuk dengan mudah menghidupkan / mematikan layanan di /etc/init.d/. Anda juga dapat melihat apakah mereka diaktifkan dan akan berjalan saat startup.

Untuk menginstal alat

sudo apt-get install rcconf

Dan sangat mudah digunakan dengan teks UI

sudo rcconf
jjurm
sumber
Ini tidak menjawab OP, yang (dan saya kutip): Bagaimana cara mengetahui layanan mana yang berjalan saat startup di Raspberry Pi? (raspbian) .
MariusMatutiae
@MariusMatutiae Tidak, karena rcconfmemberi tahu Anda apakah layanan diaktifkan atau tidak. Saya mengedit jawaban untuk secara eksplisit mengatakan bahwa alat ini menunjukkan informasi jenis ini.
jjurm
3
sudo nano /etc/rc.local

Di sinilah Anda memasukkan file batch atau perintah untuk dijalankan saat boot. Saya juga menjalankan Openvpn saat boot :)

Hexark
sumber