В чем разница между & ldquo; Service & rdquo; и & ldquo; /etc/init.d/&rdquo ;?

Вот еще один вариант с использованием планировщика ввода-вывода GIO (я никогда не использовал его раньше из Python, но пример ниже, похоже, работает нормально).

from gi.repository import GLib, Gio, GObject
import time

def slow_stuff(job, cancellable, user_data):
    print "Slow!"
    for i in xrange(5):
        print "doing slow stuff..."
        time.sleep(0.5)
    print "finished doing slow stuff!"
    return False # job completed

def main():
    GObject.threads_init()
    print "Starting..."
    Gio.io_scheduler_push_job(slow_stuff, None, GLib.PRIORITY_DEFAULT, None)
    print "It's running async..."
    GLib.idle_add(ui_stuff)
    GLib.MainLoop().run()

def ui_stuff():
    print "This is the UI doing stuff..."
    time.sleep(1)
    return True

if __name__ == '__main__':
    main()
110
задан 18 January 2012 в 01:51

2 ответа

/etc/init.d скрипты - это старый способ делать вещи. Они исходят из стандарта System V. Тем не менее, эти сценарии запускаются только в определенной последовательности, поэтому невозможно установить реальные зависимости.

Следовательно, выскочка была разработана с намерением заменить все скрипты /etc/init.d выскоченными скриптами (в [ f3]).

service позволяет плавный переход от скриптов /etc/init.d к сценариям выскочки. В будущем, когда все больше и больше скриптов будут перенесены на выскочку, обслуживание будет по-прежнему работать, потому что оно находит обе возможности.

Как включить или отключить службы?
96
ответ дан 29 May 2018 в 12:49
  • 1
    Upstart будет постепенно отменен, не так ли? – wrongusername 2 March 2014 в 21:11
  • 2
    systemd заменит выскочку после того, как будут созданы планы - 14.04 LTS будет использовать выскочку. Об этом было объявлено Mark Shuttleworth в статье под заголовком . Любезно теряя – not a patch 6 April 2014 в 19:05

Также проверьте справочную страницу для служебной команды: man service

service запускает скрипт в предсказуемой среде (рабочий каталог есть и только 2 переменные среды установлены: LANG и TERM) , Он также добавляет возможность делать --full-restart. Итак, чтобы подвести итог:

service может запускать скрипты из / etc / init или /etc/init.d (upstart или System V) service запускает скрипты в предсказуемой среде.

Аспект «предсказуемой среды» может вызвать проблемы, если по какой-либо причине ваш сценарий зависит от переменной среды. Вероятно, есть способ обойти это, но я не знаю, что это такое, и это выходит за рамки этого вопроса:)

26
ответ дан 29 May 2018 в 12:49
  • 1
    Привет @Joe Marty, Это именно то, что я сейчас экспериментирую. У меня есть услуга, которая ретранслируется на «DISPLAY». переменная среды, которая отсутствует при запуске демона с запуском службы «myservice». но присутствуют при запуске с запуском «/etc/init.d/myservice». Любая идея о том, как получить эту переменную? – frandevel 11 February 2016 в 19:07

Другие вопросы по тегам:

Похожие вопросы: