标签: daemon

守护进程在Linux中登录

所以我在Linux系统上运行了一个守护进程,我希望记录它的活动:日志.问题是,实现这一目标的"最佳"方法是什么?

我的第一个想法是简单地打开一个文件并写入它.

FILE* log = fopen("logfile.log", "w");
/* daemon works...needs to write to log */
fprintf(log, "foo%s\n", (char*)bar);
/* ...all done, close the file */
fclose(log);
Run Code Online (Sandbox Code Playgroud)

以这种方式记录是否有任何内在错误?有没有更好的方法,比如Linux内置的一些框架?

c linux logging daemon

66
推荐指数
4
解决办法
6万
查看次数

在Unix上正确处理PID文件的参考

我在哪里可以找到一个备受推崇的参考资料,详细说明在Unix上正确处理PID文件?

在Unix操作系统上,通常的做法是使用特殊的锁文件"锁定"程序(通常是守护程序):PID文件.

这是一个可预测位置的文件,通常是"/var/run/foo.pid".程序应该在启动时检查PID文件是否存在,如果文件存在,则退出并显示错误.所以这是一种咨询,协作锁定机制.

该文件包含一行文本,是当前持有锁的进程的数字进程ID(因此名称为"PID文件"); 这允许一种简单的方法来自动发送信号到持有锁的进程.

我找不到的是处理PID文件的预期或"最佳实践"行为的良好参考.有各种细微差别:如何实际锁定文件(不要打扰?使用内核?平台不兼容性怎么办?),处理陈旧锁(默默删除它们?何时检查?),何时获取并释放锁等等.

在哪里可以找到一个受人尊敬的,最权威的参考(理想情况是在W. Richard Stevens的水平上)这个小题目?

unix daemon locking

58
推荐指数
4
解决办法
3万
查看次数

如何在Linux中将Perl脚本作为系统守护程序运行?

将一个Perl脚本作为一个守护进程在linux中运行的简单方法是什么?

目前,这是在CentOS上.我希望它启动系统并关闭系统,所以一些/etc/rc.d/init.d集成也会很好,但我总是可以添加一个自定义行/etc/rc.d/rc.local.

linux perl daemon shutdown startup

57
推荐指数
3
解决办法
7万
查看次数

nohup和守护进程有什么区别?

将脚本作为守护程序运行与使用nohup相比有什么影响?

我知道在分叉过程等方面有什么不同,但这对我的脚本有什么影响?

unix daemon

57
推荐指数
3
解决办法
4万
查看次数

DOCKER_HOST变量有什么作用?

我是Docker的新手,在OSX上使用Boot2Docker.启动后,会显示以下消息:

To connect the Docker client to the Docker daemon, please set
export DOCKER_HOST=tcp://192.168.59.103:2375
Run Code Online (Sandbox Code Playgroud)

即使没有它,基本的Docker命令(例如docker run hello-world)也能正常工作.

安装说明信息量不大:

Note: If you see a message in the terminal that looks something like this:
To connect the Docker client to the Docker daemon, please set: 
export  DOCKER_HOST=tcp://192.168.59.103:2375
you can safely set the evironment variable as instructed.
Run Code Online (Sandbox Code Playgroud)

知道它是"安全的"并没有说明为什么它有用.

我不清楚的是:

  1. 什么是码头"客户"?
  2. docker"守护进程"是什么?
  3. docker"host"是什么?(Boot2Docker VM本身?)

macos daemon virtual-machine docker boot2docker

55
推荐指数
2
解决办法
10万
查看次数

我如何编写Mono守护进程的代码

我正在尝试为Linux编写一个Mono C#守护进程.

当它完成处理而不是仅仅杀死进程时,我想做它的启动和停止.

有没有人有这方面的例子?

编辑:我想出如何在debian中使用start-stop-daemon --background,所以我想我现在就用它.

编辑:我也在java中实现这个,他们有这个很好的addShutdownHook,可以捕获终止应用程序.我需要花费更多的时间来整理单声道服务的依赖关系,或找到一种方法来捕获应用程序终止.

有SessionEnd事件,但这仅适用于服务而非控制台应用程序

答: 使用mono-service在Linux上包装Windows服务

c# linux mono daemon mono-service

52
推荐指数
3
解决办法
2万
查看次数

与正在运行的python守护进程通信

我写了一个小的Python应用程序作为守护进程运行.它利用线程和队列.

我正在寻找改变这个应用程序的一般方法,以便我可以在它运行时与它通信.大多数情况下,我希望能够监测其健康状况.

简而言之,我希望能够做到这样的事情:

python application.py start  # launches the daemon
Run Code Online (Sandbox Code Playgroud)

后来,我希望能够出现并执行以下操作:

python application.py check_queue_size  # return info from the daemonized process
Run Code Online (Sandbox Code Playgroud)

为了清楚起见,我在实现Django启发的语法时没有任何问题.我不知道该怎么做是将信号发送到守护进程(start),或者如何编写守护进程来处理和响应这些信号.

就像我上面说的那样,我正在寻找一般方法.我现在能看到的唯一一个就是告诉守护进程不断记录文件可能需要的所有内容,但我希望有一个不那么混乱的方法.

更新:哇,很多很棒的答案.非常感谢.我想我会看看Pyro和web.py/Werkzeug的方法,因为Twisted比我想要咬一点点多一点.我认为,下一个概念性的挑战是如何在不挂断它的情况下与我的工作线程进行交谈.

再次感谢.

python daemon

52
推荐指数
7
解决办法
2万
查看次数

Android Studio:无法启动守护程序进程

当我尝试在Android Studio中导入gradle项目时,我遇到了以下错误.

Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized jvm option is used.
Please refer to the user guide chapter on the daemon at http://gradle.org/docs/1.8/userguide/gradle_daemon.html
Please read below process output to find out more: 
Run Code Online (Sandbox Code Playgroud)

这是我看到的输出:

18:25:42.484 [main] DEBUG o.g.l.daemon.bootstrap.DaemonMain - Assuming the daemon was started with following jvm opts: [-XX:MaxPermSize=256m, -XX:+HeapDumpOnOutOfMemoryError, -Xmx1024m, -Dfile.encoding=windows-1252]
18:25:43.254 [main] DEBUG o.g.l.daemon.server.DaemonServices - Creating daemon context with opts: [-XX:MaxPermSize=256m, -XX:+HeapDumpOnOutOfMemoryError, -Xmx1024m, …
Run Code Online (Sandbox Code Playgroud)

android daemon android-studio

49
推荐指数
5
解决办法
12万
查看次数

如何处理有关核心数据,共享偏好和通知的Mac OS X Helper/Main应用程序架构?

我对一个正在研究的项目(Mac OS X应用程序)有一些架构上的怀疑.它基本上由两个元素组成:一个在后台运行的守护进程收集一些数据,一个查看器用于表示收集的数据.

守护程序应在状态栏中显示(无停靠图标),并包含可通过状态栏访问的小菜单.它将数据保存在核心数据存储中.其中一个菜单项是打开查看器链接.打开此查看器时,正常的 GUI应用程序应该开始包括停靠图标和菜单栏.打开应用程序本身时也会打开查看器(通过双击图标).

经过一些实验,我发现实现这个功能的最好方法是创建两个应用程序,代表查看器的主应用程序和代表守护进程的辅助工具.我这样做的原因之一是不能LSUIElement立即在值之间切换以强制守护进程/查看器状态.

现在我对这个架构有一些疑问:

  • 守护程序和查看器应用程序都使用相同的核心数据存储来保存和检索数据.拥有多线程应用程序时,我知道NSManagedObjectContext需要多个对象才能正确同步数据.如何让多个应用程序同时使用相同的核心数据存储?这是否可能没有冲突,锁定等风险?我如何保证一致性?

  • 守护程序应始终在查看器启动时启动.我通过简单地遍历所有打开的进程并检查是否列出了守护进程的bundle标识符来实现这一点.如果没有,守护进程使用NSWorkspace's' 开始launchApplication.这很好用.现在,当用户退出守护程序时,查看器也应该停止.查看器通知守护程序停止的最佳方法是什么?如果守护程序消失,我可以定期检查活动进程并退出查看器但听起来有点奇怪.我希望选择某种通知,当观众即将关闭时,我会发送这些通知.但由于应在应用程序之间发送和捕获此通知,因此我不知道哪种简单通知服务可用.有什么想法吗?

  • 该应用程序是沙盒,因为它将在Mac App Store上分发.使用NSWorkspace's 启动应用程序launchApplication会导致目标应用程序在与我认为根本不是问题的源相同的沙盒环境中运行,因为在同一个沙箱中运行这两个应用程序感觉更好,可能是.但想象一下这个场景:守护进程在登录时自动启动(使用SMLoginItemSetEnabled),用户双击Viewer.app.由于守护程序已在运行(再次通过循环执行活动进程来检查),它将无法启动.现在我们有守护进程和查看器在不同的沙箱中运行吗?这会导致偏好,核心数据存储等问题吗?

  • 我想NSUserDefaults用于基本配置,我可以以某种方式在守护进程和查看器之间交换这些数据吗?同样,两个应用程序将具有不同的包标识符.

在此先感谢您的帮助,谢谢!

macos notifications daemon core-data helpers

48
推荐指数
1
解决办法
968
查看次数

如何停止码头工人

我的操作系统版本Ubuntu 16.04.我想停止码头,所以我在终端运行:

sudo systemctl stop docker
Run Code Online (Sandbox Code Playgroud)

但是这个命令对我没有帮助:

gridsim1103 ~: ps ax | grep docker 
11347 ?        Sl     0:00 containerd-shim 487e3784f983274131d37bde1641db657e76e41bdd056f43ef4ad5adc1bfc518 /var/run/docker/libcontainerd/487e3784f983274131d37bde1641db657e76e41bdd056f43ef4ad5adc1bfc518 runc
14299 pts/2    S+     0:00 grep --color=auto docker
29914 ?        S      0:00 sudo dockerd -H gridsim1103:2376
29915 ?        Sl     4:45 dockerd -H gridsim1103:2376
29922 ?        Ssl    0:24 containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim containerd-shim --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime runc
30107 ?        Sl     1:01 /usr/bin/docker-proxy -proto tcp -host-ip 188.184.80.77 -host-port 8500 -container-ip 192.17.0.2 -container-port 8500
30139 ?        Sl …
Run Code Online (Sandbox Code Playgroud)

daemon docker

47
推荐指数
4
解决办法
12万
查看次数