簡體   English   中英

在Linux上無限期運行腳本的最可靠方法

[英]Most reliable way to run a script indefinitely on Linux

我必須設置一些Linux設備。 設置完成后,它們將位於遠程位置,我將無法將它們找回。 我正在使用樹莓派。 這些設備將運行多個腳本,這些腳本必須無限期工作數月或數年。 設備上運行的腳本:

  • 蟒蛇
  • 重擊(autossh)

到目前為止,我所做的是:

Cron工作

設備啟動時,將啟動bash腳本:

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

有bash腳本檢查Python腳本是否正在運行:

#!/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. 在較舊的系統上,您可以使用自定義軟件,例如daemontoolssupervisor

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM