社区首页 >问答首页 >当存在过时的PID文件时,python-daemon上下文无法启动

当存在过时的PID文件时,python-daemon上下文无法启动
EN

Stack Overflow用户
提问于 2012-01-26 15:50:17
回答 2查看 6.3K关注 0票数 6

我正在使用python-daemon,并且有一个问题,当我kill -9一个进程时,它会留下一个pidfile (ok),下次我运行我的程序时,它不会工作,除非我已经手动删除了这个pidfile (不ok)。

我捕获所有异常,以便在终止之前调用context.close() --当这种情况发生时(例如在kill上),/var/ run /mydaemon.pid*文件将被删除,随后的守护进程将成功运行。但是,在使用SIGKILL (kill -9)时,我没有机会调用context.close(),/var/run文件仍然存在。在本例中,下一次我运行我的程序时,它没有成功启动--原始进程返回,但守护进程在context.open()阻塞。

看起来python-daemon应该注意到有一个不再存在的进程的pidfile,并将其清除,但这并没有发生。我是不是应该手工做这件事?

注意:我没有使用with,因为这段代码运行在Python2.4上

代码语言:javascript
代码运行次数:0
复制
from daemon import DaemonContext
from daemon.pidlockfile import PIDLockFile

context = DaemonContext(pidfile = PIDLockFile("/var/run/mydaemon.pid"))
context.open()

try:
    retry_main_loop()
except Exception, e:
    pass
context.close()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-14 12:31:41

如果您运行的是linux,并且进程级锁是可以接受的,请继续阅读。

我们尝试获取锁。如果失败,请检查锁是否被正在运行的进程获取。如果不是,则打破锁定并继续。

代码语言:javascript
代码运行次数:0
复制
from lockfile.pidlockfile import PIDLockFile
from lockfile import AlreadyLocked

pidfile = PIDLockFile("/var/run/mydaemon.pid", timeout=-1)
try:
    pidfile.acquire()
except AlreadyLocked:
    try:
        os.kill(pidfile.read_pid(), 0)
        print 'Process already running!'
        exit(1)
    except OSError:  #No process with locked PID
        pidfile.break_lock()

#pidfile can now be used to create DaemonContext

编辑:看起来PIDLockFile只在锁定文件>= 0.9上可用

票数 1
EN

Stack Overflow用户

发布于 2012-02-24 13:02:54

使用提供的脚本here,pid文件仍然是kill -9,但是脚本也会在重新启动时正确清除。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9020860

复制
相关文章
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
文章主要介绍了PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法,需要的朋友可以参考下,操作session有时候会遇到这个问题:Warning: session_start() [function.session-start]……
李洋博客
2021/06/15
6960
线程安全性
线程安全 要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享和可变状态的访问。 从非正式的意义来讲,对象的状态是指存储在状态变量(例如实例或静态域)中的数据,对象的状态可能包含其它依赖对象的域。 一个对象是否需要实现线程安全,取决于它是否会被多个线程访问。要使得对象是线程安全的,需要采取同步机制来协同对对象可变状态的访问。 Java同步机制:关键字synchronized、volatile类型的变量、显式锁(Lock)、原子变量。 无状态的对象一定是线程安全的。 原子性 竞态条件(Rac
SuperHeroes
2018/05/31
8700
PHP面向对象-Session的实现和安全性
PHP是一种开放源代码的脚本语言,被广泛用于Web开发。Session是一种在服务器上存储数据的技术,它可以跨页面或应用程序使用,而不需要将数据传输到客户端。在PHP中,Session是通过服务器端存储用户信息的一种常用方法,它可以为网站的用户提供一种安全的身份验证方式。
堕落飞鸟
2023/04/29
5010
智能合约安全性
以太坊智能合约是极为灵活的。它能够存储超过非常大量的虚拟货币(超过十亿美元),并且根据先前部署的智能合约运行不可修改的代码。 虽然这创造了一个充满活力和创造性的生态系统,但其中包含的无信任、相互关联的智能合约,也吸引了攻击者利用智能合约中的漏洞和以太坊中的未知错误来赚取利润。 智能合约代码通常无法修改来修复安全漏洞,因此从智能合约中被盗窃的资产是无法收回的,且被盗资产极难追踪。 由于智能合约问题而被盗取或丢失的价值总额很容易超过 10 亿美元。
fingernft
2022/08/12
9070
智能合约安全性
Docker的安全性
现在讨论Docker安全性的话题颇多,主要集中在对使用容器方式的隔离性、攻击防护性等方面。
星哥玩云
2022/07/03
9990
PHP 安全性漫谈
原文出处: 彭长霖 本文所讨论的安全性环境是在Linux+Apache+Mysql+PHP。超出此范围的安全性问题不在本文范畴之内 一、apache server安全性设置 1、以Nobody用户运行 一般情况下,Apache是由Root 来安装和运行的。如果ApacheServer进程具有Root用户特权,那么它将给系统的安全构成很大的威胁,应确保Apache Server进程以最可能低的权限用户来运行。通过修改httpd.conf文件中的下列选项,以Nobody用户运行Apache 达到相对安全的
wangxl
2018/03/08
1.4K0
WEB安全性测试
  所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。[1] 比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击
顾翔
2019/12/11
1.4K0
机场安全性分析
航空安全是一个很复杂的环境。几年前媒体报道DHS针对一架波音757攻击,担心一架“被黑”的飞机可能会成为针对机场新的攻击手段。
FB客服
2019/11/11
1.2K0
机场安全性分析
关于Windows安全性
曾经有个朋友,几百台windows虽然都是内网,但他跳板机有公网,黑客先攻陷了跳板机然后几百台内网机器全被搞
Windows技术交流
2022/11/30
1.5K0
PHP会话(Session)实现用户登陆功能
对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用。 由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容。实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全得多。 对于 Cookie 来说,假设我们要验证用户是否登陆,就必须在 Cookie 中保存用户名和密码(可能是 md5 加密后字符串),并在每次请求页面的时候进行验证。如果用户名和密码存储在数据库,每次都要执行一次数据库查询,给数据库造成多余的负担。因为我们并不能 只做一次验证。为什么呢?因为客户端 Cookie 中的信息是有可能被修改的。假如你存储 $admin 变量来表示用户是否登陆,$admin 为 true 的时候表示登陆,为 false 的时候表示未登录,在第一次通过验证后将 $admin 等于 true 存储在 Cookie,下次就不用验证了,这样对么?错了,假如有人伪造一个值为 true 的 $admin 变量那不是就立即取的了管理权限么?非常的不安全。 而 Session 就不同了,Session 是存储在服务器端的,远程用户没办法修改 Session 文件的内容,因此我们可以单纯存储一个 $admin 变量来判断是否登陆,首次验证通过后设置 $admin 值为 true,以后判断该值是否为 true,假如不是,转入登陆界面,这样就可以减少很多数据库操作了。而且可以减少每次为了验证 Cookie 而传递密码的不安全性了(Session 验证只需要传递一次,假如你没有使用 SSL 安全协议的话)。即使密码进行了 md5 加密,也是很容易被截获的。 当然使用 Session 还有很多优点,比如控制容易,可以按照用户自定义存储等(存储于数据库)。我这里就不多说了。 Session 在 php.ini 是否需要设置呢?一般不需要的,因为并不是每个人都有修改 php.ini 的权限,默认 Session 的存放路径是服务器的系统临时文件夹,我们可以自定义存放在自己的文件夹里,这个稍后我会介绍。 开始介绍如何创建 Session。非常简单,真的。 启动 Session 会话,并创建一个 $admin 变量:
smy
2018/12/24
2.3K0
WebSocket安全性分析
WebSocket 是HTML5一种新的网络传输协议,位于 OSI 模型的应用层,可在单个TCP连接上进行全双工通信。WebSocket 建议于 TCP 协议之上,与 HTTP 协议有良好的兼容性。协议标识符是ws;如果加密,则为wss。
FB客服
2023/08/08
3820
WebSocket安全性分析
web安全性浅析
能注入恶意的HTML/JavaScript代码到用户浏览的网页上,从而达到Cookie资料窃取、会话劫持、钓鱼欺骗等攻击。
ConardLi
2019/09/08
8240
php url安全性,allow_url_fopen潜在的安全性风险
PHP 的动态功能同时也是潜在安全性风险的,它会从网路上的任何位置主动撷取、接收及处理资料。 攻击者可能会试图传送恶意的资料和指令码,并欺骗您的服务器撷取恶意的指令码及执行它们。 攻击者也可能会试图读取和写入您服务器上的档案,以控制网站并利用网站实现自己的目的。
全栈程序员站长
2022/09/13
1K0
php url安全性,allow_url_fopen潜在的安全性风险
【java并发编程实战1】何为线程安全性线程安全性
多线程问题,一直是我们老生常谈的一个问题,在面试中也会被经常问到,如何去学习理解多线程,何为线程安全性,那么大家跟我的脚步一起来学习一下。
yukong
2018/09/03
8840
【java并发编程实战1】何为线程安全性线程安全性
线程安全性---面试题--i++的线程安全性问题
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。
wust小吴
2019/07/08
7500
在PHP中,cookie和session的使用
cookie简介 Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据。一般情况下,Cookie通过HTTP headers从服务端返回到客户端。多数web程序都支持Cookie的操作,因为Cookie是存在于HTTP的标头之中,所以必须在其他信息输出以前进行设置,类似于header函数的使用限制。 PHP工作原理:PHP通过setcookie函数进行Cookie的设置,任何从浏览器发回的Cookie,PHP都会自动的将他存储在$_COOKIE的全局变量之中,因此我们可以通
思梦php
2018/03/09
4K0
在PHP中,cookie和session的使用
Android P 安全性更新
Android P 引入了若干可提升应用和运行应用的设备安全性的功能。 本页面介绍对第三方应用开发者最重要的变化,需要他们牢记在心。
Android 开发者
2018/08/02
9760
Android P 安全性更新
android-密钥安全性
密钥安全性 将密钥分成不同的几段,有的存储在文件中、有的存储在代码中,最后将他们拼接起来。 用ndk开发,将密钥放在so文件,加密解密操作都在so文件里,这从一定程度上提高了的 安全性. 在so文件中不存储密钥,so文件中对密钥进行加解密操作,将密钥加密后的密钥命名为其 他普通文件,存放在assets目录下或者其他目录下,接着在so文件里面添加无关代码(花 指令)。 密钥存储与芯片底层,每次经过认证去获取密钥。
tea9
2022/09/08
8120
点击加载更多

相似问题

使用python在磁盘映像文件中特定位置编辑十六进制值

13

Python-十六进制编辑文件中的特定位置

20

在PHP中特定点编辑文件的十六进制?

31

编辑十六进制值的.txt文件

112

在python中编辑文件中的值

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文