skrip service vs. systemctl - yang akan digunakan

24

Di Fedora kami memiliki skrip 'systemctl' dan 'service'. Tampaknya layanan panggilan internal systemctl. Jadi apa cara yang benar / benar di Fedora untuk memulai atau menghentikan layanan - via systemctlatau servicefasilitas? Mungkinkah ada nuansa yang perlu diingat?

Menandai
sumber
3
Pengguna Debian, jadi tidak bisa menjawab dengan pasti, tetapi service foo startdalam debian berfungsi apakah sistem init Anda adalah systemd atau sysvinit atau pemula; systemctlkemungkinan tidak akan berfungsi jika systemd bukan PID1.
Shadur

Jawaban:

14

Cara untuk menghentikan / memulai layanan di Fedora (versi yang lebih baru) menggunakan systemctl.

Namun, mungkin ada beberapa layanan yang tersisa di /etc/init.d/mana Anda dapat mengontrol dengan serviceperintah. Anda masih bisa mengendalikan mereka dengan systemctlsebagai systemdotomatis peta mereka ke file satuan untuk Anda.

Misalnya, pada CentOS 7 saya (Fedora 19 atau sekitar), ada /etc/rc.d/init.d/networkskrip yang bisa saya kontrol dengan serviceperintah. Jika saya menggunakan systemctl, itu masih berfungsi:

# sudo systemctl status network
network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network)
Active: active (exited) since Tue 2014-11-11 08:21:51 GMT; 2 weeks 1 days ago

Seperti yang Anda lihat, itu telah dipetakan /etc/rc.d/init.d/networkoleh systemddan systemctlperintah mengendalikannya.

Saya bisa jadi 'tahun lalu' dan menggunakannya servicesebagai gantinya:

# service network status
Configured devices:
lo eth0
Currently active devices:
lo eth0 tun0

Keduanya bekerja, tetapi perhatikan bahwa mereka memberikan hasil yang berbeda dalam statusperintah mereka .

garethTheRed
sumber
10

Biasanya serviceskrip diarahkan ke skrip systemctl (Systemd) jadi pada dasarnya Anda yang ingin Anda gunakan.

Contoh

Dari sistem Fedora 20 saya.

$ service sshd status
Redirecting to /bin/systemctl status  sshd.service
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: active (running) since Fri 2014-11-21 09:12:10 EST; 5 days ago
 Main PID: 1095 (sshd)
   CGroup: /system.slice/sshd.service
           └─1095 /usr/sbin/sshd -D

Nov 21 09:12:10 dufresne systemd[1]: Starting OpenSSH server daemon...
Nov 21 09:12:10 dufresne systemd[1]: Started OpenSSH server daemon.
Nov 21 09:12:11 dufresne sshd[1095]: Server listening on 0.0.0.0 port 22.
Nov 21 09:12:11 dufresne sshd[1095]: Server listening on :: port 22.

Saya biasanya menggunakan kedua metode ini, karena kebiasaan lama sulit. Tetapi jika Anda mencoba untuk beradaptasi dengan dunia Systemd, saya akan terus memaksa diri saya untuk melakukan hal-hal menggunakan systemctljika memungkinkan.

Juga Systemd membawa semua yang biasa Anda lakukan dengan chkconfigdan di servicebawah satu perintah systemctl, jadi saya biasanya menemukan bahwa lebih mudah untuk mengatasinya dalam jangka panjang.

Cheatsheet ini di situs web proyek Fedora sangat membantu dalam melakukan peralihan.

   ss1

Kebetulan, jawaban untuk pertanyaan awal Anda dijawab dalam catatan kaki di halaman itu:

Perhatikan bahwa semua baris / sbin / service dan / sbin / chkconfig yang tercantum di atas terus bekerja pada systemd, dan akan diterjemahkan ke padanan asli yang diperlukan. Satu-satunya pengecualian adalah chkconfig --list.

Referensi

slm
sumber