gpt4 book ai didi

python - 使用 applescript (重新)启动 python 脚本

转载 作者:行者123 更新时间:2023-12-01 03:31:57 27 4
gpt4 key购买 nike

我有一个在无限循环中运行的 Python 脚本(它是一个服务器)。

我想编写一个AppleScript,如果该脚本尚未启动,它将启动该脚本,否则强制退出并重新启动它。这将使我在编程时轻松更改服务器代码。

目前我只知道如何启动它:do shell script "python server.py"

最佳答案

请注意 AppleScript 的 do shell script默认情况下,在 root 目录 ( /bin/sh ) 中启动 shell ( / ),因此您应该指定到 server.py 的显式路径

在下面的示例中,我将假设目录路径 ~/srv .

这是 shell 命令:

pid=$(pgrep -fx 'python .*/server\.py'); [ "$pid" ] && kill -9 $pid; python ~/srv/server.py

作为 AppleScript 语句,包含在 do shell script 中- 请注意\ -逃脱的内心"\字符:

do shell script "pid=$(pgrep -fx 'python .*/server\\.py'); [ \"$pid\" ] && kill -9 $pid; python ~/srv/server.py"
  • pgrep -fx '^python .*/server\.py$'使用pgrep通过正则表达式针对完整命令行 ( -f ) 查找正在运行的命令,需要完全匹配 ( -x ),并返回 PID(进程 ID)(如果有)。

    • 请注意,我使用了更抽象的正则表达式来强调 pgrep (始终)将其搜索词视为正则表达式。
      要将完整的启动命令行指定为正则表达式,请使用 python ~/srv/server\.py - 请注意\ -逃逸.以实现完全的鲁棒性。
  • [ "$pid" ] && kill -9 $pid如果找到 PID,则终止进程([ "$pid" ][ -n "$pid" ] 的缩写,并且仅当 $pid 非空时评估为 true); -9发送信号SIGKILL ,强制终止进程。

  • python ~/srv/server.py然后(重新)启动您的服务器。

关于python - 使用 applescript (重新)启动 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40874607/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com