在crontab -e
我会制作一个bash脚本,还是可以将它全部放在一行中
00 00 * * * /home/www/ source env/bin/activate pip install --upgrade <package>
或者我必须像
那样做一些事情update.sh
#!/bin/sh
cd /home/www
source env/bin/activate
pip install --upgrade <package>
然后像这样运行cron
00 00 * * * bash /path/to/update.sh
答案 0 :(得分:1)
你可以这样做,但你也需要在cron命令中使用cd
:
00 00 * * * cd /home/www/ && source env/bin/activate && pip install --upgrade <package>
&&
就在那里,所以如果前一部分没有成功,命令就不会运行。您的脚本也应该在第一个错误上停止,如下所示:
#!/usr/bin/env bash
set -e
cd /home/www
source env/bin/activate
pip install --upgrade <package>
由于您标记了问题bash
,我冒昧地确保您的代码实际运行在bash
下,而不是其他shell。顶部的set -e
告诉bash停止第一个错误,而不是盲目地继续并且可能搞砸了。你写的每个脚本都应该从它开始。