Ik heb onlangs de Wiki-zelfstudie over webontwikkeling(http:// golang.org/doc/articles/wiki/). Ik heb heel veel plezier gehad en ik zou graag meer willen experimenteren met het net/http-pakket.
Ik merkte echter dat wanneer ik de wiki vanaf een console uitvoer, de wiki de console overneemt. Als ik de consoleterminal sluit of het proces stop met CTRL+Z, stopt de server.
Hoe kan ik de server op de achtergrond laten draaien? Ik denk dat de term daarvoor in een daemon draait.
Ik voer dit uit op Ubuntu 12.04. Bedankt voor alle hulp.
Antwoord 1, autoriteit 100%
Eenvoudige / bruikbare dingen eerst
Als u zonder veel moeite een startscript wilt, kunt u de service upstart
gebruiken. Zie de bijbehorende handleiding en /etc/init/*.conf
voor voorbeelden. Na het maken van een dergelijk proces
u kunt uw server starten door te bellen
service myserver start
Als je meer functies wilt, zoals specifieke beperkingen of toestemmingsbeheer, kun je xinetd
proberen.
De shell gebruiken
U zou uw proces als volgt kunnen starten:
nohup ./myexecutable &
De &
vertelt de shell om het commando op de achtergrond te starten en het in de takenlijst te houden.
Op sommige shells wordt de taak afgebroken als de bovenliggende shell wordt afgesloten met het HANGUP-signaal.
Om dit te voorkomen, kunt u uw opdracht starten met het nohup
-commando, dat het HANGUP-signaal negeert.
Dit werkt echter niet als het opgeroepen proces het HANGUP-signaal opnieuw verbindt.
Om echt zeker te zijn, moet je het proces uit de takenlijst van de shell verwijderen.
Voor twee bekende shells kan dit als volgt worden bereikt:
bash:
./myexecutable &
disown <pid>
zsh:
./myexecutable &!
Je achtergrondbaan vermoorden
Normaal gesproken drukt de shell de PID van het proces af, die vervolgens kan worden afgebroken met het commando kill
, om de server te stoppen. Als uw shell de PID niet afdrukt, kunt u deze verkrijgen met
echo $!
direct na uitvoering. Dit drukt de PID van het gevorkte proces af.
Antwoord 2, autoriteit 14%
U kunt Supervisordgebruiken om uw proces te beheren.
Antwoord 3, autoriteit 9%
Ubuntu? Gebruik upstart
.
Maak een bestand in /etc/init
voor uw taak, genaamd your-service-name.conf
start on net-device-up
exec /path/to/file --option
U kunt start your-service-name
gebruiken, evenals: stop
, restart
, status
Antwoord 4, autoriteit 5%
Hiermee wordt uw service geconfigureerd met behulp van systemd
, geen uitgebreide tutorial, maar eerder een snelle start van hoe dit kan worden ingesteld.
Inhoud van uw app.service
-bestand
[Unit]
Description=deploy-webhook service
After=network.target
[Service]
ExecStart=/usr/bin/go webhook.go
WorkingDirectory=/etc/deploy-webhook
User=app-svc
Group=app-svc
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=deploy-webhook-service
PrivateTmp=true
Environment=APP_PARAM_1=ParamA
Environment=APP_PARAM_2=ParamB
[Install]
WantedBy=multi-user.target
De service starten
sudo systemctl start deploy-webhook.service
Servicestatus
sudo systemctl status deploy-webhook.service
logs
journalctl -u deploy-webhook -e