在Raspberry Pi上独立运行脚本


1

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

虽然我知道它还没有被证明像是一个千万亿或者其他东西,但我只是想把它用于编程实践。虽然我可以将其设置为在RPi启动时启动,并通过ssh会话启动,但我使用Pi的主要原因是它可以达到10亿等数字,而即使性能也不会消耗太多功率不切合实际。

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


Answers:


1

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

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

如果是的话,我会用 屏幕 要么 TMUX - 这是一个例子 htop - CTRL 一个 - d 分离屏幕会话和 screen -r 重新安排它。即使你关闭了终端后,一个独立的屏幕会话仍然可以工作,但我在这里做得太懒了。

enter image description here

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


我将使用nohup,因为它会让我将终端输出重定向到一个文件,并在会话终止后运行良好。 TY
poiasd

“否则我会使用nohup python col.py来在后台运行任务” nohup 只是代表“没有挂断”。那个 - 本身 - 不会将过程设置为后台进程。有关详细信息,请参阅我的回答 nohup / & 方法。
JakeGould

......哎呀是的,需要&那不是我吗?我曾是 显著 更专注于使用屏幕; p
Journeyman Geek

@JourneymanGeek我不介意 screen 但发现它的实际用途非常特殊。十分之九, nohup / & 效果很好,可以在大多数系统上完成工作。
JakeGould

5

运用 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& combo是将无人参与任务作为独立后台进程运行的最简单,最常用的方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.