我正在尝试按计划运行php脚本.所以我认为crontab是个好主意.我正在使用的服务器是在Linux上,我并不熟悉.所以我遇到的问题是,我不知道如何使脚本可以从PHP执行.我需要引用脚本,或将其放入可以从命令行运行php的文件夹中.所以我不知道给我的crontab提供什么路径,例如:
5 * * * * var/www/some/path/script.php
Run Code Online (Sandbox Code Playgroud)
我发现了一些关于这个php可执行文件的模糊信息
/usr/bin/php
Run Code Online (Sandbox Code Playgroud)
但我在那里找不到任何php文件,也许我没有安装它?我的php5和apache安装在:
/etc/php5
Run Code Online (Sandbox Code Playgroud)
所以我的问题变成了,无论如何在任何其他文件夹中执行带有crontab的php脚本,或者我只是缺少usr/bin/php中的php可执行文件?
我已经为我的应用程序实现了示例推送通知服务.
现在我在沙盒环境中测试.
当我手动调用PHP脚本通过APN推送通知时,我收到通知.
当我使用crontab编写调度程序来自动传递通知时,我没有收到通知.我收到的邮件错误是:
PHP Warning: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:
error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure in /Users/aspire/Desktop/SimplePush/simplepush.php on line 21
PHP Warning: stream_socket_client(): Failed to enable crypto in /Users/aspire/Desktop/SimplePush/simplepush.php on line 21
PHP Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /Users/aspire/Desktop/SimplePush/simplepush.php on line 21
Failed to connect: 0
Run Code Online (Sandbox Code Playgroud)
有人可以解释问题是什么吗?
我正在尝试在crontab(ubuntu服务器)中添加一个备份mysql数据库的cronjob.
以root身份在终端中执行脚本效果很好,但是在crontab中插入没有任何反应.我尝试每分钟运行一次,但文件夹/ var/db_backups中没有文件出现.
(其他cronjobs运作良好)
这是cronjob:
*****mysqldump -u root -pHERE我的密码是--all-databases | gzip>/var/db_backups/database_`date +%d%m%y`.sql.gz
可能是什么问题?
我需要定期运行Bash文件,它必须是root用户.
那可能吗?
[root@file nutch-0.9]# locate crontab
/etc/crontab
/etc/sysconfig/crontab
/usr/bin/crontab
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man1p/crontab.1p.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim71/syntax/crontab.vim
[root@file nutch-0.9]#
Run Code Online (Sandbox Code Playgroud) 在crontab中,你可以这样做吗?
* * * * * echo $( date +%F) >> /path/date.txt
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的shell脚本,我需要作为cronjob运行,但我甚至无法运行测试脚本.这是和示例脚本:
/home/myUser/scripts/test.sh
#!/bin/bash
touch file.txt
Run Code Online (Sandbox Code Playgroud)
crontab中:
* * * * * /home/myUser/scripts/test.sh
Run Code Online (Sandbox Code Playgroud)
脚本从终端运行良好,但不能让它作为cronjob运行.到目前为止,我已经在crontab中尝试过这些:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * /bin/bash /home/myUser/scripts/test.sh
Run Code Online (Sandbox Code Playgroud)
这在脚本文件中:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/myUser/scripts
Run Code Online (Sandbox Code Playgroud)
根据我收集的内容,解决方案可能在PATH变量中,但我无法弄清楚它是什么,因为我的理解在这一点上非常有限.所以我的问题是,如何让我的脚本作为cronjobs运行?
编辑:该文件具有所有用户的rwx权限.这仅用于测试目的.
编辑: cronjobs如* * * * * touch /home/myUser/scripts/test.txt工作,但它不会运行脚本.
我希望脚本在第40分钟开始每40分钟运行一次.
这意味着:
00:40, 01:20, 02:00, 02:40, 03:20...
Run Code Online (Sandbox Code Playgroud)
所以我把这个条目改为cron:
*/40 * * * * /path/to/script/foo.sh
Run Code Online (Sandbox Code Playgroud)
不幸的是,这每小时每40分钟运行一次脚本:
00:40, 01:40, 02:40...
Run Code Online (Sandbox Code Playgroud)
我打算每25分钟运行一次的脚本也是如此.
我在这里错过了什么吗?
答案
好吧,如果你碰巧在这里遇到同样的问题
,我就是这样解决的:
# 40mins-interval
40 0 * * * /path/foo.sh (0)
0,40 2-22/2 * * * /path/foo.sh (2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22)
20 1-23/2 * * * /path/foo.sh (1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23)
# 25mins-interval
25,50 0 * * * /path/foo.sh (0)
0,25,50 5-20/5 * * …Run Code Online (Sandbox Code Playgroud) 我想从cron job执行我的scrapy crawler.
我创建了bash文件getdata.sh,其中scrapy项目位于它的蜘蛛上
#!/bin/bash
cd /myfolder/crawlers/
scrapy crawl my_spider_name
Run Code Online (Sandbox Code Playgroud)
我的crontab看起来像这样,我想每5分钟执行一次
*/5 * * * * sh /myfolder/crawlers/getdata.sh
Run Code Online (Sandbox Code Playgroud)
但它不起作用,什么是错的,我的错误在哪里?
当我从终端sh /myfolder/crawlers/getdata.sh执行我的bash文件时,它工作正常
我有一个cron作业,它的输出现在重定向到一个文件.它看起来如下
0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log
任何人都可以帮我重新输出到stdout吗?
我希望能够配置这样的东西.