取消并重新启动某个例程(python 脚本)

取消并重新启动某个例程(python 脚本)

我对我运行的一个程序有疑问。每隔一段时间,我就需要重新启动某个程序。

对于这种情况,我通常会运行:

screen ./run.sh arg1 arg2 "arg3" (屏幕,因为我不知道是否还有其他方法可以将某些东西放在背景中 - 但那是另一回事。)

因此,我认为我可以添加一个 cronjob(通过crontab -e)来运行此程序(但是我需要一个 bash 脚本吗?) - 但我不知道如何停止该过程。现在,我在重新连接分离的会话后通过CTRL+取消它。C

我正在考虑kill这样做,但启动程序时我不知道进程 ID。有人能帮我吗?我正在使用 Ubuntu 12.04。

总结

启动进程

等待 6 分钟

停止该过程,

(重新)启动该过程 (...)

谢谢

答案1

如果您不反对bash解决方案,这里有一个脚本可以执行您概述的操作。它可以添加/etc/rc.local到每次启动时运行。只需bash /path/to/script &从内部调用它即可/etc/rc.local

#!/bin/bash

while true
do
    screen ./run.sh arg1 arg2 "arg3" & # start in background
    CMDPID=$! # get pid of that command
    TIME=$( date +%s  ) # get timestamp

    # next while loop just keeps checking time
    # We don't want to block up CPU with 
    # continuous sleep command
    while [ $(date +%s) -lt $(($TIME+360)) ];
    do  
      sleep 0.25
    done
    kill -TERM $CMDPID # kill that process

    # return to the top and repeat the procedure    
done

相关内容