在 macOS Big Sur 上后台运行 Python 脚本

在 macOS Big Sur 上后台运行 Python 脚本

我想使用 cron 作业来运行涉及 python 脚本的任务。

该任务的 bash 脚本如下所示:

#!/bin/bash

...
python ./script.py &
...

通过 crontab 调用如下:

* 8 * * * ./task.sh

这完全满足我的需求,但当这个讨厌的图标出现在 Dock 中并窃取当前输入设备焦点时,它会中断我在任务触发时可能正在输入的任何内容。

屏幕截图:Python 图标

有没有办法告诉 python 在后台运行,类似于python script.py通过 Terminal.app 运行命令?

编辑:看起来 Matplotlib 是罪魁祸首。https://github.com/matplotlib/matplotlib/issues/12918/从 CLI 运行时使用matplotlib.use("Agg")禁用交互式环境可以避免出现此问题。

答案1

这不是您的问题的答案,但我无法在评论中添加这个细节,因此在这里添加,也许它会帮助您进行一些调试......

我每晚都会运行一个 Perl 脚本(将一个磁盘备份到另一个磁盘),但我从未见过这种行为。我只是修改了 cron 以在我观看时运行,而我没有在 Perl 脚本中看到这种情况。

因此,我再次尝试使用这些 Bash 和 Python 脚本:

#!/bin/bash

echo Starting Bash...
python3 /Users/jim/Documents/scripts/hello.py &
sleep 3
echo Ending Bash...

#!/usr/bin/env python3

import time

print ("Hello, world!\n")
time.sleep(60)
print ("Goodnight, moon!\n")

还有一个 cron 任务:

04  *   *   *   *   /Users/jim/Documents/scripts/hello.sh >> ~/Library/Logs/test.log 2>&1

我不明白您显示的行为。Python(或 Perl)没有停靠图标,事实上,我几乎从未见过像这样的常规 Unix 可执行文件停靠图标出现。

如果右键单击/按住 Ctrl 键单击 Python 图标并选择“选项”->“在 Finder 中显示”,将调用哪个 Python?它与手动运行脚本时调用的 Python 不同吗?

相关内容