簡體   English   中英

在樹莓派中運行作業

[英]Run a job in a raspberry pi

我寫了一些簡單的 python 腳本,我想在我的樹莓派上運行它們,即使我沒有登錄。到目前為止,我可以通過 ssh 登錄到機器並運行腳本沒有問題。 一旦我必須斷開 ssh 會話,我就會注意到腳本中斷或停止。 因此,我想知道是否有辦法在 ssh 連接結束后保持腳本運行。

這是我正在使用的系統: Raspberry pi 3B+ with ubuntu 22.04 LTS ,這是我運行腳本的方式:

ssh xx@xxx.xxx.xxx.xxx
cd myapp/
python3 runapp.py

如果有辦法在 ssh 連接結束后保持腳本運行。

只需在后台運行它。

python3 runapp.py &

您可以將日志存儲到系統日志中。

python3 runapp.py | logger &

您可以了解screentmux虛擬終端,以便以后查看日志。 您可以啟動一個tmux會話,在里面運行命令並分離會話。

您可以使用該程序設置一個 systemd 服務文件,並以“作為服務”的方式運行。

您可以使用nohup來停止影響您的進程的掛斷信號。 以下是三種不同的方法。


這是一個“單次”命令,我的意思是你一次性輸入所有命令:

ssh SOMEHOST "cd SOMEWHERE && nohup python3 SOMESCRIPT &"

或者在這里,您登錄,更改目錄並在遠程主機中獲得新提示,運行一些命令,然后在某個時候退出ssh會話:

ssh SOMEHOST
cd SOMEWHERE
nohup python SOMESCRIPT &
exit

或者,這是另一個“單發” ,在您輸入EOF之前您不會得到另一個提示

ssh SOMEHOST <<EOF
cd SOMEWHERE
nohup python SOMESCRIPT &
EOF

如果 atd 正在運行,您可以使用at來安排在特定時間執行的命令。

例子:

$ echo "python3 /path/to/runapp.py"|at 11:00
job 10 at Fri Jun  3 11:00:00 2022

$ echo "python3 /path/to/runapp.py" | at now
job 11 at Thu Jun  2 19:57:00 2022

# after minutes/hours/days/....
$ echo "python3 /path/to/runapp.py" | at now +5 minutes
$ echo "python3 /path/to/runapp.py" | at now +2 hours


$ ssh user@host "echo 'python3 /path/to/runapp.py'| at now"

at創建的作業只執行一次。

暫無
暫無

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

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