gpt4 book ai didi

python - 在 Linux 上无限期运行脚本的最可靠方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:21 25 4
gpt4 key购买 nike

我有一些 Linux 设备需要设置。设置完成后,它们将位于远程位置,我将无法取回它们。我正在使用树莓派。这些设备将运行多个脚本,这些脚本必须无限期地工作数月或数年。在设备上运行的脚本:

  • python
  • bash (autossh)

到目前为止我做了什么:

定时任务

当设备启动时,会启动一个 bash 脚本:

@reboot sudo bash /home/user/Python/Python_bash_1.sh

有检查 Python 脚本是否正在运行的 bash 脚本:

#!/bin/bash
until python3 /home/user/Python/program_1.py; do
echo "'program_1.py' exit code $?. Program restarting.." >&2
sleep 1
done

Rc.local

另一种选择是使用 rc.local:

#SSH auto connection
autossh -M 10001 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /root/.ssh/rsa_rasp_dev_1 -R 6001:localhost:22 root@middle_ip_address -p 22 &
exit 0

使用 -f 选项和与号 (&) 效果很好。

经过一周的测试和几次重启后,它看起来很可靠,但我不知道它是否会持续数月或数年。

我的问题是:

在 crontab 和 rc.local 之间启动 bash 的最佳方式是什么?是否有其他方法可以检查脚本是否正在运行并在未运行时重新启动?

谢谢,

最佳答案

有专门的工具可以解决这个问题。

  1. upstart 或 systemd 等现代初始化系统捆绑了此功能:您只需定义在出现故障时应重新启动服务
  2. 在旧系统上,您可以使用自定义软件,例如 daemontoolssupervisord

关于python - 在 Linux 上无限期运行脚本的最可靠方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26673556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com