使用PHP验证crontab条目的最佳方法是什么?我应该使用正则表达式还是外部库?我有一个PHP脚本,用于添加/删除crontab文件中的条目,但希望能够通过某种方式验证时间间隔部分是否为有效格式.
如果我输入crontab -l命令行,我可以看到以下行:
# * * * * * /usr/bin/php /home/user/every_minute_script.php
Run Code Online (Sandbox Code Playgroud)
要启动此cronjob,我需要使用crontab -e命令编辑文件,删除行开头的注释字符,保存编辑的文件,然后退出编辑器.
要停止此cronjob,请执行相同的步骤,但在行的开头添加注释字符.
我想使用PHP脚本实现完全相同的效果,而不是手动编辑文件.
我有一个 在ubuntu服务器上通过CRON JOB运行的start.sh bash脚本
start.sh包含下面提到的代码行
start.sh的路径是/home/ubuntu/folder1/folder2/start.sh
#!/bin/bash
crawlers(){
nohup scrapy crawl first &
nohup scrapy crawl 2nd &
wait $!
nohup scrapy crawl 3rd &
nohup scrapy crawl 4th &
wait
}
cd /home/ubuntu/folder1/folder2/
PATH=$PATH:/usr/local/bin
export PATH
python init.py &
wait $!
crawlers
python final.py
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我在命令行上运行start.sh我在nohup.out文件中输出
但是当它通过cronjob执行这个bash文件时(尽管脚本运行正常)它不会产生nohup.out
我怎样才能得到输出这个的cronjob中的nohup.out?
有人知道将文件提供给crontab -e的方法吗?我不能使用常规形式的crontab给它一个路径,但仍然需要替换整个内容.
也许设置编辑器的东西?
我一直在摒弃一些持久的Linux技术来帮助自动化我的日常工作.cron如果我可以用它来检查我系统上的一些软件包的更新,我发现它非常强大.
例如,我想Homebrew在晚上11点更新我的日常生活.我做的是,sudo crontab -u user -e我crontab在Vim 打开了.我将以下命令放入其中,进行更新homebrew并向我发送电子邮件.
这是代码:
MAILTO=myemail@foo.com
* 23 * * * brew update
Run Code Online (Sandbox Code Playgroud)
我保存它等待魔法发生.它说,而不是在我收到的电子邮件中排除这个命令/bin/sh: brew : command not found
但是当我键入/bin/sh终端打开sh并输入brew update它会更新Homebrew.
我的crontab配置出了什么问题?
任何帮助将不胜感激!
我没有一个盒子来测试一个cron作业所以我在这里发布它.
我想在早上6点到晚上18点之间每小时开一份工作.这就是我的尝试
0 6-18/1 * * * <command>
Run Code Online (Sandbox Code Playgroud)
和
0 6-18 * * * <command>
Run Code Online (Sandbox Code Playgroud)
哪一个是实现它的正确方法
我在我的crontab中有一个像这样设置的cron作业:
*/1 * * * * sudo /home/pi/coup/sensor.py >> /home/pi/sensorLog.txt
Run Code Online (Sandbox Code Playgroud)
它将stdout放入sensorLog.txt,它生成的任何stderr都会被放入电子邮件中.
我希望stdout和stderr都进入sensorLog.txt,所以我添加1>&2到crontab,这应该让stderr进入与stdout相同的位置.它现在看起来像这样:
*/1 * * * * sudo /home/pi/coup/sensor.py >> /home/pi/sensorLog.txt 1>&2
Run Code Online (Sandbox Code Playgroud)
现在,stdout和stderr都被放入电子邮件中,并且没有任何内容添加到文件中.这与我想要完成的事情相反.
如何让stdout和stderr重定向到文件?
我不知道如何用ssh设置cron?我打开ssh并输入"crontab -e".那我该怎么办?我想每分钟重复这个功能.我将此代码作为"运行cron命令":php -f /var/www/vhosts/nf-test-host.tk/httpdocs/admin/cron/cron.php.
我在CentOS上.我该怎么办?提前致谢!
我需要在 linux 下快速临时禁用 crontab 中的特定作业。我怎样才能做到这一点?
这是一个着名的"问题",当crontab行包含星期和月中的某一天时,cron使用OR来计算一天来发出命令.例如,如果你写
* * 13 * 5 command
Run Code Online (Sandbox Code Playgroud)
该命令将在每个星期五和每月的第13天执行,而不仅仅是在星期五的第13天.这与其他字段的格式相矛盾(当您编写30 2***时,它将仅在小时和分钟时执行 - 正是您指定的;除了DoW和DoM之外的所有其他字段都相同).
所以我的问题是:这个例外是否有特定的原因?我的意思是,应该有一个理由,但我似乎无法找到它.(相反,我看到互联网中的很多人都希望像其他任何一样对待这些领域 - 使用"AND策略",正好适用于"星期五13"或"5月的第2个星期四"之类的东西.)