Tag: 守护进程

在Linux中守护进程日志logging

所以我有一个运行在Linux系统上的守护进程,我想logging下它的活动:日志。 问题是,什么是“最好”的方式来完成这个? 我的第一个想法是简单地打开一个文件并写入。 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); 采用这种方式logging有什么天生的错误吗? 有没有更好的方法,比如一些内置于Linux的框架?

如何制作一个进程守护进程

我想了解如何使我的程序成为一个守护进程。所以我碰到的一些事情是一般来说,一个程序执行以下步骤来成为一个守护进程: 调用fork( ) 。 在父亲中,调用exit( ) 。 这可以确保原始父节点(守护进程的祖父节点)满足其子节点终止,节点守护进程的父节点不再运行,守护进程不是进程组节点。 最后一点是成功完成下一步的要求。 调用setsid( ) ,为守护进程提供一个新的进程组和会话,两者都以它作为领导者。 这也确保该过程没有关联的控制terminal(因为该过程刚创build了新的会话,并且不会分配一个)。 通过chdir( )将工作目录更改为根目录。 这是因为inheritance的工作目录可以在文件系统的任何地方。 守护进程倾向于在系统的正常运行时间内运行,并且您不希望保持某个随机目录处于打开状态,从而阻止pipe理员卸载包含该目录的文件系统。 closures所有文件描述符。 打开文件描述符0,1和2(标准input,标准输出和标准错误)并将其redirect到/dev/null 。 #include <sys/types.h> #include <sys/stat.h> #include <stdlib.h> #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <linux/fs.h> int main (void) { pid_t pid; int i; /* create new process */ pid = fork ( ); if (pid == […]

在Linux中创build一个守护进程

在Linux中,我想添加一个不能停止的守护进程,并监视文件系统的变化。 如果检测到任何更改,则应将path写入启动的控制台以及换行符。 我已经有文件系统改变的代码几乎准备好了,但我不知道如何创build一个守护进程。 我的代码是从这里: http : //www.yolinux.com/TUTORIALS/ForkExecProcesses.html 后叉怎么办? int main (int argc, char **argv) { pid_t pID = fork(); if (pID == 0) { // child // Code only executed by child process sIdentifier = "Child Process: "; } else if (pID < 0) { cerr << "Failed to fork" << endl; exit(1); // Throw […]

如何停止安装在Mac Snow Leopard上的Jenkins?

我已经在OSX上安装了Jenkins可执行文件,但是现在我想停止它的运行。 每当我杀了它,不pipe如何,它只是立即重新启动。 我试过在jenkinsurl上使用exit命令: http://localhost:8080/exit 这要求我发布命令,我这样做,服务器按要求closures。 但是,然后重新启动。 我已经尝试使用pssearch进程ID,并强制杀死它( kill -9 pid ),并根据请求立即closures服务器。 但是,然后重新启动。 我已经尝试通过guiclosures它,但不幸的是似乎没有办法做到这一点。 必须有一个守护进程,这是一个普遍的OSX问题。

从ps -ef | grep关键字获取pid

我想用ps -ef | grep "keyword" ps -ef | grep "keyword"来确定一个守护进程的pid(在ps -ef的输出中有一个唯一的string)。 我可以用pkill keyword杀死进程有没有任何命令返回的PID而不是杀死它? (pidof或pgrep不工作)

我如何守护unix中的任意脚本?

我想要一个守护进程 ,可以将一个任意的通用脚本或命令变成一个守护进程 。 有两个我想处理的常见情况: 我有一个应该永远运行的脚本。 如果它死了(或重新启动),重新启动它。 不要让一次运行两个副本(检测副本是否已经运行,在这种情况下不要启动副本)。 我有一个简单的脚本或命令行命令,我想永远反复执行(在运行之间短暂的停顿)。 同样,不要让脚本的两个副本同时运行。 当然,在案例2中编写一个围绕脚本的“while(true)”循环,然后为案例1应用一个解决scheme,这是微不足道的,但是一个更一般的解决scheme将直接解决案例2,因为它适用于案例1中的脚本好吧(如果脚本不打算永远不会死的话,你可能只需要一个短暂的停顿或不停顿(当然如果脚本真的不会死的话那么停顿实际上并不重要))。 请注意,该解决scheme不应该涉及,例如,添加文件locking代码或PIDlogging到现有的脚本。 更具体地说,我想要一个我可以运行的程序“daemonize” % daemonize myscript arg1 arg2 或者,例如, % daemonize 'echo `date` >> /tmp/times.txt' 这将保持越来越多的date列表附加到times.txt。 (注意,如果守护进程的参数是一个像上面第一种情况一样运行的脚本,那么守护进程仍然会做正确的事情,必要时重新启动它。)然后,我可以在我的.login中放置一个类似上面的命令和/或cron它每小时或每分钟(取决于我有多么担心它意外死亡)。 注意:守护进程脚本将需要记住它是守护进程的命令string,以便如果同一个命令string被再次守护进程,它不会启动第二个副本。 此外,该解决scheme应理想的工作在OS X和Linux,但解决scheme之一是受欢迎的。 编辑:这很好,如果你不得不用sudo daemonize myscript myargs来调用它。 (如果我想到这一切都是错误的,或者有一些快速而肮脏的部分解决scheme,我也很想听到。) PS:万一它有用, 这里是一个类似于python的问题。 对类似问题的这个答案似乎是一个对任意脚本进行快速而邪恶的妖魔化的有用成语:

如何在Linux中使Python脚本像服务或守护程序一样运行

我写了一个Python脚本来检查某个电子邮件地址,并将新的电子邮件传递给外部程序。 我怎样才能让这个脚本全天候执行,例如在Linux中把它变成守护进程或服务。 我是否还需要一个循环,永远不会在程序中结束,还是可以通过多次执行代码来完成?

我如何运行一个Node.js应用程序作为自己的进程?

什么是最好的方式来部署Node.js? 我有一个Dreamhost VPS(这就是他们所说的虚拟机 ),我已经能够安装Node.js并设置代理。 只要保持打开的节点处于打开状态的SSH连接,就可以工作。

Docker命令无法连接到Docker守护进程

我想转移到Docker,所以我刚刚开始乱它。 我已经在VirtualBox Ubuntu 15.10(Wily Werewolf)安装上安装了Docker,并在这里build议我尝试运行一个基本的nginx Docker镜像: $ docker run –name mynginx1 -P -d nginx Cannot connect to the Docker daemon. Is the docker daemon running on this host? 所以我检查了Docker是否在运行: $ sudo service docker status ● docker.service – Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since vr 2015-11-06 08:41:48 […]

如何正确处理SIGTERM信号?

假设我们有这样一个用python编写的简单的守护进程: def mainloop(): while True: # 1. do # 2. some # 3. important # 4. job # 5. sleep mainloop() 我们使用start-stop-daemon ,默认情况下,它会在-stop上发送SIGTERM ( TERM )信号。 假设当前执行的步骤是#2 。 在这个时刻,我们发送TERM信号。 发生什么事是执行立即终止。 我发现我可以使用signal.signal(signal.SIGTERM, handler)处理信号事件signal.signal(signal.SIGTERM, handler)但是它仍然会中断当前的执行并将控制权交给handler 。 所以,我的问题是 – 是否有可能不中断当前的执行,但在单独的线程(?)处理TERM信号,以便我能够设置shutdown_flag = True以便mainloop()有机会优雅地停止?