bash - 通过 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
"
)
请原谅我的格式,这是为了清楚起见。
解决方案
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 &
推荐阅读
- java - 在spring拦截器中获取请求映射对象,获取实际的url字符串模式
- javascript - 从foreach循环(Opencart 3)按行ID发送数据
- python - builtins.UnboundLocalError:局部变量
- c# - TypeLoadException 通过 Web API Core 应用程序调用 .Net Framework 库时无法加载类型“WebConfigurationManager”
- javascript - 如何使 div 出现在选定的文本上?
- yaml - 如何使用 ruamel.yaml 抑制字符串的自动引用
- java - ArrayList 对象被最近的迭代覆盖
- html - HTTP 到 HTTPS 重定向不适用于 .htaccess
- http - golang中http请求中表单变量的嵌套值
- python - 用于启用/禁用 Symbol 条码扫描器的 USB/HID 命令