Bagaimana cara mengaktifkan atau menonaktifkan layanan?

Saya membaca tentang cara mengaktifkan dan menonaktifkan layanan di Ubuntu dan tampaknya ada berbagai kemungkinan untuk mengelolanya.

Metode pertama yang saya temukan adalah update-rc.d untuk menambahkan layanan baru ke startup, yang bertujuan pada /etc/init.d folder dan isinya.

Satu lagi yang saya temukan adalah untuk mengedit .conf file dalam /etc/init folder.

Apa cara yang disarankan untuk mengaktifkan / menonaktifkan / menambahkan layanan dan mengapa?

Bisakah anda memberikan contoh langkah demi langkah antipeluru singkat tentang cara menambahkan layanan di Ubuntu dan mengaktifkan dan menonaktifkannya?

Ada layanan yang dapat diaktifkan / dinonaktifkan menggunakan GUI (seperti startup aplikasi) atau terminal.

Untuk Terminal Anda memiliki beberapa opsi. Pertama, buka terminal (ketik "terminal" di dasbor, misalnya, dan buka). Kemudian:

Mengaktifkan/menonaktifkan layanan sementara

Untuk menghentikan dan memulai layanan sementara (Tidak mengaktifkan / menonaktifkan mereka untuk sepatu masa depan), Anda dapat mengetik service SERVICE_NAME [action]. Misalnya:

  • sudo service apache2 stop: Akan Berhenti layanan Apache sampai Reboot atau sampai anda memulainya lagi.
  • sudo service apache2 start: Akan Mulai layanan Apache dengan asumsi itu dihentikan sebelumnya.
  • service apache2 status: Akan memberitahu anda STATUS layanan, Jika baik diaktifkan / berjalan dari cacat / tidak berjalan.
  • sudo service apache2 restart: Akan RESTART layanan. Hal ini paling sering digunakan ketika Anda telah berubah, file konfigurasi. Dalam hal ini, jika Anda mengubah konfigurasi PHP atau konfigurasi Apache. Restart akan menyelamatkan Anda dari keharusan berhenti / mulai dengan 2 baris perintah
  • service apache2: Dalam hal ini, karena Anda tidak menyebutkan tindakan yang akan dijalankan untuk layanan, ini akan menunjukkan kepada anda semua opsi yang tersedia untuk layanan tertentu. Aspek ini bervariasi tergantung pada layanan, misalnya, dengan MySQL hanya akan menyebutkan bahwa ia kehilangan parameter. Untuk layanan lain seperti layanan jaringan itu akan menyebutkan daftar kecil dari semua pilihan yang tersedia.

Systemd

Dimulai dengan Ubuntu 15.04, Upstart akan ditinggalkan demi Systemd. Dengan Systemd untuk mengelola layanan kita dapat melakukan hal berikut (melalui systemctl action SERVICE pola):

  • sudo systemctl start SERVICE: Gunakan untuk memulai layanan. Tidak bertahan setelah reboot
  • sudo systemctl stop SERVICE: Menggunakannya untuk menghentikan layanan. Tidak bertahan setelah reboot
  • sudo systemctl restart SERVICE: Gunakan untuk me-restart layanan
  • sudo systemctl reload SERVICE: Jika layanan mendukungnya, itu akan memuat ulang file konfigurasi yang terkait dengannya tanpa mengganggu proses apa pun yang menggunakan layanan.
  • systemctl status SERVICE: Menunjukkan status layanan. Memberitahu Apakah layanan sedang berjalan.
  • sudo systemctl enable SERVICE: Ternyata layanan pada, pada reboot berikutnya atau pada acara start berikutnya. Ini berlanjut setelah reboot.
  • sudo systemctl disable SERVICE: Ternyata layanan off pada reboot berikutnya atau pada acara berhenti berikutnya. Ini berlanjut setelah reboot.
  • systemctl is-enabled SERVICE: Periksa apakah layanan saat ini dikonfigurasi untuk memulai atau tidak pada reboot berikutnya.
  • systemctl is-active SERVICE: Periksa apakah layanan sedang aktif.
  • systemctl show SERVICE: Tampilkan semua informasi tentang layanan.
  • sudo systemctl mask SERVICE: Sepenuhnya menonaktifkan layanan dengan menghubungkan ke /dev/null; Anda tidak dapat memulai layanan secara manual atau mengaktifkan layanan.
  • sudo systemctl unmask SERVICE: Menghapus tautan ke /dev/null dan mengembalikan kemampuan untuk mengaktifkan dan atau memulai layanan secara manual.

Upstart (Ditinggalkan Sejak 15.04)

Jika kita ingin menggunakan cara Upstart resmi (perhatikan bahwa, untuk saat ini, tidak semua layanan telah dikonversi menjadi Upstart), kita dapat menggunakan perintah berikut:

status SERVICE - Ini akan memberitahu kita jika layanan dikonversi berjalan atau tidak. Perhatikan bahwa ini tidak digunakan lagi untuk mendukung start, stop, status & restart. Ini juga akan memberi tahu kami jika Layanan belum dikonversi menjadi upstart:

Layanan yang dikonversi biasanya akan menampilkan status saat ini (mulai, berjalan, berhenti...) dan ID proses. Layanan yang tidak dikonversi akan memberikan kesalahan tentang pekerjaan tidak dikenal.

Beberapa cara pintas hanya dapat bekerja dengan service perintah di atas tetapi tidak dengan perintah di bawah kecuali mereka 100% dikonversi ke layanan pemula:

  • sudo start mysql: Mulai
  • sudo stop mysql: Berhenti
  • sudo restart mysql: Mulai ulang
  • sudo status smbd: Status

Mengaktifkan / menonaktifkan layanan

Untuk mengaktifkan layanan dari memulai atau menghentikan secara permanen, Anda perlu:

echo manual | sudo tee /etc/init/SERVICE.override

dimana Bait manual akan berhenti pemula dari otomatis memuat layanan pada boot berikutnya. Setiap layanan dengan .override akhir akan lebih diutamakan daripada file Layanan asli. Anda hanya akan dapat memulai layanan secara manual setelahnya. Jika Anda tidak ingin ini maka cukup menghapus .override.Misalnya:

echo manual | sudo tee /etc/init/mysql.override

Akan menempatkan layanan MySQL ke manual mode. Jika Anda tidak menginginkan ini, setelah itu Anda bisa melakukannya

sudo rm /etc/init/mysql.override

dan Reboot untuk layanan untuk memulai secara otomatis lagi. Tentu saja untuk mengaktifkan Layanan, cara yang paling umum adalah dengan menginstalnya. Jika Anda menginstal Apache, Nginx, MySQL atau lainnya, mereka secara otomatis mulai setelah menyelesaikan instalasi dan akan mulai setiap kali komputer melakukan booting. Menonaktifkan, seperti yang disebutkan di atas, akan menggunakan layanan manual.

Saat ini sebenarnya ada tiga cara berbeda untuk memulai perangkat lunak sebagai layanan di Ubuntu, SysV, Upstart dan systemd. Layanan didefinisikan di sini sebagai program yang dijalankan oleh sistem di latar belakang, sebagai lawan dari yang dimulai dan dijalankan langsung oleh pengguna.

SysV

Cara tradisional untuk memulai layanan di Linux adalah dengan menempatkan skrip di /etc/init.d, dan kemudian gunakan update-rc.d perintah (atau di distro berbasis RedHat, chkconfig) untuk mengaktifkan atau menonaktifkannya.

Perintah ini menggunakan beberapa logika agak rumit untuk membuat symlink di /etc/rc#.d, yang mengontrol urutan layanan awal. Jika Anda menjalankan ls /etc/rc2.d Anda dapat melihat urutan bahwa layanan akan dibunuh dengan nama file seperti K##xxxx dan dimulai dengan nama file S##xxxx. The ## di S##xxxx berarti "pesanan awal" untuk layanan xxxx. Sebaliknya ## di K##xxxx berarti perintah membunuh untuk layanan xxxx.

Salah satu masalah utama dengan SysV apakah itu ketika mem-boot sistem, semuanya harus dilakukan secara serial, satu demi satu, membuat waktu boot sistem sangat lambat. Upaya dilakukan untuk memparalelkan ini, tetapi mereka serampangan dan sulit untuk memanfaatkan sepenuhnya. Ini adalah alasan utama bahwa Upstart diciptakan.

Upstart

Upstart menggunakan file definisi pekerjaan di /etc/init untuk menentukan pada apa peristiwa layanan harus dimulai. Jadi, saat sistem sedang boot, upstart memproses berbagai acara, dan kemudian dapat memulai beberapa layanan secara paralel. Ini memungkinkan mereka untuk sepenuhnya memanfaatkan sumber daya sistem, misalnya, dengan memulai layanan terikat disk Sementara Layanan terikat CPU lainnya berjalan, atau saat jaringan menunggu alamat IP dinamis untuk ditetapkan.

Anda dapat melihat semua file pekerjaan pemula dengan menjalankan ls /etc/init/*.conf

Biarkan saya berhenti di sini dan mengatakan bahwa jika Anda tidak tahu apa itu layanan, atau apa fungsinya, jangan nonaktifkan!

Tidak semua layanan telah dikonversi ke pemula. Saat bekerja di tim server di Canonical selama beberapa bulan terakhir, saya telah mengerjakan sejumlah file pekerjaan yang dikonversi, dan bagian terbaiknya adalah memungkinkan seseorang untuk menyingkirkan semua skrip "ajaib" dan hanya memasukkan beberapa perintah di sana-sini untuk menentukan dengan tepat bagaimana memulai layanan, dan tidak lebih. Tapi untuk saat ini, hanya segelintir layanan jaringan tradisional, seperti squid dan samba, telah dikonversi.

Apakah layanan berbasis pemula?

Untuk mengetahui apakah layanan berbasis pemula, Anda dapat menjalankan perintah status:

status servicename

Jika itu adalah upstart Ayub, ia akan menunjukkan ini:

$ status statdstatd start/running, process 942

Tetapi jika tidak, Anda akan melihat sesuatu yang lebih seperti ini:

$ status apache2status: Unknown job: apache2

Dalam hal ini, apache2 belum dikonversi ke upstart. Jadi, untuk menonaktifkan apache2 Anda hanya menjalankan

sudo update-rc.d apache2 disablesudo service apache2 stop

Nonaktifkan layanan (pekerjaan) di upstart

Definisi pekerjaan pemula tidak memiliki update-rc.d perintah. Untuk menonaktifkan pekerjaan, Anda perlu mengedit file pekerjaan secara langsung untuk menonaktifkannya. Ada dua cara untuk melakukan ini.

Jika Anda ingin tetap dapat memulainya secara manual, maka Anda perlu mengomentari start on kondisi. Katakanlah Anda ingin menginstal samba, tetapi tidak memilikinya dimulai secara otomatis. Berikut adalah file pekerjaan (di natty):

description "SMB/CIFS File Server"author      "Steve Langasek <steve.langasek@ubuntu.com>"start on local-filesystemsstop on runlevel [!2345]respawnpre-start script    RUN_MODE="daemons"    [ -r /etc/default/samba ] && . /etc/default/samba    [ "$RUN_MODE" = inetd ] && { stop; exit 0; }    install -o root -g root -m 755 -d /var/run/sambaend scriptexec smbd -F

Untuk menonaktifkan samba, Anda hanya dapat menempatkan # di depan "start on local-filesystems". Perhatikan bahwa meskipun tidak akan memulai kembali saat boot, Anda masih perlu menghentikannya kali ini dengan

sudo service smbd stop

Namun, jika Anda tidak pernah ingin samba untuk memulai, saya sarankan untuk benar-benar menghapus paket. Namun, jika Anda ingin menginstalnya, tetapi tidak dapat dimulai, Anda juga dapat melakukannya:

mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled

Nonaktifkan Layanan menggunakan Start / stop Bait (per 11.04)

Dimulai dengan versi upstart yang akan ada di 11.04, ada kata kunci baru yang menonaktifkan start on dan stop on Bait: manual. Jadi cara lain untuk menonaktifkan layanan pada 11.04 adalah dengan melakukan:

echo 'manual' | sudo tee /etc/init/mysql.override# command from root shellecho manual >> /etc/init/mysql.override

Anda dapat membuat override file untuk menonaktifkan layanan tanpa mengedit definisi pekerjaan sama sekali, dengan hanya menempatkan manual keyword di dalamnya.

sysv-rc-conf

Coba gunakan sysv-rc-conf

sudo apt-get install sysv-rc-conf

dan untuk mulai mengelola layanan, jalankan

sudo sysv-rc-conf

Yang akan memunculkan jendela interaktif seperti ini

Anda dapat lebih menavigasi melalui halaman menggunakan Ctrl+n untuk halaman berikutnya dan Ctrl+p untuk halaman sebelumnya. Anda dapat mengaktifkan dan menonaktifkan layanan dengan memilih SPACE pada runlevel yang diinginkan.

Pekerjaan-Admin

Alternatif lain adalah Pekerjaan-Admin dengan menginstal melalui

sudo apt-get install jobs-admin

Yang juga menyediakan GUI seperti ini

Untuk menampilkan lebih banyak pekerjaan, Anda harus mencentang Tampilkan Pekerjaan Yang Dilindungi dari menunya.

chkconfig

Dan pilihan ketiga adalah chkconfig,

sudo apt-get install chkconfig

Hal ini dapat digunakan melalui CLI chkconfig, menampilkan daftar pekerjaan hidup / mati.Juga kita dapat melihat layanan sistem menggunakan chkconfig –list

Layanan dapat diaktifkan menggunakan

chkconfig <service> on

Layanan dapat dimatikan menggunakan

chkconfig <service> off

Dan kita bahkan dapat menambahkan layanan kita sendiri, menggunakan skrip init yang tepat dengan judul yang tepat.

chkconfig --add <service>

memperbarui-rc.d

Dan opsi lain dapat dirujuk berikut update-rc.d , dijelaskan secara singkat di sini.

Perhatikan bahwa untuk Ubuntu Server 12.04, update-rc.d digunakan sebagai pengganti chkconfig.

Bagi kita yang menjalankan Ubuntu melalui ssh, saya pikir opsi terbaik adalah rcconf - program berbasis teks:

sudo apt-get install rcconfsudo rcconf

Arahkan dengan tab dan tombol panah, tekan spasi untuk mengaktifkan / menonaktifkan. Perubahan terus-menerus di restart.

Screenshot dipinjam dari blogpost ini, yang juga menunjukkan sysv-rc-conf - alat serupa yang juga memungkinkan Anda mengatur runlevel. (Bagi mereka yang kebetulan cukup peduli tentang runlevel untuk ingin mengubahnya :)

Sayangnya, rcconf tidak bekerja dengan upstart (layanan yang tercantum dalam /etc/init/*), hanya dengan mekanisme tradisional (ls -l /etc/init.d/* - yang bukan tautan simbolis).

Untungnya, banyak layanan yang relevan ketika ssh-ing ke server (Apache, Tomcat, mdadm, BOINC-client...) belum dipindahkan ke pemula.

Saya menemukan bahwa hingga bionik ada alat GUI ini, seperti gelandangan tapi kompatibel dengan pemula: Jobs-Admin

sudo apt-get install jobs-admin

Mengedit file konfigurasi pemula yang ada (seperti dijelaskan di atas) bukanlah ide yang bagus. Paket yang diperbarui dapat menyediakan konfigurasi yang diperbarui, dan Anda harus mengulangi perubahan Anda berulang kali.

Dengan melihat man 5 init seseorang akan menemukan solusi yang lebih tepat: menggunakan konfigurasi override. Contoh singkat: katakanlah kita memiliki layanan bernama "foobar", jadi akan ada file bernama /etc/init/foobar.conf dengan konfigurasi pemula. Sekarang Anda tidak ingin menghapus file itu, atau memodifikasinya - tetapi Anda tidak ingin layanan ini berjalan? Jadi menempatkan override file di sebelahnya: /etc/init/foobar.override, berisi (opsional header dengan deskripsi dan) sebagai gantinya start on / stop on baris Anda menempatkan baris dengan satu kata: manual. Dengan cara ini Anda memberitahu pemula pada dasarnya menggunakan foobar.conf, tetapi Timpa definisi startup untuk hanya memulai layanan itu ketika diberlakukan secara manual (melalui service foobar start dalam contoh kita).

Ada juga yang Manajer Boot-Up.

Untuk menginstal: sudo apt-get install bum

Info lebih lanjut: http://www.marzocca.net/linux/bum.html

Metode paling sederhana bagi saya karena saya hanya menggunakan CLI adalah update-rc.d.

Untuk mengaktifkan atau menonaktifkan auto-start saat reboot dll :

sudo update-rc.d <daemon|service> <enable|disable>

Contoh:

update-rc.d spamassassin enable

Untuk menghentikan atau memulai daemon atau memeriksa statusnya:

sudo service <daemon|service> <start|stop|restart|reload|force-reload|status>

Contoh:

sudo service spamassassin status  spamassassin.service - Perl-based spam filter using text analysis   Loaded: loaded (/lib/systemd/system/spamassassin.service; disabled; vendor preset: enabled)   Active: active (running) since Thu 2020-05-21 13:04:10 SAST; 4s ago  Process: 1928 ExecStart=/usr/sbin/spamd -d --pidfile=/var/run/spamd.pid $OPTIONS (code=exited, status=0/SUCCES Main PID: 1949 (spamd)    Tasks: 3 (limit: 2361)   CGroup: /system.slice/spamassassin.service           ├─1949 /usr/bin/perl -T -w /usr/sbin/spamd -d --pidfile=/var/run/spamd.pid --create-prefs --max-child           ├─1951 spamd child           └─1952 spamd child`  etc  etc

update-rc.d dapat melakukan sedikit lebih dari dasar yang ditunjukkan di atas:

usage: update-rc.d [-f] <basename> remove       update-rc.d [-f] <basename> defaults       update-rc.d [-f] <basename> defaults-disabled       update-rc.d <basename> disable|enable [S|2|3|4|5]        -f: force

Seperti biasa; anda van merujuk manpage.

Saya menggunakan Stacer:

Stacer adalah optimizer sistem open source dan aplikasi monitor yang membantu pengguna untuk mengelola seluruh sistem dengan aspek yang berbeda, yang semua dalam satu sistem utilitas.

Ini menunjukkan layanan dan proses juga. Sebuah sistem GUI toolbox lengkap.

Perhatikan bahwa jawaban untuk Ubuntu 14.04 masih hilang di sini.

@ MarcelloNuccio: dimulai dengan Ubuntu 15.04, Upstart telah ditinggalkan demi Systemd.

Untuk jaringan silakan lihat: How to restart the networking service? - Ask Ubuntu

[Ini] (Enabling/Disabling Services in Fedora 12 | RyuSlash's Blog) akan sangat membantu bagi mereka yang terjebak di Fedora 12 dan telah mendarat di sini. Dalam kasus linkrot ‘chkconfig’ adalah apa yang anda cari.

Program mulai otomatis dikonfigurasi dalam manifes 'mulai otomatis atau dalam'*.layanan ' file di beberapa lokasi, serta di init.d ‘atau ’ crontab’. Lihat: upstart - How to start application after login on CentOS? - Unix & Linux Stack Exchange