我有一个在启动时在后台运行的python脚本。启动方法是run.sh文件中的一个条目,该文件由/etc/rc.local调用。确切的输入将是“ sudo
python /home/pi/run/main.py&”。该系统是带有微调的树莓派。
该脚本正在运行,到目前为止没有问题。如果将关闭命令发送到系统(通过控制台“ sudo shutdown -h
now”),我还需要该脚本不要立即终止,而是先执行一些代码。那就是我到目前为止所得到的:
#!/usr/bin/env python
import atexit
@atexit.register
def byebye():
c = "End"
datei = open("/home/pi/logfile",'a+b')
datei.write(c + "\n")
datei.close()
def main():
while True:
...do anything...
main()
现在,它似乎仅在关闭时退出主循环。我是否需要使用其他方法关闭系统,以便将信号传输到我的脚本,或者我可能无法使用“ @atexit”方法?有任何想法吗?
谢谢
shutdown
发送不处理的SIGTERM
信号atexit
。上下文管理器,finally
块等也不会。
import signal
signal.getsignal(signal.SIGTERM)
Out[64]: 0 #i.e. nothing
与此相反,例如ctrl-C:
signal.getsignal(signal.SIGINT)
Out[65]: <function signal.default_int_handler> #i.e. something
您可以向其注册byebye
函数signal
以运行而不是不执行任何操作(这将导致解释器最终被shell杀死)
signal.signal(signal.SIGTERM,byebye)
如果执行上述操作,则需要做两件事:
byebye
以接受signal
将传递给它的两个参数。sys.exit()
在byebye
函数末尾执行类似call的操作,以允许python正常关闭商店。 您也可以将signal
和 进行某种组合atexit
:
import sys
signal.signal(signal.SIGTERM, lambda num, frame: sys.exit(0))
它将直接插入您当前的代码。这样可以确保清理操作的原子性(即byebye
保证是最后的I / O操作),但会有些笨拙。
我想执行我开发的三个python脚本。我发现了一个疑问,我怎么能使用python脚本呢? 我想把它转换成一个。因为我们的解决方案被认为是在没有安装python的机器上执行的,所以有一个独特的脚本会很有帮助。 编辑:我不知道我的老问题结束的原因,我知道如何使用pyinstaller,我的问题是如何使用python脚本执行3 python,或者如果可能的话。请,如果你要结束一个问题,请确保该问题是重复
问题内容: 我有一个 包含特定日期和时间 的 文本文件。 我希望能够 在该文件中指定的时间运行脚本。 您将如何实现?创建另一个在后台运行的脚本(有点像守护进程),并每秒检查当前时间是否与文件中的时间匹配?还有另一种方法吗?该机是 linux服务器,Debian wheezy。提前致谢 问题答案: 请看以下内容: 该代码行在特定时间执行“ ls -l”。这是在特定时间执行某些操作(在我的示例中为命令
我正在尝试开始python web编程,但我有一个问题。我想与CGI合作,我在pc(Linux)上安装了Ampps web服务器。根据本说明,Apache教程:使用CGI的动态内容。我把我的文件索引。pl位于文件夹“/usr/local/ampps/www/cgi-bin”中,并尝试访问它 以下是我的文件代码: 但这给了我一个错误对不起,你正在寻找的页面目前不可用。 这是Apache的错误日志:
问题内容: 我有一个在Linux上运行的Python(3)脚本,称为主脚本,该脚本必须从专有DLL调用例程。到目前为止,我已经使用Wine使用以下结构解决了这个问题: 脚本 dll_call.py 由Wine下安装的Windows Python(3)解释器执行。它将返回值转储到一个文件中,然后由等待的主脚本拾取该文件。如果我必须连续执行几次,它不是完全可靠且令人痛苦的缓慢。 我想一次启动脚本 dl
问题内容: 我想编写一个python脚本,它将上载我在Windows资源管理器中选择的任何文件。这个想法是在Windows资源管理器中选择任何文件,右键单击以显示文件的上下文菜单,然后从中选择一个命令,例如“上传到Web服务器”。 选择命令后,Python运行脚本来接收文件路径和要上传的文件的文件名。编写将文件上传到Web的Python脚本似乎很简单。还不清楚如何在Windows上下文菜单中为Py
问题内容: 我有一个脚本,可以创建网站并动态打印一些数据。-打印的数据应来自另一个python脚本。 我目前面临的问题是,如果我将执行python脚本的行放在执行应用程序的行之前,它将运行Python脚本而不运行;反之亦然。 Python脚本: Flask脚本(注意:价格应为其他脚本的“解析”变量): 问题答案: 使用: 将python脚本(例如)生成的内容包装到函数中。 将其放置在与或相同的目录
问题内容: 我不知道应该把我的Spider代码放在哪里以及如何从main函数中调用它。请帮忙。这是示例代码: 问题答案: 所有其他答案均参考Scrapyv0.x。根据更新的文档,Scrapy 1.0要求:
这是我第一次在java中尝试python。我试图从我的代码中执行python脚本,如下所示。 但我有以下例外 无法运行程序“python”:CreateProcess error=2,系统找不到指定的文件 我已经安装了python。我不确定为什么找不到该文件。我试着跟随这个链接,但它并没有解决我的问题。 提前谢谢。 编辑1 我尝试了“Viacheslav Vedenin”给出的示例代码,当我执行我