Wie werden Systemdienste in 12.10 gestartet?

12

Eine Sache, die mich in Ubuntu immer verwirrte, war, wie Systemdienste gestartet werden. Ich weiß, dass Ubuntu Upstart verwendet und SysV unterstützt, aber welches wird zum Starten der Dienste verwendet? Dies ist wichtig, wenn Sie einen "manuellen" Start für einen Dienst wünschen.

Zum Beispiel habe ich auf meinem System Dateien für die folgenden Dienste entweder in /etc/init.d/<service>(SysV) und /etc/init/<service>.conf(Upstart):

acpid, mysql, networking, qemu-kvm, ufw, libvirt-bin

Also, wenn ich die Ausführung von MySQL beim Start deaktivieren möchte, muss ich den Upstart-Weg oder den SysV-Weg verwenden, um es zu deaktivieren? Wie kann ich auch feststellen, welche davon wirklich zum Starten eines allgemeinen Dienstes verwendet werden?

Bearbeiten

Der eigentliche Zweifel besteht hier nicht darin, wie Dienste mit SysV / Upstart deaktiviert / aktiviert werden. Was mich wirklich verwirrt, ist, dass einige Dienste gleichzeitig in SysV und Upstart definiert (und aktiviert) zu sein scheinen. Gibt es einen Vorrang zwischen ihnen (wie wenn mysqles in beiden Fällen aktiviert ist, um es mit SysV zu starten)? Oder kann es sein, dass ein Tool das andere im Hintergrund verwendet?

Salem
quelle
1
Schauen Sie sich die akzeptierte Antwort hier an: askubuntu.com/questions/133807/… hat einige interessante Links.
Rinzwind

Antworten:

2

Bei Diensten, die sowohl in SysV als auch in upstart definiert sind, wird im Allgemeinen beim Neustart über SysV Folgendes angezeigt:

al@al-mythtv:~$ sudo /etc/init.d/mysql restart
[sudo] password for al: 
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop mysql ; start mysql. The restart(8) utility is also available.
mysql stop/waiting
mysql start/running, process 29846

Damit meine ich, dass Upstart für diese Dienste bevorzugt wird und die SysV-Implementierung nur ein Wrapper ist.

Auch ich denke du hast die Bedeutung der Verzeichnisse rückwärts. / etc / init ist die Upstart-Konfiguration, /etc/init.d ist die SysV-Kompatibilität, es handelt sich jedoch nur um Symlinks zum Upstart für diese Art von Diensten.

Alistair Buxton
quelle
6

Dies hängt in hohem Maße von der Anwendung und ihrem Verpackungsbetreuer ab.

Es gibt eine starke Präferenz für Upstart-Skripte, weil sie Ereignisse verarbeiten (was im Allgemeinen eine großartige Sache ist), aber viele Anwendungen nicht gut genug Upstart-Skripte zur Verfügung haben oder der Betreuer der Anwendung sich dafür entschieden hat, die Standardeinstellungen beizubehalten (Anwendung oder Debian). .

In jedem Fall sind Sie in der Lage, sich anzupassen.

  • Für Upstart:
    • Benennen Sie die Datei in etwas um, das nicht endet .conf, oder
    • In manualauf die Datei. Auf diese Weise können Sie den Dienst manuell laden.
  • Für ältere Dienste:

    update-rc.d -f <service> remove
    

Wenn Sie ein /etc/init.d/Skript für etwas und ein /etc/init/Skript haben und überprüfen möchten, ob die init.d-Version noch aktiv ist, können Sie Folgendes überprüfen:

ls -l /etc/rc?.d/*<service>

Wenn Sie eine Menge von Symlinks sehen, ist diese in der alten SysV-Init installiert.

Oli
quelle
Wenn ich also einen Dienst habe, der in SysV und Upstart aktiviert ist (zum Beispiel acpid), kann ich davon ausgehen, dass er von SysV gestartet wird? Oder wenn ich es deaktivieren möchte, müsste ich es mit update-rc.dund den Umbenennungstrick tun ?
Salem