Articles of cron

我被困在了logrotate的神秘面前

我有两个logrotate文件: /etc/logrotate.d/nginx-size /var/log/nginx/*.log /var/log/www/nginx/50x.log { missingok rotate 3 size 2G dateext compress compresscmd /usr/bin/bzip2 compressoptions -6 compressext .bz2 uncompresscmd /usr/bin/bunzip2 notifempty create 640 nginx nginx sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript } 和 /etc/logrotate.d/nginx-daily /var/log/nginx/*.log /var/log/www/nginx/50x.log { missingok rotate 3 dateext compress compresscmd /usr/bin/bzip2 compressoptions -6 compressext .bz2 uncompresscmd […]

如何在nginx内部创buildasynchronous的“cron like”调度程序

我需要在nginx服务器内创build一个asynchronous调度器来更新一个variables。 让我给你一个例子,我是这个意思,为什么我需要它。 想象一下configuration文件,看起来像这样: http { lua_shared_dict foo 5m; server { location /set { content_by_lua ' local foo = ngx.shared.foo ngx.say(foo:get("12345")) '; } } } 我指定了驻留在共享内存中的variablesfoo ,并且所有工作进程都可以访问它。 我想要做的就是从lua脚本中设置那些将被称为每个微小的值。 仅供参考,它将转到Redis ,然后检索必要的数据,并更新此variables。 我知道我可以在每次调用中都在content_by_lua中执行此操作,但对于大量stream量来说效率非常低。 我想要一个单独的进程,每分钟会触发一个任务。 在nginx有没有这样的东西,还是有任何模块可以帮助我呢?

cron作业让我们用nginx上的mongodencryptionssl更新

按照本指南,我已经有了一个parsing服务器并运行在数字海洋上。 在configurationmongo数据库进行迁移时,请执行以下命令: sudo cat /etc/letsencrypt/archive/domain_name/{fullchain1.pem,privkey1.pem} | sudo tee /etc/ssl/mongo.pem 之后,教程说: 更新Let's Encrypt证书后,您将不得不重复上述命令。 如果您configurationLet's Encrypt证书的自动更新,请记住包含此操作。 为了做到这一点,我添加了一个cronjob,让我们来encryption这样的cronjob: 30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log 33 2 * * 1 cat /etc/letsencrypt/archive/DOMAIN/{fullchain1.pem,privkey1.pem} | tee /etc/ssl/mongo.pem 35 2 * * 1 /etc/init.d/nginx reload 但是,星期一重新启动服务器后,mongod无法启动,因为找不到/读取/etc/ssl/mongo.pem 。 如何正确设置? 我需要在另一个cronjob中chown / chmod文件吗? 谢谢你的帮助!

脚本中的bash for-loop不能以非root用户的cron脚本运行

我有一个cron脚本,每晚从系统范围的/ etc / crontab运行,如下所示: 00 01 * * * www-data /root/scripts/image-auto-process.sh 1> /var/data/logs/cron.out 2> /var/data/logs/cron.err 这是一个bash脚本,用rsync备份一些完整扫描的jpeg目录,运行一个php程序来批量处理这些jpeg(预览/缩略图),将它们上传到服务器,并在成功清除前面提到的目录。 除了最后的清理步骤之外,所有的东西都像魅力一样。 但是,如果我作为www-data用户从命令行运行它,它就可以工作。 当它通过cron作为同一个用户运行,它不会。 最后的清理步骤如下所示: echo "remove original scans" for i in `find $SCAN_ORIG_DIR -mindepth 2 -type d -print | grep -v -f $EXCLUDES`; do rm -rvf $i; done echo "job Done…" $SCAN_ORIG_DIR是要search的目录。 $EXCLUDES是一个文件(www-data可读),包含要忽略目录的行(同一个文件用于告诉rsync什么不能备份)。 -mindepth 2用于查找,因为我只想返回也有子目录的$SCAN_ORIG_DIR子目录,如$SCAN_ORIG_DIR/subdir/subsubdir 。 我试着把上面的代码放到自己的脚本中,然后通过命令行和cron运行,只是为了确保脚本中没有先前的代码导致这个问题。 结果在命令行中(不是确切的表示,只是为了说明): remove […]

rdiff备份bash脚本和cron的麻烦

我有这个非常简单的bash脚本: #!/opt/bin/bash /opt/bin/rdiff-backup –force –print-statistics myhost::/var/bkp /volume1/backups/sql 2>&1 > /var/log/rdiff-backup.log; /opt/bin/rdiff-backup –force –print-statistics myhost::/var/www/vhosts /volume1/backups/vhosts 2>&1 >> /var/log/rdiff-backup.log; /opt/bin/rdiff-backup –force –print-statistics myhost::/etc /volume1/backups/etc 2>&1 >> /var/log/rdiff-backup.log; /opt/bin/rdiff-backup –force –print-statistics /volume1/homes /volume1/backups/homes 2>&1 >> /var/log/rdiff-backup.log; cat /var/log/rdiff-backup.log | /opt/bin/nail -s "rdiff-backup log" me@email.com; 如果我从命令行运行脚本,以这种方式: nohup /path/to/my/scipt.sh & 它工作正常,将每个rdiff-backup统计报告附加到rdiff-backup.log并将该文件发送到我的电子邮件地址,如预期的那样。 但是,如果我把脚本放在crontab中,那么脚本只能通过电子邮件发送一个rdiff备份作业。 我无法理解,因为脚本不能以相同的方式工作… 任何想法? 这是我的cronjob条目: 30 19 * * […]

Bash – 检查一个进程是否正在运行,否则启动它,并使用“开关”的情况下发送邮件

所以我有一个小脚本检查一个进程是否正在运行,如果没有,启动脚本并发送给我一个邮件。 我写的脚本( 从这里“受到启发” )如下: #!/bin/bash case "$(pidof webrtc2sip | wc -w)" in 0) echo "Restarting WebRTC2SIP: $(date)" >> /var/log/webrtc2sip.txt echo "Restarting WebRTC2SIP at $(date)" > test.txt /opt/webrtc2sip/sbin/webrtc2sip –config=/opt/webrtc2sip/sbin/config.xml & mail -r webrtc2sip@testserver.net -s "ALERT: webRTC2sip restarted" me@testserver.com < test.txt ;; 1) # all ok ;; *) echo "Removed multiple WebRTC2SIP: $(date)" >> /var/log/webrtc2sip.txt echo "Removed […]

如何为crontab中的脚本添加时间戳和错误日志

我有一个crontab运行如下: */15 * * * 4,5 /apps/ins/sid/compare_stats 2>> /apps/ins/sid/compare_stats.err 一切按预期工作。 唯一的事情是我想要我的错误日志在compare_stats.err文件中生成,如下所示: Jul 3 14:45:04 <error text> 这意味着我只是想与此一起添加date 。 有没有办法通过修改crontab条目来做到这一点(而不是真的在我的脚本中做任何改变)? 提前致谢。

PHP的问题包括从命令行(或cronjob)

我正在尝试在我的AWS EC2实例上设置一个cronjob。 crontab文件中的实际条目没有错,但是当我尝试在命令行中运行命令时,我得到了这个响应。 PHP Warning: include(../scripts/connect.php): failed to open stream: No such file or directory in /var/www/htdocs/crons/emailnotifications.php on line 2 PHP Warning: include(): Failed opening '../scripts/connect.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/htdocs/crons/emailnotifications.php on line 2 PHP Warning: include(../scripts/functions.php): failed to open stream: No such file or directory in /var/www/htdocs/crons/emailnotifications.php on line 3 PHP Warning: include(): Failed […]

Cronjob不运行bash脚本

我写了一个小脚本来检查openvpn是否正在运行,如果没有运行,就启动它。 这是我正在运行的脚本 #!/bin/bash **-x** ps auxw | grep openvpn | grep -v grep > /dev/null if [ $? != 0 ] then /etc/init.d/openvpn start > /dev/null log="/root/ServerRestart.log" echo "The Openvpn Server was restarted at\n" > $log date >> $log fi 这里是crontab: * * * * * /root/vpnmonitor.sh 它显示在syslog中,它运行的脚本,但它似乎并没有实际执行,脚本从terminal运行时工作正常。

shell脚本自动重新启动tomcat,如果停止

我正在使用一个shell脚本启动tomcat服务器,如果它没有运行。 我在cronjob中运行这个脚本来经常检查它。 这是我的脚本 #! /bin/sh SERVICE=/etc/init.d/tomcat7 STOPPED_MESSAGE="Tomcat Servlet Engine is not running." if [ "`$SERVICE status`" -eq "$STOPPED_MESSAGE" ]; then $SERVICE start fi 但是每当我运行这个脚本,它给了我一个错误。 如果tomcat没有运行,那么错误是: [:非法数字:* Tomcat Servlet引擎未运行。] 而如果tomcat运行的错误是: [:非法数字:* Tomcat Servlet Engine正在使用pid 6130运行。] 我认为错误与$ SERVICE状态有关,但我无法解决它。 我是一个新的shell脚本的蜜蜂。 请帮我一下 我解决这个问题之前,我不能前进。