我有一个 python 脚本,上传到一个 24/7 的网络服务器上。我想自动化这个脚本,让它每小时自动运行一次。这可能吗?我遇到了 cron 工作的东西,但我不熟悉如何实现这一点。任何帮助或示例都会有所帮助。
2 回答
打开你的cron作业文件
crontab -e
添加这一行
* 0 * * * /path/to/my/script
我建议使用 bash 脚本或其他东西来检查进程是否已经在运行。
if [ `ps -u USERNAME | grep -i PROCESSNAME | wc -l` -lt 1 ]
then
nohup python main.py &
fi
编辑
键入命令crontab -e
,然后按回车键。你的屏幕会变黑,旁边有一堆~
'。按i
您现在处于插入模式。键入* 0 * * * /path/to/my/script
,确保这是脚本的绝对路径。按Esc
,然后键入:x
并按 Enter。那应该保存 cron 文件,这也假设vi
或者vim
是您的 cron 文件的默认编辑器。
旁注
还要确保您的脚本是可执行的,chmod 777 myscript.py
应该可以解决问题,但是请熟悉 chmod 和权限。
还要确保你#/python/version/to/use
的 python 文件的第一行是你的。
首先:问问自己数据是否应该是动态的而不是静态的。通过数据库或 cgi 脚本可能会更好地访问动态数据。
第二:稍微阅读一下说明书。crontab 是用于管理 cron 作业的程序。网络搜索可以为您提供更深入的信息(知道要击中哪个钉子是成功的一半)。man crontab 对计划没有太大帮助,但如果它没有按您的预期编辑文件,它可以提供有关程序的指示。
第三:通过执行'which python'来确定你的python从哪里运行并将描述符添加到文件的顶部。就我而言,它是 #!/usr/bin/python
第四:将您的 pyhton 脚本放在适当的位置,如果它足够重要并且您有权限,则可能是 /usr/local/sbin/。对文件使用 chmod 775 使您的文件可执行。运行该文件以确保它按预期执行。
第五:用crontab -e编辑cron作业表表如果不能自己运行,可以试试sudo下运行(即sudo crontab -e)。
第六:添加一行为 0 * * * * /myPath/myfile.py
每次分钟更改为 00 时都会运行。维基百科说 @hourly 应该可以工作,但我从未尝试过。
格式如下
* * * * * command to be executed
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ │
│ │ │ │ └───── day of week (0 - 6) (0 is Sunday)
│ │ │ └────────── month (1 - 12)
│ │ └─────────────── day of month (1 - 31)
│ └──────────────────── hour (0 - 23)
└───────────────────────── min (0 - 59)
第七:测试测试测试。
crontab -l 列出 cron 作业规范。
cron 执行时可能必须存在诸如 $PYTHONPATH 之类的环境变量。
如果 crontab 中有 6 个字段,则第一个字段可能是秒。
有一天你想记录 seomthing 的输出。阅读有关在 /var/logs 中创建日志文件目录以及如何使用 /etc/logrotate.d/ 文件管理它的信息。