GNU/Linux >> Belajar Linux >  >> Linux

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

Saya berasumsi Anda memiliki Raspberry menggunakan raspian, yang, setahu 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 saat ini berjalan dengan perintah:

  sudo service --status-all

Anda akan mendapatkan daftar seperti ini:

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

+ menunjukkan layanan berjalan, -'s layanan tidak berjalan, ?'s layanan yang tidak mengizinkan status sebagai perintah yang mungkin:sebagian besar adalah perintah yang tidak perlu dijalankan sepanjang waktu, hanya sesekali.

Untuk kembali ke pertanyaan Anda, Anda perlu memahami runlevel di Linux. Runlevel (0-6 + S) mengidentifikasi layanan mana yang boleh/harus dijalankan. Urutan boot berkembang 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 akhir standar distro 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 (sekali 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, Anda mulai dari 2, dan maju hingga 5. Untuk menemukan layanan yang dimulai dalam perkembangan ini, berikan 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/ , di mana file yang mengidentifikasi berbagai layanan disimpan. Baris yang dimaksud mengidentifikasi runlevel di mana setiap layanan akan dimulai. Jika layanan dimulai pada runlevel N, saat sistem berlanjut ke N+1, layanan tidak perlu dimulai lagi, tetapi jika ditemukan tidak berjalan, layanan dimulai.

Ini memberi Anda gagasan yang tepat tentang berbagai tahapan di mana layanan dimulai. Namun dalam runlevel yang sama, baris Required-Start dan Should-Start menentukan dependensi hard dan soft untuk layanan yang dimaksud, i.e. layanan yang harus jalankan dan harus dijalankan sebelum layanan diperiksa. Tanpa layanan Required-Start, layanan yang dimaksud akan gagal, tanpa layanan Should-Start tidak akan ada kegagalan umum, mungkin hanya kurangnya beberapa fitur yang berguna. Hal yang sama terjadi pada stop dengan Required-Stop dan Should-Stop.

SYSTEMD :

Perintah untuk mencantumkan semua layanan adalah

systemctl list-unit-files

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

 systemctl list-unit-files | grep enabled 

Saya lebih suka perintah ini daripada systemctl list-units :perbedaannya adalah yang ini hanya akan menampilkan layanan yang dimiliki OS Anda di memori =menurut OS yang dibutuhkannya), sementara systemctl list-unit-files akan menampilkan semua layanan terinstal, termasuk yang bertopeng (yaitu yang seharusnya tidak pernah dimulai, bahkan secara manual), dan yang tidak akan dimulai aktifkan, yang disebut statis . Dengan kata lain, perintah yang saya sarankan lebih komprehensif daripada daftar yang hanya aktif jasa.

NB :systemd sangat berbeda dengan sistem init sebelumnya. Khususnya, ia tidak memiliki runlevel , tetapi menargetkan . runlevel masih ada karena alasan kompatibilitas, dan dapat dilihat sebagai target khusus dengan mencantumkan 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 DigitalOcean yang luar biasa.


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

Untuk memasang alat

sudo apt-get install rcconf

Dan sangat mudah untuk menggunakannya dengan UI teks

sudo rcconf

sudo nano /etc/rc.local

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


Linux
  1. Bagaimana Menjalankan Perintah Yang Akan Bertahan dari Penutupan Terminal?

  2. Cara menjalankan skrip shell saat startup

  3. Bagaimana menjalankan sbt sebagai daemon?

  1. Bagaimana Memberitahu Cron Untuk Menjalankan Perintah Setiap Hari (Ganjil/Genap)?

  2. CentOS / RHEL :Bagaimana menemukan pengguna mana yang menjalankan perintah tertentu?

  3. Cara Menjalankan layanan DNS dan FTP di chroot Jail

  1. Bagaimana saya bisa tahu di Linux proses mana yang mengirim sinyal ke proses saya

  2. Bagaimana cara memberi tahu Dolphin file mana yang disembunyikan?

  3. Bagaimana cara mengetahui batas pengguna mana yang saya hadapi?