标签: daemons

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

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

python linux scripting daemons

163
推荐指数
11
解决办法
26万
查看次数

将bash脚本作为守护程序运行

我有一个脚本,每次运行我的PHP脚本X次:

#!/bin/bash
while true; do
/usr/bin/php -f ./my-script.php
echo "Waiting..."
sleep 3
done
Run Code Online (Sandbox Code Playgroud)

如何将其作为守护进程启动?

linux centos daemons centos6

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

我能不能像守护进程一样在Django中运行一些代码

我正在使用mod_wsgi通过Apache为django站点提供服务.我还有一些Python代码作为后台进程运行(dameon?).它不断轮询服务器并将数据插入其中一个Django模型.这工作正常,但我可以将此代码作为我的Django应用程序的一部分,但能够在后台持续运行吗?它不需要是一个过程本身,而是一个不断活跃的Django网站的艺术.如果是这样,你能指点我一个例子或一些文件来帮助我实现这个目标吗?

谢谢.

python django daemon daemons python-daemon

15
推荐指数
2
解决办法
7744
查看次数

如何在Linux Ubuntu中创建.sh扩展文件?

我正在尝试编写一个脚本来运行我的一个.jar文件作为守护进程,但我不知道如何.sh在Ubuntu中创建扩展文件.我已经习惯使用vi我想要的代码创建一个文件,但我无法弄清楚如何将文件定义为特定的.sh文件.例如,我想将我的文件" foo"或" foo.txt"转换为" foo.sh".

是否有一个简单的命令,我没有看到可以将文件转换为.sh扩展名,还是一个更复杂的过程?

linux ubuntu sh daemons

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

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

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

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

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

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

python linux daemons

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

Ruby守护程序中的错误文件描述符

在Mac OS X Lion上使用Ruby v1.8.7和Daemons v1.1.8,我试图编写一个消费者进程并让它作为dameon运行:

# config[:name] => 'idx_my_delete_consumer'
# config[:daemon] => {:multiple => false,
#                    :backtrace => true, 
#                    :dir_mode => :normal, 
#                    :log_dir => '/Users/pprakash/consumer.log',
#                    :monitor => true,
#                    :dir => '/Users/pprakash/pids'}

 Daemons.run_proc(config[:name], config[:daemon]) do
    consumer = MyConsumer.new(config)  
    consumer.subscribe
  end

但是,它没有启动,而是抛出一个很长的回溯,这是这样的:

E, [2012-05-28T19:34:16.199770 #29357] ERROR -- : Bad file descriptor (Errno::EBADF)
/opt/local/lib/ruby/gems/1.8/gems/daemons-1.1.8/lib/daemons/daemonize.rb:134:in `for_fd'
/opt/local/lib/ruby/gems/1.8/gems/daemons-1.1.8/lib/daemons/daemonize.rb:134:in `close_io'
/opt/local/lib/ruby/gems/1.8/gems/daemons-1.1.8/lib/daemons/daemonize.rb:134:in `initialize'
/opt/local/lib/ruby/gems/1.8/gems/daemons-1.1.8/lib/daemons/daemonize.rb:134:in `new'
/opt/local/lib/ruby/gems/1.8/gems/daemons-1.1.8/lib/daemons/daemonize.rb:134:in `close_io'
/opt/local/lib/ruby/gems/1.8/gems/daemons-1.1.8/lib/daemons/daemonize.rb:75:in `call_as_daemon'
/opt/local/lib/ruby/gems/1.8/gems/daemons-1.1.8/lib/daemons/application.rb:258:in `start_proc'
/opt/local/lib/ruby/gems/1.8/gems/daemons-1.1.8/lib/daemons/application.rb:295:in `start'
/opt/local/lib/ruby/gems/1.8/gems/daemons-1.1.8/lib/daemons/monitor.rb:51:in `watch'
/opt/local/lib/ruby/gems/1.8/gems/daemons-1.1.8/lib/daemons/monitor.rb:51:in `fork'
/opt/local/lib/ruby/gems/1.8/gems/daemons-1.1.8/lib/daemons/monitor.rb:51:in `watch'
/opt/local/lib/ruby/gems/1.8/gems/daemons-1.1.8/lib/daemons/monitor.rb:45:in `each'
/opt/local/lib/ruby/gems/1.8/gems/daemons-1.1.8/lib/daemons/monitor.rb:45:in …

ruby daemons

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

Ruby:Logger和Daemons

我正在使用ruby 1.9.2p180(2011-02-18修订版30909)

为了进行日志记录,我使用了日志记录宝石.我的程序有两个块,用作守护进程.

但是从这些块进行日志记录会导致错误,并且没有任何内容写入日志文件:

log shifting failed. closed stream
log writing failed. closed stream
Run Code Online (Sandbox Code Playgroud)

以下是代码中发生的情况:

log = Logger.new(logbase + 'logfile.log', 'monthly')
log.level = Logger::INFO

proc = Daemons.call(options) do
  # [...]
  log.info "Any Logmessage"
  # [...]
end
Run Code Online (Sandbox Code Playgroud)

任何想法,哪里错了?

ruby logging daemons

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

Ruby守护程序 - 什么是监视器以及它如何工作?

因此,Ruby的守护进程gem允许您monitor=true在启动进程时进行设置.什么是监视器,你用它做什么?你所做的只是指定truefalse...是在某处创建一个日志文件?实际监控过程的东西,比如god?为什么关于这件东西如此可怕的文件呢?

或者这实际上是每个人都应该知道的Unix事情?:)

ruby monitor daemons

6
推荐指数
1
解决办法
2086
查看次数

Ruby Daemons记录旋转

当我将日志记录参数设置为Daemons(1.1.0)gem时,我将如何实现与此行相似的行为?

logger = Logger.new('foo.log', 10, 1024000)
Run Code Online (Sandbox Code Playgroud)

守护进程选项:

options = {
      :ARGV         => ['start'],
      :dir_mode     => :normal, 
      :dir          => log_dir,
      :multiple     => false,
      :ontop        => false
      :mode         => :exec,
      :backtrace    => true,
      :log_output   => true
    }
Run Code Online (Sandbox Code Playgroud)

ruby rubygems daemons

6
推荐指数
1
解决办法
1132
查看次数

在python中连接两个守护进程

在Python中连接两个守护进程的最佳方法是什么?

我有守护进程A和B.我想在A的模块中接收B生成的数据(可能是双向的).两个守护进程都支持插件,所以我想关闭插件中的通信.什么是最好的跨平台方式?

我知道很少有来自低级解决方案的机制 - 共享内存(C/C++),linux管道,套接字(TCP/UDP)等,以及很少的高级别队列(JMS,Rabbit),RPC.

两个守护进程应该在同一主机上运行,​​但显然更好的方法是从连接类型中抽象.

python中的典型解决方案/库是什么?我正在寻找一个优雅轻便的解决方案.我不需要外部服务器,只需要两个进程相互通信.

我应该在python中使用什么来做到这一点?

python communication daemons

5
推荐指数
1
解决办法
1206
查看次数