如何在tmux终端中的某个时间运行python脚本?

时间:2016-01-14 17:20:35

标签: python terminal cron tmux

我有一个python脚本,或者我应该说一个需要每天下午3点运行的python服务。基本上,文件末尾有一段时间为True:time.sleep(1)。

我绝对需要这个脚本在终端窗口中执行(因为我需要日志)。如果解决方案可以在tmux窗口中运行,则可以获得奖励。

我尝试过cron工作,但无法弄清楚如何把它放在终端。

4 个答案:

答案 0 :(得分:1)

我建议坚持使用cron并使用tee命令记录结果。你的crontab看起来像这样:

0 15 * * *     python yourScript.py | tee –a logFile.txt

答案 1 :(得分:1)

好的,我明白你在说什么。我过去做过类似的事情。

要让cron在下午3点运行你的脚本并附加到日志文件,你可以这样做:

0 15 * * * command >> log #just log stdout

0 15 * * * command &>> log#记录stdout和stderr

如果您想在终端中使用,我可以想到两种可能性:

  • 就像你说的那样,你可以做一个while true循环,每隔n秒检查一次,下午3点做一些事情。

  • 或者,您可以设置一个始终打开的API端点,并在下午3点由其他程序触发。例如,这可以由cron触发。

我个人也喜欢让tmuxscreen登录以查看发生了什么而不仅仅是检查日志文件。所以我希望你能为你的用例找到一个可行的解决方案!

答案 2 :(得分:0)

如上所述,将输出重定向到文件的cronjob可能是最简单的,但如果不可能,您希望保持进程运行,则可以将超时设置为第二天下午3点。

h_exec = 15
t_hour = 60 * 60
t_day = 24 * t_hour
t_now = time.time()
t_timeout = math.floor((t_now + ((24 - h_exec) * t_hour)) / t_day) * t_day + (h_exec * t_hour) - t_now

答案 3 :(得分:0)

感谢大家的答案。我使用了一个带有用于TMUX Scripting的bash脚本的cron作业。

类似的东西:

#!/bin/bash
tmux new-session -d -s example
tmux split-window -h
tmux select-pane -t 0
tmux send-keys './ex.sh' 'C-m'
tmux select-pane -t 1
tmux send-keys './ex1.sh'
tmux new-window -n 'a'
tmux send-keys 'cd a' 'C-m'
tmux select-window -t "example:0"
tmux select-pane -t 0
tmux -2 attach-session -t example