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

How to run a python script at a certain time in a tmux terminal?

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

我绝对需要这个脚本在终端中执行 window(因为我需要日志)。如果解决方案可以在 tmux window.

中 运行 ,则奖励

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

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

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

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

对于在下午 3 点 运行 您的脚本的 cron 并附加到日志文件,您可以像这样简单地执行此操作:

0 15 * * * command >> log # 只记录标准输出

0 15 * * * command &>> log # 记录标准输出和标准错误

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

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

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

就我个人而言,我也喜欢使用 tmuxscreen 登录以查看正在发生的事情而不是仅仅检查日志文件所带来的便利。所以我希望你能为你的用例找到一个可行的解决方案!

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

感谢大家的回答。我使用带有 bash 脚本的 cron 作业来进行 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