我正在写一个Linux守护进程.我发现了两种方法.
fork()
和设置来守护您的过程sid
.&
.这是正确的方法吗?
在Linux Mint 17.1 x86_64上,内核3.13.0-48-generic和OpenSSL版本1.0.1f-1ubuntu2.11; 每当我尝试执行任何docker命令(如docker login
或docker run hello-world
)时,我都会收到以下错误:
FATA[0000] Get http:///var/run/docker.sock/v1.18/info: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
Run Code Online (Sandbox Code Playgroud)
我做了一组名为docker
使用sudo usermod -aG docker username
,我试图同时运行的根和正常的命令,添加$(boot2docker shellinit 2> /dev/null)
到~/.profile
的指示在这里,重新开始我的电脑并重新安装OpenSSL的.
知道我错过了什么吗?这可能是硬件问题吗?
关于将线程设置为守护进程意味着什么,我有点困惑.文档说明了这一点:
线程可以标记为"守护程序线程".这个标志的意义在于,当只剩下守护进程线程时,整个Python程序都会退出.初始值继承自创建线程.可以通过守护程序属性设置该标志.
我不确定是什么让这与普通线程不同.这是说这个程序永远不会完成吗?
def threadfunc():
while True:
time.sleep(1)
threading.Thread(target=threadfunc).start()
Run Code Online (Sandbox Code Playgroud)
即使主线程完成它的执行.而
def threadfunc():
while True:
time.sleep(1)
th = threading.Thread(target=threadfunc)
th.daemon = True
th.start()
Run Code Online (Sandbox Code Playgroud)
马上完成?
我问,因为我有一个情况,在我的主线程中我正在调用sys.exit(),并且进程只是挂起而我的其他线程正在运行,因为我可以看到日志.这与使用线程活动调用的sys.exit()有什么关系吗?
我用Go编写了一个长期运行的服务器.Main触发了程序逻辑执行的几个goroutine.之后主要没有任何用处.一旦主要退出,程序将退出.我现在用来保持程序运行的方法只是对fmt.Scanln()的简单调用.我想知道别人如何保持主力退出.以下是一个基本的例子.这里可以使用哪些想法或最佳实践?
我考虑通过在所述频道上接收来创建一个频道并延迟主要的退出,但我认为如果我的所有goroutine在某些时候变得不活跃,那么这可能会有问题.
旁注:在我的服务器(不是示例)中,程序实际上并没有连接到shell,因此无论如何与控制台交互都没有意义.现在它可行,但我正在寻找"正确"的方式,假设有一个.
package main
import (
"fmt"
"time"
)
func main() {
go forever()
//Keep this goroutine from exiting
//so that the program doesn't end.
//This is the focus of my question.
fmt.Scanln()
}
func forever() {
for ; ; {
//An example goroutine that might run
//indefinitely. In actual implementation
//it might block on a chanel receive instead
//of time.Sleep for example.
fmt.Printf("%v+\n", time.Now())
time.Sleep(time.Second)
}
}
Run Code Online (Sandbox Code Playgroud) 我最近完成了Wiki Web开发教程(http://golang.org/doc/articles/wiki/).我有很多乐趣,我想尝试更多的net/http包.
但是,我注意到当我从控制台运行wiki时,wiki会接管控制台.如果我关闭控制台终端或停止进程,CTRL+Z则服务器停止.
如何让服务器在后台运行?我认为这个术语是在一个守护进程中运行的.
我在Ubuntu 12.04上运行它.谢谢你的帮助.
我想docker-compose
在Mac OS X El Capitan(v10.11.2)上运行多容器应用程序.
但是,命令$ docker-compose up
命令抱怨它无法连接到Docker守护程序.
错误:无法连接到Docker守护程序 - 您可能需要运行
docker-machine start default
.
只有在执行后$ eval "$(docker-machine env default)"
我才能访问该docker-compose
命令.
为什么这样,我怎么能克服这个额外的步骤?
这是我的第一个Web服务器管理经验,我想构建使用nginx作为Web服务器的docker容器.在所有docker教程daemon off;
选项被放入主.conf
文件但是省略了关于它的说明.
我在互联网上搜索它,我不明白daemon on;
和daemon off;
选项之间有什么区别.有人提到daemon off;
是生产,为什么?
你能解释一下,这两个选项有什么区别,为什么我应该用于daemon off;
制作?
我写了一个程序,现在我希望将它转换为一个守护进程.由于我是一个菜鸟,对此一无所知,你能告诉我我该怎么做或者你可以给我一些关于它的基本教程或读物吗?我真的想学习如何做到这一点?
谢谢你们