在 Raspberry Pi 上独立运行脚本

在 Raspberry Pi 上独立运行脚本

我有几个 python 程序,例如一个检查 Collat​​z 猜想是否适用于给定数字的程序,并将输出写入文件(它在 Raspberry Pi 上运行)。

虽然我知道它还没有被证明是错误的,比如一千万亿,但我只是想运行它来进行编程练习。虽然我可以将其设置为在 RPi 启动时启动,并通过 ssh 会话启动它,但我使用 Pi 的主要原因是它可以达到 10 亿这样的数字,同时即使性能不实用也不会消耗太多电量。

当我通过键入 SSH 会话启动它时python col.py,如果我终止会话,它会停止运行。如何使用 SSH 启动脚本,以便它在我终止会话时不会停止(继续运行直到结束或 RPi 关闭)?

答案1

实际上有几种方法可以做到这一点。

我问自己的第一个问题是“我稍后需要查看/交互这个任务吗?”

如果是的话,我会用屏幕或者tmux—这是一个例子htop——ctrl a分离d一个屏幕会话并screen -r重新连接它。分离的屏幕会话即使在您关闭终端后仍可工作,但我太懒了,在这里不想这么做。

在此处输入图片描述

否则我会nohup python col.py &只在后台运行该任务。

答案2

使用screen很好,但是nohup&也应该可以工作。

因此,对于你的情况,只需运行如下命令:

nohup python col.py &

为了让您了解每个项目的工作原理:

  • nohup:它代表“不挂断”,这意味着即使您的终端会话断开连接,连接到该nohup命令的进程仍将继续运行。
  • &:此上下文中的 “&” 符号告诉 shell 将其前面的命令作为后台进程运行。

如果你只是运行这个:

nohup python col.py

python col.py会运行,但不是作为后台进程;它会作为前台进程将你锁定在终端中。如果你运行这个:

python col.py &

它将python col.py在后台运行,但您注销后python col.py命令将终止。

执行nohup&组合是将无人值守任务作为独立后台进程运行的最简单、最常用的方法。

相关内容