我试图在一个调用shell脚本的docker容器中运行一个cronjob.
昨天我一直在网上搜索和堆栈溢出,但我真的找不到一个有效的解决方案.
我怎样才能做到这一点?
编辑:
我创建了一个(注释的)github存储库,其中包含一个工作的docker cron容器,它以给定的时间间隔调用shell脚本.
我在根目录下运行的crontab作业很少,但这给我带来了一些问题.例如,在该cron作业的过程中创建的所有文件夹都在用户root和组root下.如何让它在用户www-data和组www-data下运行,所以当我从我的网站运行脚本时,我可以操作那些文件夹和文件?
我的服务器在Ubuntu上运行.
当前的crontab作业是:
*/1 * * * * php5 /var/www/web/includes/crontab/queue_process.php >> /var/www/web/includes/crontab/queue.log 2>&1
Run Code Online (Sandbox Code Playgroud) 我正试图让cron调用正确的PATH.当我从shell运行Python脚本时,脚本运行正常,因为它使用了bashrc中设置的PATH,但是当我使用cron时,所有的PATH都没有在bashrc中使用.有没有一个文件我可以输入PATHs为cron像bashrc或从bashrc调用PATHs的方法?
对不起我不认为我说的正确,我可以得到正确的脚本运行(意味着crontab中脚本的PATH不是问题),只是当脚本运行时我运行一个构建,这使用了PATHs设置.bashrc.当我登录时运行脚本时,.bashrcPATH会被拉入.由于cron不会在shell中运行,因为它不会拉入.bashrc.有没有办法在不必编写bash脚本包装的情况下将其拉入?
我正在尝试使用linux crontab执行python脚本,但我找到了很多解决方案,但没有一个能够正常工作.例如:在/etc/cron.d编辑anacron或使用crontab -e.
我想每10分钟运行一次这个脚本.
我必须编辑哪个文件来配置它?
提前致谢
编辑
我把这一行放在文件的末尾,但它不会改变任何东西.我必须重新启动任何服务吗?
*/2 * * * * /usr/bin/python /home/souza/Documets/Listener/listener.py
Run Code Online (Sandbox Code Playgroud)
编辑[2]
伙计们,我已经遵循了源代码.这里可能有问题,但是当我手动执行它时,它可以工作:
我的python脚本没有在我的crontab下运行.
我把它放在顶部的python脚本中:
crontab -e
我试过这样做:
myscript.py
添加到我的crontab -e:
#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
我的/ var/log/cron文件说:
/usr/bin/python
但是我的脚本没有运行,因为当我检查我的sql数据库时,没有任何改变.如果我直接在终端中运行它,如下所示:
/home/me/project/myscript.py
我得到了正确的结果.
这是myscript.py:
chmod a+x myscript.py
Run Code Online (Sandbox Code Playgroud)
编辑:每条评论:是的,/usr/bin/python /home/me/project/myscript.py存在.我也可以使用just直接运行python脚本crontab -e.myscript.py作品.所以我不相信这是原因?
如何在这里用bash脚本运行一个cron.我做了如下操作,这里有错误.我想知道如何在ubuntu中做到这一点.我现在被它击中了
bash.sh文件
#!/bin/bash
cd /var/www/Controller
/usr/bin/php post.php
Run Code Online (Sandbox Code Playgroud)
在crontab -e
* * * * * /home/samitha/bash.sh >> /home/samitha/log/cron.log 2>&1
Run Code Online (Sandbox Code Playgroud)
但现在我得到了跟随错误
/bin/sh: 1: /home/samitha/bash.sh: Permission denied
Run Code Online (Sandbox Code Playgroud)
我该如何解决?我做错了什么?
我有一个cron问题curl:
curl -w "%{time_total}\n" -o /dev/null -s http://myurl.com >> ~/log
Run Code Online (Sandbox Code Playgroud)
效果很好,并在日志文件中添加一行与total_time.
但与cron相同的行没有做任何事情.
这不是一个路径问题,因为curl http://myurl.com >> ~/log工作.
我有一个bash脚本foo.sh坐落在/etc/cron.daily目录,chmoded 700,属于root,root用户的crontab列表是不变的核心Debian安装(的crontab -l).我也以另一种方式比的crontab -l和/或crontab -e命令(例如,在特定的Debian的情况下,劝我没有重新启动与/etc/init.d/cron cron守护程序)运行的cronjob.尽管测试作业文件在类似条件下运行.该脚本已调试,可以作为独立任务运行,而不会返回错误.我还检查了日志(/ var/log/syslog)并且没有任何错误.
但是:这项特殊工作根本没有执行.
我正在制作一个小型应用程序按时间表响铃,可以从网站上更新.一切都运行良好,除了作为cron作业安排的脚本在脚本运行时不会播放声音.我已经向脚本添加了输出管道和echo命令,以验证cron是否正在运行它,但播放声音的部分不起作用.从CLI手动运行时,脚本按预期工作.
该脚本根据时间表提取一天中每个时段的时间和声音文件,然后将与声音文件关联的时间与当前时间进行比较 - 如果匹配,它将
exec("/usr/bin/aplay /var/www/site/".$soundfile);
Run Code Online (Sandbox Code Playgroud)
然后Cron计划在上学期间每分钟运行一次这个脚本:
* 8-16 * 1-6,9-12 1-5 root /usr/bin/php -f /var/www/site/scripts/playsound.php > /dev/null
Run Code Online (Sandbox Code Playgroud)
同样,如果我在安排声音时手动运行脚本,声音将通过连接的扬声器播放.当我有测试代码回显到屏幕或输出到输入的文件时,cron会将输出转储到文件中,确认它按计划运行脚本.它只是不会播放脚本的声音部分.
我检查了所有权限,因为其他一切正常,它们似乎是准确的.我甚至可以编写一个简单的BASH脚本来让Cron按计划播放声音,因此系统似乎有正确的组成员资格来访问脚本和声音文件.我已经转出exec()的shell_exec(),仅使用命令以及绝对路径的命令审判,cron作业计划以root身份运行.仍然无法弄清楚为什么这个小功能不幸对这个程序的成功如此重要将无法奏效.
任何意见是极大的赞赏.
我想设置一个 cron 作业来运行 python 脚本,但它给了我这个错误:
RuntimeError: could not open display
Run Code Online (Sandbox Code Playgroud)
这是因为我导入了一个需要我打开显示的模块(pylab例如)。即使我的脚本没有生成任何图片显示在监视器上。
有什么方法可以让 crontab 在显示打开的情况下运行我的作业(就像我ssh -X进入机器一样)?我实际上不需要为监视器生成任何图形。我只需要正确导入我的模块。