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

如何在tmux终端中的特定时间运行python脚本?,python,terminal,cron,tmux,Python,Terminal,Cron,Tmux,我有一个python脚本,或者应该说是一个python服务,它需要每天下午3点运行。基本上,文件末尾有一个while True:time.sleep(1) 我绝对需要这个脚本在终端窗口中执行(因为我需要日志)。如果该解决方案能够在tmux窗口中运行,则可获得额外奖励 我尝试了cron作业,但不知道如何将其放入终端。我建议使用cron并使用tee命令记录结果。您的crontab如下所示: 0 15 * * * python yourScript.py | tee –a logFile.tx

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

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


我尝试了cron作业,但不知道如何将其放入终端。

我建议使用cron并使用
tee
命令记录结果。您的crontab如下所示:

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

好吧,我明白你的意思了。我过去也做过类似的事情

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

0 15 * * *     python yourScript.py | tee –a logFile.txt
0 15***命令>>日志
#只记录标准输出

0 15***命令&>>log
#同时记录stdout和stderr

如果你想把它放在航站楼里,我可以考虑两种可能性:

  • 正如您所说,您可以执行
    while true
    循环,每
    n
    秒检查一次时间,并在下午3点做一些事情

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


就个人而言,我也喜欢使用
tmux
screen
登录查看发生了什么,而不仅仅是查看日志文件。因此,我希望您为您的用例找到一个可行的解决方案

如上所述,将输出重定向到文件的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

谢谢大家的回答。我使用cron作业和bash脚本来编写TMUX脚本

诸如此类:

#!/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

您是否需要将日志保存在实时终端中?或者,如果只将日志写入日志文件(比如终端输出的存储版本),也可以吗?如果是这样的话,那么我可以向您展示一个使用cron作业的解决方案,这可能就是我解决这个问题的方法。我们同时记录标准输出和文件,但这是两个具有不同规则的不同日志格式化程序。要在终端中精确地跟踪我们想要的文件并不容易。所以,是的,我们基本上需要现场终端解决方案。我仍然对您的解决方案感兴趣,谢谢:)