相关疑难解决方法(0)

将stdout重定向到Python中的文件?

如何将stdout重定向到Python中的任意文件?

当从ssh会话中启动长时间运行的Python脚本(例如,Web应用程序)并进行后台处理,并且ssh会话关闭时,应用程序将引发IOError并在尝试写入stdout时失败.我需要找到一种方法来将应用程序和模块输出到文件而不是stdout,以防止由于IOError导致的失败.目前,我使用nohup将输出重定向到一个文件,这就完成了工作,但是我想知道是否有办法在不使用nohup的情况下完成它,出于好奇.

我已经尝试了sys.stdout = open('somefile', 'w'),但这似乎并没有阻止一些外部模块仍然输出到终端(或者sys.stdout = ...线路根本没有发射).我知道它应该使用我测试过的简单脚本,但我还没有时间在Web应用程序上进行测试.

python stdout

285
推荐指数
8
解决办法
43万
查看次数

如何在Python中创建守护进程?

在Google上搜索会显示x2代码段.第一个结果是这个代码配方有很多文档和解释,以及下面的一些有用的讨论.

但是,另一个代码示例虽然不包含如此多的文档,但包含用于传递命令(如启动,停止和重新启动)的示例代码.它还会创建一个PID文件,可以方便地检查守护程序是否已在运行等.

这些示例都解释了如何创建守护进程.还有其他事情需要考虑吗?一个样本比另一个好,为什么?

python daemon

237
推荐指数
10
解决办法
27万
查看次数

运行php脚本作为守护进程

我需要运行一个PHP脚本作为守护进程(等待指令并做一些事情).cron job不会为我做,因为一旦指令到达就需要采取行动.我知道由于内存管理问题,PHP实际上不是守护进程的最佳选择,但由于各种原因,我必须在这种情况下使用PHP.我遇到了libslack的一个名为Daemon(http://libslack.org/daemon)的工具,它似乎可以帮助我管理守护进程,但是在过去的5年中没有任何更新,所以我想知道你是否知道一些其他替代方案适合我的情况.任何信息都将非常感激.

php unix linux daemon

149
推荐指数
9
解决办法
14万
查看次数

对于Linux上的进程,kill -9怎么可能没有效果?

我正在编写一个插件,以便在您访问网站时自动突出显示文本字符串.这就像突出显示搜索结果,但自动和许多单词; 它可以用于过敏的人,使单词真正脱颖而出,例如,当他们浏览食物网站时.

但我有问题.当我尝试关闭一个空的,新鲜的FF窗口时,它会以某种方式阻止整个过程.当我终止进程时,所有窗口都消失了,但Firefox进程保持活动状态(父PID为1,不监听任何信号,打开大量资源,仍然占用CPU,但不会让步).

所以有两个问题:

  1. 如何一个进程不听kill -9(既不是用户也不是root用户)怎么可能?

  2. 除了重启之外,有什么我可以做的吗?

[编辑]这是违规的过程:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
digulla  16688  4.3  4.2 784476 345464 pts/14  D    Mar28  75:02 /opt/firefox-3.0/firefox-bin
Run Code Online (Sandbox Code Playgroud)

与...相同 ps -ef | grep firefox

UID        PID  PPID  C STIME TTY          TIME CMD
digulla  16688     1  4 Mar28 pts/14   01:15:02 /opt/firefox-3.0/firefox-bin
Run Code Online (Sandbox Code Playgroud)

这是剩下的唯一过程.正如你所看到的,它不是一个僵尸,它正在运行!它不会听杀-9,无论我是用PID还是名字杀了!如果我尝试连接strace,那么strace也挂起并且不能被杀死.也没有输出.我的猜测是FF挂起了一些内核例程但是哪个?

[EDIT2]根据sigjuice的反馈:

ps axopid,comm,wchan
Run Code Online (Sandbox Code Playgroud)

可以向您显示进程挂起的内核例程.就我而言,有问题的插件是Beagle Indexer(openSUSE 11.1).禁用插件后,FF又是一只快速而快乐的狐狸.

linux sysadmin kill process

64
推荐指数
2
解决办法
6万
查看次数

Linux守护进程

我正在写一个Linux守护进程.我发现了两种方法.

  1. 通过调用fork()和设置来守护您的过程sid.
  2. 用你的程序运行&.

这是正确的方法吗?

linux daemon

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

为什么在setsid()之前fork()

fork()之前为什么setsid()要守护进程?

基本上,如果我想从其控制终端分离进程并使其成为进程组负责人:我使用setsid().

在没有分叉之前这样做是行不通的.

为什么?

c unix linux system

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

为什么fork()两次

Nagios让我配置child_processes_fork_twice=<0/1>.

文件说:

此选项确定Nagios在执行主机和服务检查时是否会fork()子进程两次.默认情况下,Nagios fork()两次.但是,如果启用了use_large_installation_tweaks选项,则只会fork()一次.

据我所知,fork()将产生一个新的子进程.我为什么要两次这样做?

c debugging fork

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

正确的守护进程行为(来自PEP 3143)解释

我在Python中有一些[对我的RPi]的任务涉及很多sleep事情:做一些需要一两秒钟或三秒钟的事情,然后等待几分钟或几小时.我希望在睡眠时间内将控制权传递给操作系统(Linux).为此,我应该躲避那些任务.一种方法是使用Python的标准守护程序进程库.

但守护进程并不那么容易理解.根据PEP 3143的基本原理段落,表现良好的守护进程应该执行以下操作.

  • 关闭所有打开的文件描述符.
  • 更改当前工作目录.
  • 重置文件访问创建掩码.
  • 在后台运行.
  • 与进程组脱离关联.
  • 忽略终端I/O信号.
  • 与控制终端解除关联.
  • 不要重新获取控制终端.
  • 正确处理以下情况:
    • 由System V init进程启动.
    • 守护进程终止SIGTERM信号.
    • 儿童产生SIGCLD信号.

对于像我这样的Linux/Unix新手,其中一些不是解释.但我想知道为什么我做我做的事.那么这个理由背后的理由是什么?

python linux daemons

9
推荐指数
1
解决办法
1029
查看次数

PHP:如何启动分离进程?

目前我的解决方案是:

exec('php file.php >/dev/null 2>&1 &');
Run Code Online (Sandbox Code Playgroud)

并在file.php中

if (posix_getpid() != posix_getsid(getmypid()))
    posix_setsid();
Run Code Online (Sandbox Code Playgroud)

我有什么方法可以用exec做到这一点?

php linux parallel-processing

8
推荐指数
2
解决办法
8313
查看次数

如何使用swank部署lisp映像,并作为守护进程运行

如标题所示,我想部署一个可以用Swank运行的Lisp图像.这可以通过使用lisp实现提供的图像转储功能来完成.但它如何作为守护进程运行?

Detachtty做得很好,但是当我部署时,用户需要detachtty; 我不喜欢这个解决方案,我只想要一个独立的解决方案.

Restas-daemon和sb-daemon可能是另一种选择,但两者都与SBCL相关.是否有便携式解决方案,或仅适用于Clozure CL?

我也daemon从quicklisp 尝试了这个库,但是当我开始使用Swank时,它就挂了.我可以在proc文件系统中看到套接字文件描述符被销毁了.

现在我不知道.

有没有人有建议?

lisp deployment daemon swank

7
推荐指数
1
解决办法
545
查看次数