运行 raspberry pi 中的一份工作
Run a job in a raspberry pi
我写了一些简单的 python 脚本,我想 运行 在我的 raspberry pi 上使用它们,即使我没有登录。到目前为止,我可以登录到通过 ssh 和 运行 脚本的机器没有问题。一旦我必须断开 ssh 会话,我注意到脚本中断或停止。因此,我想知道是否有办法在 ssh 连接结束后保留脚本 运行ning。
这是我正在使用的系统:Raspberry pi 3B+ with ubuntu 22.04 LTS
,这是我如何 运行 我的脚本:
ssh xx@xxx.xxx.xxx.xxx
cd myapp/
python3 runapp.py
if there is a way to keep the script running after the end of the ssh connection.
只是 运行 它在后台。
python3 runapp.py &
您可以将日志存储到系统日志中。
python3 runapp.py | logger &
您可以了解 screen
和 tmux
虚拟终端,以便稍后查看日志。您可以启动一个 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
创建的作业仅执行一次。
我写了一些简单的 python 脚本,我想 运行 在我的 raspberry pi 上使用它们,即使我没有登录。到目前为止,我可以登录到通过 ssh 和 运行 脚本的机器没有问题。一旦我必须断开 ssh 会话,我注意到脚本中断或停止。因此,我想知道是否有办法在 ssh 连接结束后保留脚本 运行ning。
这是我正在使用的系统:Raspberry pi 3B+ with ubuntu 22.04 LTS
,这是我如何 运行 我的脚本:
ssh xx@xxx.xxx.xxx.xxx
cd myapp/
python3 runapp.py
if there is a way to keep the script running after the end of the ssh connection.
只是 运行 它在后台。
python3 runapp.py &
您可以将日志存储到系统日志中。
python3 runapp.py | logger &
您可以了解 screen
和 tmux
虚拟终端,以便稍后查看日志。您可以启动一个 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
创建的作业仅执行一次。