Я запускаю скрипт python, который включает запуск фононного процесса «burnP6» на удаленной машине.Запустить фоновый процесс на удаленной машине с помощью python
Я пытался использовать ткань:
import fabric.api
fabric.api.execute(run_burnP6_bg, hosts=[remote_machine])
def run_burnP6_bg():
fabric.api.run("burnP6 &")
Кроме того, я попытался с помощью SSH -f с подпроцесса:
import subprocess
def cpu_load(receiver, load_percent='100', time_seconds='3'):
if 1<= load_percent and 100 >= load_percent:
cmd = 'ssh -f [email protected]{1} '.format(ip_addr) + "'burnP6 &'"
subprocess.call(cmd.split(' '))
elif 0 == load_percent:
# No load to be added
pass
Но оба они не работали. При запуске на удаленном сервере я не видел никакого процесса burnP6.
Есть что-то, что мне не хватает?
попробуйте 'fabric.api.run (" (nohup burnP6 &) ")'. Для supbrocess используйте 'shlex.split()', а не 'str.split()'. Я подозреваю, что ваша команда не анализируется, как ожидалось. Используйте '-l user', а не' @ '. Используйте «disown -a» и «nohup» для продолжения работы даже после того, как терминал, который он использует, закрыт. В общем, сначала проверьте свою команду ssh, прежде чем пытаться вставить ее в python/fabric. –
Спасибо. Ошибка заключалась в расщеплении. Мне нужно, чтобы мой список cmd был в форме: ['ssh', '-f', 'acelio', 'nohup burnP6 &'] – Akshya11235