Comment dupliquer un démon?

Je veux exécuter deux instances de proxies client dnscrypt, mais j'ai du mal à les faire démarrer automatiquement au démarrage. Voici ce que j'ai essayé:

Dans rc.local , c'est le premier:

 /usr/local/sbin/dnscrypt-proxy -a 127.0.0.1:40 -u _dnscrypt-proxy -d -l /dev/null -R dnscrypt.eu-dk 

et le second:

 /usr/local/sbin/dnscrypt-proxy2 -a 127.0.0.1:41 -u _dnscrypt-proxy2 -d -l /dev/null -R dnscrypt.org-fr 

J'ai un cd /usr/local/sbin et cp dnscrypt-proxy dnscrypt-proxy2 fait un cp dnscrypt-proxy dnscrypt-proxy2 et puis quand j'ai redémarré j'obtiendrais [ERROR] Unknown User : [dnscrypt-proxy2].

Puis j'ai cherché et vu cette question puis j'ai édité manuellement /etc/passwd et ajouté un nouvel user en copiant soigneusement l'user _dnscrypt-proxy par défaut et changé l'ID, comme maintenant il a ces 2 inputs:

 _dnscrypt-proxy:*688:688:dnscrypt-proxy user:/var/empty:/sbin/nologin _dnscrypt-proxy2:*689:689:dnscrypt-proxy2 user:/var/empty:/sbin/nologin` 

Et quand je redémarre, l'erreur Unknown User persiste toujours. Un ls rapide sur le dossier me montre que j'ai dupliqué le dossier. Ps aux me montre que le démon n'a pas démarré. Une search sur Google ne m'aide pas alors je me suis tourné vers les experts Linux ici. Mon OS est OpenBSD 5.7.

Tout d'abord , voici la réponse spécifique à votre question de pourquoi l'erreur inconnue d'user persiste: L'erreur était dans la façon dont vous avez créé l'user. Il y a plus de files qui doivent être corrigés que juste /etc/passwd .

Le moyen le plus simple de créer correctement l'user serait simplement de supprimer cette ligne de /etc/passwd , puis d'exécuter adduser -noconfig -shell -/sbin/nologin place. (Et quand vous éditez / etc / passwd, utilisez vipw au lieu de simplement vi /etc/passwd – voir la page man pour l'explication!)

Deuxièmement , vous n'avez vraiment pas besoin de créer un deuxième user. Vous pouvez exécuter le même programme deux fois sans avoir une copy du programme ou un deuxième user pour l'exécuter sous. Ce que vous devez faire pour exécuter un second démon avec le même user et le même binary mais avec des parameters différents est simple:

  • Copiez le script d'initialisation du démon sur celui avec un autre nom. (Vous l'avez déjà fait.)
  • Modifiez le nouveau script d'initialisation. Gardez le même path vers le binary et le même nom d'user. Ne modifiez que les options que vous voulez modifier!

Voilà – tu es prêt à courir!

Quelques points:

  1. Vous ne devriez pas avoir besoin de dupliquer le binary dnscrypt-proxy – il suffit de l'appeler plusieurs fois avec différentes options
  2. Lorsque vous avez créé l'user _dnscrypt-proxy2 , avez-vous également créé leur groupe principal? Je vois que l'user a un GID différent de _dnscrypt-proxy ( 689 au lieu de 688 ) mais vous n'avez pas mentionné la copy du groupe. Sinon, créez le groupe manquant. Vous pouvez le faire en éditant /etc/group et en ajoutant l'input manquante (je devine en copiant l'input pour le groupe _dnscrypt-proxy ).

Le point 2 devrait résoudre votre problème.

de la page de manuel rcctl(8) :

La méthode recommandée pour exécuter une deuxième copy d'un démon donné dans un but différent est de créer un lien symbolique vers son script de contrôle rc.d (8):

 # ln -s /etc/rc.d/snmpd /etc/rc.d/snmpd6 # rcctl set snmpd6 status on # rcctl set snmpd6 flags -D addr=2001:db8::1234 # rcctl start snmpd6