当前位置: 首页 > 知识库问答 >
问题:

Python:关机前在脚本中反应

朱鹤轩
2023-03-14

我有一个python-script,它在引导时作为收集测量数据的cronwork启动:@reboot python /path/to/my_script.py

Linux每天在特定时间以cronwork的形式重启:57 23 * * * sudo reboot

在重新启动时,我仍然有尚未保存的测量数据,需要传输到可能需要几秒钟的网站。据我所知,重新启动或关闭命令会为优雅地关闭提供一些预先警告,但是我还没有找到一种方法来捕捉它。到目前为止,我一直在试验信号。SIGTERM,信号。SIGHUP但这些不会切断它,也不会对关闭命令做出反应。同样尝试nohup也没有产生预期的结果。

关于如何在Python脚本中检测关机前的时间,有什么建议吗?干杯Yeu ol\u man

共有1个答案

金骞尧
2023-03-14

到目前为止,我尝试了几种方法,试图在cronjob的脚本上检测关机本身并没有真正产生任何积极的结果。为了检测停机,我现在找到了以下可行的解决方法:

  • 工作脚本是否正常启动RPi的引导
  • 在worker脚本中检测USER1信号
  • 当检测到USE1信号时,工作脚本进入关闭状态
  • 我不只是在crontab中重新启动,而是启动一个单独的python脚本,检测工作脚本的PID并发送USR1信号
import os
import signal
import sys

search_file=sys.argv[1] #name of the script which should be searched for
print(search_file)

output=os.popen('pgrep -f ' + search_file)
my_pid=output.read()
line_pos=my_pid.find('\n') # two PIDs are detected, target-PID and PID of this script
my_pid=int(my_pid[:line_pos]) #first PID is target-PID
print(my_pid)
os.kill(my_pid, signal.SIGUSR1) # os.kill sends the various signals, e.g. SIGUSR1 to PID

这不是最初想要的,但工作。8o)

 类似资料:
  • 本文向大家介绍python定时关机小脚本,包括了python定时关机小脚本的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python定时关机的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 我想在Python脚本的输出中包括当前的git哈希(作为生成该输出的代码的 版本号 )。 如何在Python脚本中访问当前的git哈希? 问题答案: 该命令是创建代码的人为表示的“版本号”的好方法。从文档中的示例中: 使用git.git之类的当前树,我得到: 即我的“父”分支的当前头基于v1.0.4,但是由于它的顶部还有一些提交,describe添加了额外的提交数量(“ 14”)和该提

  • 问题内容: 每次执行脚本时,我都试图编写一个小的脚本来挂载VirtualBox共享文件夹。我想用Python来做,因为我正在尝试学习它的脚本。 问题是我需要特权才能启动安装命令。我可以将脚本作为sudo运行,但是我更喜欢它自己制作sudo。 我已经知道将密码写入.py文件并不安全,但是我们谈论的是根本不重要的虚拟机:我只想单击.py脚本并使它工作。 这是我的尝试: 我的python版本是2.6 问

  • 问题内容: 我正在将csh脚本转换为python脚本。该脚本调用一个占用大量内存的可执行文件,该文件需要非常大的堆栈,因此csh脚本将stacksize设置为无限制: 当我尝试在python中重现此脚本时,我会使用,以非常幼稚的方式执行它们,例如: 但是我不知道如何告诉操作系统以不受限制的堆栈大小运行这些可执行文件。有没有办法为python脚本中的调用指定stacksize?我应该使用一些底层系统

  • 我想执行我开发的三个python脚本。我发现了一个疑问,我怎么能使用python脚本呢? 我想把它转换成一个。因为我们的解决方案被认为是在没有安装python的机器上执行的,所以有一个独特的脚本会很有帮助。 编辑:我不知道我的老问题结束的原因,我知道如何使用pyinstaller,我的问题是如何使用python脚本执行3 python,或者如果可能的话。请,如果你要结束一个问题,请确保该问题是重复

  • 问题内容: 我想检测python是否安装在Linux系统上,如果安装了python版本。 我该怎么做?是否有比解析输出更优雅的东西? 问题答案: 您可以按照以下方式使用: 元组记录在这里。您可以展开上面的Python代码,以适合您需求的方式格式化版本号,或者对它执行检查。 您需要检入脚本来处理未找到脚本的情况。 PS:我使用的语法有点奇怪,以确保与Python 2.x和3.x兼容。