我有一个python脚本,或者我应该说一个需要每天下午3点运行的python服务。基本上,文件末尾有一段时间为True:time.sleep(1)。
我绝对需要这个脚本在终端窗口中执行(因为我需要日志)。如果解决方案可以在tmux窗口中运行,则可以获得奖励。
我尝试过cron工作,但无法弄清楚如何把它放在终端。
答案 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触发。
我个人也喜欢让tmux
或screen
登录以查看发生了什么而不仅仅是检查日志文件。所以我希望你能为你的用例找到一个可行的解决方案!
答案 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