“Hizmet” ve “/etc/init.d/” arasındaki fark nedir?


113

Bir süredir Ubuntu lezzetini hem açık hem de kapalı olan sunucu kurulumlarını yönetiyorum - Hizmetlerin /etc/init.d/yeniden başlatılması için oldukça ayarlandım . Şimdi bu mesajı alıyorum:

root@tatooine:~# /etc/init.d/mysql status
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql status

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the status(8) utility, e.g. status mysql
mysql start/running, process 14048

Bu Ubuntu'nun en son LTS'sinde ortaya çıkmış gibi görünüyor - neden? Ne kadar kötü olan /etc/init.d/ne / arasında bir fark yoktur serviceve /etc/init.d/?


3
Sonradan görme Cookbook geçiş için rasyonel iyi bir açıklama içerir.
ændrük

Yanıtlar:


103

/etc/init.dsenaryolar işleri yapmanın eski yoludur. Sistem V standardından geliyorlar. Bununla birlikte, bu senaryolar sadece belirli bir sırada ateşlenir, dolayısıyla gerçek bağımlılıklar kurulamaz.

Bu nedenle, start-up tüm /etc/init.dscriptleri start-up scriptleri (in /etc/init) ile değiştirmek amacıyla geliştirilmiştir .

service/etc/init.dkomut dosyalarından başlangıç ​​komut dosyalarına sorunsuz geçiş sağlar . Gelecekte, gittikçe daha fazla sayıda komut dosyası çalıştırma işlemine aktarıldığında, hizmet yine de çalışacak çünkü her iki olasılığı da buluyor.


6
Başlangıç ​​şimdi sona erecek, değil mi?
yanlış kullanıcı adı

6
Planlar yürürlüğe girdikten sonra sistem başlangıcı değiştirilecektir - 14.04 LTS çalıştırma işlemini kullanır. Bu tarafından açıklandı Mark Shuttleworth başlıklı bir yayında, nezaketle kaybetmek
değil bir yama

28

Ayrıca servis komutunun man sayfasına bakınız: man service

servicebir betiği öngörülebilir bir ortamda çalıştırır (çalışma dizini / ve sadece 2 ortam değişkeni ayarlanmıştır: LANG ve TERM). Aynı zamanda yapma yeteneği de ekler --full-restart. Özetle:

  1. service Komut dosyalarını / etc / init veya /etc/init.d komutundan çalıştırabilir (starttart veya System V)
  2. service komut dosyalarını öngörülebilir bir ortamda çalıştırır.

"Tahmin edilebilir ortam" yönü, komut dosyanızın nedense bir ortam değişkenine bağlı olması durumunda, sorunlara neden olabilir. Muhtemelen bunu aşmanın bir yolu vardır, ama ne olduğunu bilmiyorum ve bu, bu sorunun kapsamı dışında. :)


2
Merhaba @Joe Marty, Bu tam olarak şimdi deneyeceğim sorun. Daemon'a "service myservice start" ile başlarken mevcut olmayan, ancak "/etc/init.d/myservice start" ile başladığında mevcut olan bir "DISPLAY" ortam değişkenini ileten bir hizmetim var. Bu değişkenin nasıl kullanılabilir olacağı hakkında bir fikriniz var mı?
frandevel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.