Python3 从另一个脚本重新启动一个脚本
Python3 restart a script from another script
情况是这样的:
我在 python 运行 中有 2 个脚本,在 Linux 中有 2 个不同的 shell:
1° - python3 server.py
2° - python3 roomcontrol.py
我需要用户可以从 server.py 重新启动 roomcontrol.py。
我尝试使用子流程:
from subprocess import call
dir = os.path.dirname(os.path.realpath(__file__)) + "/roomcontrol.py"
call(["python3",dir])
这些指令只是在"server.py"的shell中开始一个新的"roomcontrol.py"的实例,我需要在他的shell中重新启动roomcontrol.py。或者关闭他的 shell 并打开一个新的
编辑:
我也试过:
import subprocess
dir = os.path.dirname(os.path.realpath(__file__)) + "/roomcontrol.py"
subprocess.Popen([dir], stdout=subprocess.PIPE, shell=True)
没用。
它在 server.py 的 shell 中写了很多东西,我的光标变成了十字,如果我点击某个地方,它会像以前一样写东西。它写的一个小例子:
import: unable to grab mouse `': Resource temporarily unavailable @ error/xwindow.c/XSelectWindow/9199.
import: unable to grab mouse `': Resource temporarily unavailable @ error/xwindow.c/XSelectWindow/9199.
.
.
.
from: can't read /var/mail/xml.dom
/home/stark/Desktop/TrackingOk/Release/roomcontrol.py: 9: /home/stark/Desktop/Tr: not foundlease/roomcontrol.py:
/home/stark/Desktop/TrackingOk/Release/roomcontrol.py: 10: /home/stark/Desktop/T: not foundelease/roomcontrol.py: try:
创建一个新的 .sh 文件(例如"restart.sh"):
#!/bin/bash
kill $(pgrep -f 'python3 roomcontrol.py')
python3 roomcontrol.py &
然后打电话
os.system('./restart.sh')
在您的 "server.py" 脚本中的某处。
PS:您必须通过 运行 以下命令使 .sh 文件可执行:
chmod +x restart.sh
编辑: 我不确定如何从不同的 shell 启动进程,但您可以在另一个终端 "roomcontrol.py" window 使用以下 (bash) 命令:
gnome-terminal -x sh -c 'python3 roomcontrol.py'
但是你必须将 "restart.sh" 替换为
#!/bin/bash
kill -9 $(pgrep -f 'sh -c python3 roomcontrol.py')
gnome-terminal -x sh -c 'python3 roomcontrol.py'
情况是这样的:
我在 python 运行 中有 2 个脚本,在 Linux 中有 2 个不同的 shell: 1° - python3 server.py 2° - python3 roomcontrol.py
我需要用户可以从 server.py 重新启动 roomcontrol.py。 我尝试使用子流程:
from subprocess import call
dir = os.path.dirname(os.path.realpath(__file__)) + "/roomcontrol.py"
call(["python3",dir])
这些指令只是在"server.py"的shell中开始一个新的"roomcontrol.py"的实例,我需要在他的shell中重新启动roomcontrol.py。或者关闭他的 shell 并打开一个新的
编辑:
我也试过:
import subprocess
dir = os.path.dirname(os.path.realpath(__file__)) + "/roomcontrol.py"
subprocess.Popen([dir], stdout=subprocess.PIPE, shell=True)
没用。 它在 server.py 的 shell 中写了很多东西,我的光标变成了十字,如果我点击某个地方,它会像以前一样写东西。它写的一个小例子:
import: unable to grab mouse `': Resource temporarily unavailable @ error/xwindow.c/XSelectWindow/9199.
import: unable to grab mouse `': Resource temporarily unavailable @ error/xwindow.c/XSelectWindow/9199.
.
.
.
from: can't read /var/mail/xml.dom
/home/stark/Desktop/TrackingOk/Release/roomcontrol.py: 9: /home/stark/Desktop/Tr: not foundlease/roomcontrol.py:
/home/stark/Desktop/TrackingOk/Release/roomcontrol.py: 10: /home/stark/Desktop/T: not foundelease/roomcontrol.py: try:
创建一个新的 .sh 文件(例如"restart.sh"):
#!/bin/bash
kill $(pgrep -f 'python3 roomcontrol.py')
python3 roomcontrol.py &
然后打电话
os.system('./restart.sh')
在您的 "server.py" 脚本中的某处。
PS:您必须通过 运行 以下命令使 .sh 文件可执行:
chmod +x restart.sh
编辑: 我不确定如何从不同的 shell 启动进程,但您可以在另一个终端 "roomcontrol.py" window 使用以下 (bash) 命令:
gnome-terminal -x sh -c 'python3 roomcontrol.py'
但是你必须将 "restart.sh" 替换为
#!/bin/bash
kill -9 $(pgrep -f 'sh -c python3 roomcontrol.py')
gnome-terminal -x sh -c 'python3 roomcontrol.py'