首页 > 解决方案 > 通过 Bash 脚本远程执行和取消进程?

问题描述

我在 Raspberry Pi 上执行了一个 Python 程序,但是我通过 SSH 执行它。我想编写一个简单的 Bash 脚本,允许我双击它并执行启动,其中包括:SSH 进入 Pi,cd 进入目录,执行 python 文件并发送到后台,然后使用disown -h能够让它运行时不依赖于保持 SSH 连接。为了简单起见,我使用 sshpass,这是我目前所拥有的,但是在运行它时,终端冻结,进程运行,但是我知道我的程序没有启动。我尝试过的有什么问题,我该如何实现我的目标?

#!/bin/bash

$(
sshpass -p [MyPass] ssh pi@[MyIP]
"
cd Documents/MyProgram/;
python3 myFile.py &;
disown -h
"
)

请原谅我的格式,这是为了清楚起见。

标签: bashshell

解决方案


sshpass 可能会挂起密码验证。最安全的方法是使用ssh-copy-id将私钥复制到远程主机,然后使用普通ssh命令通过 ssh 无密码登录:

ssh-keygen
ssh-copy-id user@host

然后只需使用ssh

ssh user@host "nohup python3 myFile.py 2>&1 > /dev/null &;exit;"

你可以使用nohup

nohup python3 myFile.py 2>&1 > /dev/null &

推荐阅读