【发布时间】:2015-11-24 00:00:58
【问题描述】:
我编写了一个小脚本,每 5 分钟执行一次任务(这并不一定要准确),但由于它是目前编写的,唯一可以取消的方法是使用 Ctrl+Z(Linux 终端)并且如果不重新启动脚本,就无法更改它执行的任务集。
因此,我想更改脚本以便能够接受用户输入等待进行下一次运行,而不会大量中断 5 分钟计时器(如杀死脚本和当前重新启动),但我不知道如何让raw input 只接受给定时间的值等。当前代码也是用 Python 2.7 编写的,但我很高兴转换为3 如果这使解决方案更容易。
当前代码如下所示:
# Setup for the tasks
while(True):
# Do the tasks
for i in range(5):
print "Next run in " + str(5-i) + " mins"
time.sleep(60)
有什么想法吗?
更新:这个问题没有导致发布特定的代码解决方案,所以这里有一个指向 a later question 的链接,它有一个我实施的解决方案的简单版本(以及它需要它工作的一个简单的编辑在答案中)/
【问题讨论】:
-
您使用的是无限循环,因此使用 ctrl+z 退出很明显,不是吗?你能澄清一下你的问题吗?
-
@ThomasLee 谢谢,我之前似乎找不到任何东西,但您链接到的解决方案应该可以工作。
-
@AhsanulHaque 并非如此,让程序在给定的用户输入(例如在空白行上按 Enter)优雅地退出比强制终止进程要好得多。此外,我希望能够在
wait期间输入输入,以更改脚本在每次迭代中执行的任务集,正如我在问题中提到的那样。 -
注意:Bash 中的 Ctrl-Z 不会杀死进程 - 它会挂起它并将其发送到后台。您可以使用
jobs命令查看当前暂停的作业列表,并使用fgjob_spec 恢复暂停作业的执行;如果只有一个当前暂停的作业,您可以省略 job_spec 编号。在 Bash shell 中键入help jobs、help bg和help bg以获取更多信息。 -
@PM2Ring 是的,我只是不假思索地快速打字。不过,准确点很好,所以感谢您的更正。