Портирование службы Windows на Linux - PullRequest
4 голосов
/ 21 апреля 2010

Я портирую приложение, которое запускается как фоновая служба в Windows при запуске, мы переносим приложение на linux (сервер SUSE Enterprise), я совершенно новичок в linux. Может ли кто-нибудь помочь мне с этим? Как

  1. Должен ли я создать исполняемый файл linux
  2. После сборки двоичного файла, какие изменения я должен внести в загрузочные файлы linux для запуска этого исполняемого файла
  3. Как моя служба может зарегистрировать функцию обратного вызова для изменения или изменения или отправки команд моей службе, когда она работает

Ответы [ 2 ]

3 голосов
/ 21 апреля 2010
  1. Да, вы должны создать бинарный файл Linux. Вы можете перефразировать свой вопрос, так как я сомневаюсь, что это ответ, который вы хотите: -)
  2. Обычно вы должны создать так называемый файл "init", который находится в /etc/init.d. У Novell есть руководство онлайн, которое вы можете использовать для создания файла. Обратите внимание, что, хотя файл инициализации является распространенным, точный метод использования операционной системы зависит от дистрибутива.
  3. Это будет заметное изменение для вас. Если вы выполняете простые действия, такие как повторная загрузка файла конфигурации, вы можете использовать функциональность сигналов, особенно сигнал SIGHUP / HUP, который обычно используется для этой цели. Если вам требуется расширенная связь с вашим демоном, вы можете использовать доменный сокет UNIX (представьте его как именованный канал) или сетевой сокет.

Другая задача, которую вам нужно выполнить, - это демонизация вашего приложения. Обычно это делается с помощью fork () вашего процесса, а затем перенаправляет каналы stdin / stdout в дочерний процесс. Есть больше деталей, на которые можно ответить, прочитав этот документ

3 голосов
/ 21 апреля 2010

См. , как перенести-net-windows-service-application-to-linux-using-mono .

В Linux deamons - это простые фоновые процессы. Никаких специальных методов управления (например, start(), stop()) не используется, как в Windows. Создайте свой сервис как простое (консольное) приложение и запускайте его в фоновом режиме. Вы можете использовать такой инструмент, как daemonize, чтобы запустить программу как демон Unix.

...