我注意到,当我键入时,sudo crontab -e我没有看到我的cron命令,但是当我这样做时,只有crontab -e我的命令.
2之间有区别吗?如果有,我应该把我的cron命令放在哪里,它应该在sudo中还是没有sudo?
谢谢!
我在"logrotate.d"目录中添加了两个脚本,以便我的应用程序日志被轮换.这是其中一个的配置:
<myLogFilePath> {
compress
copytruncate
delaycompress
dateext
missingok
notifempty
daily
rotate 30
}
Run Code Online (Sandbox Code Playgroud)
"cron.daily"目录中有一个"logrotate"脚本(似乎每天按照cron日志运行):
#!/bin/sh
echo "logrotate_test" >>/tmp/logrotate_test
#/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
/usr/sbin/logrotate -v /etc/logrotate.conf &>>/root/logrotate_error
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
Run Code Online (Sandbox Code Playgroud)
第一个echo语句正在工作.
但是我发现我的应用程序日志没有被轮换,而其他日志如httpd正在被轮换**
**我也没有在提到的"logrotate_error"文件中看到任何输出(对所有用户都有写入权限).
然而,系统日志说:"logrotate:ALERT异常退出[1]"
但是当我手动在"cron.daily"脚本中运行相同的"logrotate"时,一切似乎都正常.
为什么它不能在每日cron时间表中旋转?我在这里做错了吗?
如果我得到这个急需的帮助,那就太棒了.
更新: 看起来,这是因为selinux - 我的用户主目录中的日志文件受到selinux施加的限制以及运行时logrotate脚本:
SELinux is preventing /usr/sbin/logrotate from getattr access on the file /home/user/logs/application.log
Run Code Online (Sandbox Code Playgroud) 我有一个ruby脚本连接到Amazon S3存储桶并下载最新的生产备份.我测试了脚本(这很简单),它工作正常.
但是,当我将此脚本安排为作为cron作业运行时,它似乎在加载Amazon(aws-s3)gem时失败.
我脚本的前几行看起来像这样:
#!/usr/bin/env ruby
require 'aws/s3'
Run Code Online (Sandbox Code Playgroud)
正如我所说,当我手动运行此脚本时,它工作正常.当我通过计划的cron作业运行它时,它在尝试加载gem时失败:
`require':没有要加载的文件 - aws/s3(LoadError)
此脚本的crontab如下所示:
0 3 * * * ~/Downloader/download.rb > ~/Downloader/output.log 2>&1
Run Code Online (Sandbox Code Playgroud)
我原本以为这可能是因为cron作为一个不同的用户运行,但是当我在我的ruby脚本开始时执行'whoami'时它告诉我它是以我一直使用的同一个用户运行的.
我还做了一个bundle init并将gem添加到我的gemfile中,但这似乎没有任何影响.
为什么cron无法加载gem?我正在运行Ubuntu.
每小时运行一项作业的正确语法是哪一种?
0 0 * * * *
0 0 */1 * * *
还有他们有什么不同?
我可以看到这是"常见的"错误,但在我的情况下无法找到解决方案......
运行Crontab作业:
expr `date +%W` % 2 > /dev/null && curl https://mysite.com/myscript
Run Code Online (Sandbox Code Playgroud)
它会导致错误:
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)
你能帮我解决一下吗?非常感谢你提前!
我想知道如何安排动态(自动填充数据)功能在保存的时间每天自动运行?
假设我有一个表单,一旦单击该按钮,它就会将数据发送到函数,该函数会发布数据.我只想自动化,这样我就不必按下按钮了.
<ul>
<?php
foreach($Class->retrieveData as $data)
{
<form method="post" action="">
<li>
<input type="hidden" name="name">'.$data['name'].'<br/>
<input type="hidden" name="description">'.$data['description'].'<br/>
<input type="submit" name="post_data" value="Post">
</li>
</form>
}
?>
</ul>
Run Code Online (Sandbox Code Playgroud)
现在,表单将数据传递给函数.
if(isset($_POST['post_data'])) // if post_data button is clicked then it runs myFunction()
{
myFunction();
}
myFunction()
{
$name = $_POST['name'];
$description = $_POST['description'];
}
Run Code Online (Sandbox Code Playgroud)
我尝试了以下操作,但问题是Cron Job只能运行整个.php文件,而我正在检索从MySQL运行的已保存时间.
foreach($Class->getTime() as $timeData)
{
$timeHour = $timeData['timeHour'];
$timeMinute = $timeData['timeMinute'];
$hourMin = date('H:i');
$timeData = ''.$timeHour.':'.$timeMinute.'';
if($hourMin == $timeData)
{
run myFunction.
}
}
Run Code Online (Sandbox Code Playgroud)
$hourMin是当前小时:分钟与从Mysql自动运行的保存时间相匹配.那么如果$hourMin …
从技术上讲,是什么之间的区别cron,crontab以及cronjob?
从我可以收集到的,cron是服务器上的实用程序,crontab是包含时间间隔和命令的文件,并且cronjob是实际命令(或包含命令的文件/脚本).
它是否正确?
我刚刚开始使用 crontab 并且遇到了一些问题。我已经阅读了一些关于如何在 macOS 上使用它的帖子,但它仍然无法正常工作。
所以,我写crontab -e,然后将其编辑为
*/1 * * * * cliclick -w 1 m:3,3(例如) - 这意味着每 1 分钟重复点击 x=3;y=3 。一切都没有改变。但是,当我从终端仅使用此命令时,一切正常。
我已经尝试过创建一个script.sh文件,并且情况相同:手动命令有效,而 crontab 无效。
也许,我做错了什么? 更新:crontab 具有完整的磁盘访问权限。
UPDATE2:
我尝试在 BigSur 上再做一次。首先,我使用一个更简单的命令,如echo:
* * * * * echo 'test' >> /*/Desktop/text.txt
它运作良好。之后,我自己写script.sh
echo '2test' >> /Users/***/Desktop/t.txt
/usr/local/bin/cliclick -w 1 m:1,3
cliclick -w 1 m:55,44
Run Code Online (Sandbox Code Playgroud)
并且 cliclick 不起作用,因为其他 bin 文件位于/usr/local/bin/(cliclick 位于此路径中)
请注意,如果我执行 ./script.sh 然后 cliclick 在这两种情况下都可以正常工作。
我彻底地用Google搜索,发现运行cliclick(等)是不是有可能,虽然crontab …
我试图不断监视一个基本上是Python程序的进程.如果程序停止,那么我必须再次启动程序.我正在使用另一个Python程序来执行此操作.
例如,假设我必须不断运行一个名为的进程run_constantly.py.我最初手动运行该程序,将其进程ID写入文件"PID"(位置输出/ PROCESSID/PID).
现在我运行另一个程序,它具有以下代码来监视run_constantly.pyLinux环境中的程序:
def Monitor_Periodic_Process():
TIMER_RUNIN = 1800
foo = imp.load_source("Run_Module","run_constantly.py")
PROGRAM_TO_MONITOR = ['run_constantly.py','out/PROCESSID/PID']
while(1):
# call the function checkPID to see if the program is running or not
res = checkPID(PROGRAM_TO_MONITOR)
# if res is 0 then program is not running so schedule it
if (res == 0):
date_time = datetime.now()
scheduler.add_cron_job(foo.Run_Module, year=date_time.year, day=date_time.day, month=date_time.month, hour=date_time.hour, minute=date_time.minute+2)
scheduler.start()
scheduler.get_jobs()
time.sleep(TIMER_NOT_RUNIN)
continue
else:
#the process is running sleep and then monitor again
time.sleep(TIMER_RUNIN) …Run Code Online (Sandbox Code Playgroud) 对于CakePHP 2.3.8如何在CronController.php中调用Another Controller函数
有任何想法吗?
cron-task ×10
cron ×8
crontab ×2
ubuntu ×2
cakephp-2.0 ×1
cakephp-2.3 ×1
controller ×1
daemon ×1
jobs ×1
linux ×1
log-rotation ×1
logging ×1
logrotate ×1
macos ×1
mysql ×1
php ×1
python ×1
ruby ×1
rubygems ×1
schedule ×1
scheduling ×1