繁体   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