Saat aplikasi berjalan di latar belakang, itu disebut layanan. Ini penting untuk menjalankan sistem atau aplikasi perangkat lunak kami. Beberapa layanan umum yang akan Anda temukan di sebagian besar server adalah Apache, MySQL, NGINX, dll. Saat sistem boot, layanan ini dikonfigurasi untuk memulai secara otomatis.
Saya menggunakan Ubuntu untuk meng-host situs web saya. Saya juga menggunakan MySQL untuk menyimpan semua data situs web saya. Terkadang, saya melakukan pembaruan rutin dan penting untuk memulai kembali layanan ini. Dalam tutorial ini, kita akan mempelajari berbagai cara untuk memulai, menghentikan, dan memulai ulang layanan di Ubuntu.
Cara Berbeda untuk Memulai, Menghentikan, Memulai Ulang Layanan di Ubuntu
- perintah systemctl
- perintah layanan
- init skrip
Menggunakan systemctl untuk memulai, menghentikan, dan memulai ulang layanan Ubuntu
Ini adalah cara yang lebih disukai untuk mengelola layanan Ubuntu. Jika Anda tidak yakin dengan nama layanannya, Anda dapat menjalankan systemctl --all
perintah untuk membuat daftar semua layanan. Tapi, mungkin ada ratusan layanan yang berjalan, jadi lebih baik memfilter daftar menggunakan grep
perintah.
Mari kita coba mencari tahu nama layanan server HTTP MySQL dan Apache.
# systemctl --all | grep -i mysql mysql.service loaded active running MySQL Community Server # systemctl --all | grep -i apache apache2.service loaded active running The Apache HTTP Server #
Jadi, nama layanan MySQL adalah “mysql.service” dan nama layanan server HTTP Apache adalah “apache2.service”.
Mari pelajari cara mengelola layanan ini menggunakan perintah systemctl.
1. Hentikan layanan menggunakan systemctl
# systemctl stop mysql.service #
Perintah tidak memberikan output apa pun jika eksekusi berhasil.
2. Memeriksa Status Layanan menggunakan systemctl
Kami dapat memeriksa status layanan menggunakan perintah di bawah ini.
# systemctl status mysql.service ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: inactive (dead) since Sat 2020-05-02 17:39:22 UTC; 9s ago Main PID: 26948 (code=exited, status=0/SUCCESS)
3. Mulai layanan menggunakan systemctl
# systemctl start mysql.service # # systemctl status mysql.service ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-05-02 17:41:43 UTC; 3s ago Process: 30254 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid (code=exited, s Process: 30233 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 30256 (mysqld) Tasks: 27 (limit: 2318) CGroup: /system.slice/mysql.service └─30256 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
Perhatikan bahwa ketika kami menghentikan layanan, nilai "Aktif" tidak aktif (mati). Setelah memulai layanan, itu berubah menjadi aktif (berjalan).
4. Mulai ulang layanan menggunakan systemctl
# systemctl restart apache2.service # systemctl status apache2.service ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Sat 2020-05-02 17:55:09 UTC; 8s ago

Kiat :Tidak perlu menggunakan nama layanan lengkap dengan perintah systemctl. Misalnya, jika kita menjalankan “systemctl restart mysql” maka secara otomatis akan menambahkan “.service” padanya dan menjalankan perintah “systemctl restart mysql.service”.
Mengelola Layanan Ubuntu menggunakan Perintah layanan
Kami dapat membuat daftar semua layanan menggunakan service --status-all
memerintah. Jika perlu, gunakan perintah grep untuk menyaring layanan yang Anda cari.
# service --status-all | grep mysql [ + ] mysql #
Dalam perintah layanan, pertama-tama kita harus menentukan nama layanan dan kemudian perintah yang akan dijalankan.
Menghentikan Layanan:
# service mysql stop
Memulai Layanan:
# service mysql start
Memulai Ulang Layanan:
# service mysql restart
Memeriksa Status Layanan:
# service mysql status ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-05-02 18:19:34 UTC; 39s ago Process: 31768 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid (code=exited, s Process: 31746 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 31770 (mysqld) Tasks: 27 (limit: 2318) CGroup: /system.slice/mysql.service └─31770 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

Skrip init Ubuntu untuk Mengelola Layanan
Skrip init layanan terletak di /etc/init.d/
direktori. Kita dapat menggunakan skrip ini untuk mengelola layanan. Namun, tidak disarankan untuk menggunakannya lagi dan lebih baik menggunakan perintah systemctl.
Menghentikan Layanan:
# /etc/init.d/mysql stop [ ok ] Stopping mysql (via systemctl): mysql.service. #
Memulai Layanan:
# /etc/init.d/mysql start [ ok ] Starting mysql (via systemctl): mysql.service. #
Memulai Ulang Layanan:
# /etc/init.d/mysql restart [ ok ] Restarting mysql (via systemctl): mysql.service. #
Memeriksa Status Layanan:
# /etc/init.d/mysql status ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-05-02 18:26:30 UTC; 17s ago

Masalah izin saat memulai/menghentikan layanan
Jika Anda tidak masuk sebagai pengguna root, perintah di atas akan meminta Anda untuk memberikan kata sandi pengguna root untuk dieksekusi. Jika kata sandi yang salah dimasukkan, kesalahan otentikasi gagal akan ditampilkan dan perintah tidak akan dijalankan.
Jika Anda berada di daftar sudoers, Anda dapat menjalankan perintah ini sebagai pengguna sudo. Jika Anda tidak ada dalam daftar sudoers, pesan kesalahan akan ditampilkan bahwa Anda tidak ada dalam daftar sudoers dan insiden tersebut akan dilaporkan.
test@localhost:~$ systemctl stop mysql ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units === Authentication is required to stop 'mysql.service'. Authenticating as: root Password: polkit-agent-helper-1: pam_authenticate failed: Authentication failure ==== AUTHENTICATION FAILED === Failed to stop mysql.service: Access denied See system logs and 'systemctl status mysql.service' for details. test@localhost:~$ sudo systemctl stop mysql [sudo] password for test: test is not in the sudoers file. This incident will be reported. test@localhost:~$

Jadi, jika Anda ingin mengelola layanan apa pun, pastikan Anda memiliki hak istimewa yang diperlukan untuk menjalankan perintah ini.
Kesimpulan
Kami mempelajari berbagai cara untuk mengelola layanan di Ubuntu. perintah systemctl adalah pendekatan yang disukai untuk memulai/menghentikan/memulai ulang layanan di Ubuntu. Namun, skrip init mencetak status perintah, yang dapat berguna dalam skrip shell untuk menjalankannya dan segera mendapatkan status perintah.