我试图让python脚本在启动时运行。我有以下文件:com.test.service.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.test.service</string>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>/var/www/html/app/appstart.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
复制到〜/ Library / LaunchAgents /
加载为
launchctl load -w ~/Library/LaunchAgents/com.test.service.plist
脚本有两行:
/usr/bin/python /var/www/html/app/app.py
echo "hello" >> /var/www/html/app/test.txt
脚本运行(文件test.txt使用&#39; hello&#39;创建) 但是,app.py无法运行。出于测试目的,我在app.py内做的就是:
import os
os.system("echo 'python' >> /var/www/html/app/test.txt")
如果我只是在终端运行appstart.sh,那么python运行没问题
我已经按照this question中的说明,但没有运气
答案 0 :(得分:1)
确保.plist文件是chmod 644。
你要求“在Mac启动时运行”和“在启动时运行”,它告诉我你在错误的目录中。 LaunchAgents用于在用户登录时运行脚本。 要在启动时运行,.plist文件需要位于/ Library / LaunchDaemons中并由root:wheel拥有。
如果您不需要shell来启动shell脚本来启动python,那么我建议使用一个快捷方式:
<add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
<add assembly="CrystalDecisions.ReportSource, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
<add assembly="CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
<add assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
<add assembly="CrystalDecisions.ReportAppServer.ClientDoc, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
答案 1 :(得分:1)
前段时间我用cron做到了这一点。你可以像这样输入
@reboot /path/to/my/script
我的脚本的路径将是appstart.sh文件的路径。
所以你打开你的终端。
您输入crontab -e
(这将在您的默认编辑器中打开一个文件,可能是nano)
向下滚动并在您键入@reboot /path/to/file
然后保存并退出。