繁体   English   中英

Crontab作业没有执行Shell脚本

[英]Crontab Jobs didn't execute shell script

我正在开发django-python项目并被困在执行django-crontab来自动备份文件,这是代码:

在我的settings.py中

INSTALLED_APPS = (
.
.
.
'django-crontab',
)

CRONTAB_DJANGO_MANAGE_PATH = '/home/path/to/my/project/manage.py'

CRONJOBS = [
            ('25 15 * * *', 'cd /home/path/to/my/project && /usr/bin/sh myscript.sh'),
        ]

在myscript.sh中

#!/bin/sh
set -e
cd /home/path/to/my/project/
exec cp file some_dir/copy_file

我在服务器上测试此代码以使其在15:25时运行,并且未执行myscript.sh

该脚本只是将文件复制到另一个目录(以进行备份),我已经在服务器中使用./myscript.sh进行了手动测试,该脚本运行良好...

我一直在尝试各种方法,但似乎没有任何效果

我从django-crontab( https://pypi.python.org/pypi/django-crontab/0.5.1 )和本站点( https://superuser.com/questions/81262/how-to-execute -shell-script-via-crontab )+ http://github.com/kraiz/django-crontab

编辑

我也使用此命令添加了cronjob

python manage.py crontab add

我已经使用此命令检查了作业是否在那里

python manage.py crontab show

工作实例

settings.py

CRONJOBS = [
            # Auto Backup Database everyday at 4 am
            ('0 4 * * *', 'django.core.management.call_command', ['dumpdata', 'myproject'], {'indent': 4, 'use_natural_keys': True}, '> /home/mydirectory/myproject_backup/myproject_backup.json'),
        ]

myproject_backup.json

[
{
    "pk": 1, 
    "model": "contenttypes.contenttype", 
    "fields": {
        "model": "permission", 
        "name": "permission", 
        "app_label": "auth"
    }
},
{
    "pk": 2, 
    "model": "contenttypes.contenttype", 
    "fields": {
        "model": "group", 
        "name": "group", 
        "app_label": "auth"
    }
},
{
    "pk": 3, 
    "model": "contenttypes.contenttype", 
    "fields": {
        "model": "user", 
        "name": "user", 
        "app_label": "auth"
    }
},
{
    "pk": 4, 
    "model": "contenttypes.contenttype", 
    "fields": {
        "model": "contenttype", 
        "name": "content type", 
        "app_label": "contenttypes"
    }
},
{
    "pk": 5, 
    "model": "contenttypes.contenttype", 
    "fields": {
        "model": "session", 
        "name": "session", 
        "app_label": "sessions"
    }
},
{
    "pk": 6, 
    "model": "contenttypes.contenttype", 
    "fields": {
        "model": "site", 
        "name": "site", 
        "app_label": "sites"
    }
},
{
    "pk": 7, 
    "model": "contenttypes.contenttype", 
    "fields": {
        "model": "logentry", 
        "name": "log entry", 
        "app_label": "admin"
    }
},
{
    "pk": 8, 
    "model": "contenttypes.contenttype", 
    "fields": {
        "model": "poll", 
        "name": "poll", 
        "app_label": "polls"
    }
},
{
    "pk": 9, 
    "model": "contenttypes.contenttype", 
    "fields": {
        "model": "choice", 
        "name": "choice", 
        "app_label": "polls"
    }
},
{
    "pk": 10, 
    "model": "contenttypes.contenttype", 
    "fields": {
        "model": "cronjoblog", 
        "name": "cron job log", 
        "app_label": "django_cron"
    }
},
{
    "pk": "1g6s3bly0gu6pn7spllerdw1n8sus08a", 
    "model": "sessions.session", 
    "fields": {
        "expire_date": "2013-09-04T05:48:32Z", 
        "session_data": "YTg4Y2I3OWM3Nzg4NmIyOGE2NmJiZDAxYmYwMGNiYWI3Zjg5OGFmMDqAAn1xAShVEl9hdXRoX3VzZXJfYmFja2VuZHECVSlkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZHEDVQ1fYXV0aF91c2VyX2lkcQSKAQF1Lg=="
    }
},
{
    "pk": "j7ifcyfzfhentb5tx9492fphdf20g2qp", 
    "model": "sessions.session", 
    "fields": {
        "expire_date": "2013-09-11T04:54:37Z", 
        "session_data": "YTg4Y2I3OWM3Nzg4NmIyOGE2NmJiZDAxYmYwMGNiYWI3Zjg5OGFmMDqAAn1xAShVEl9hdXRoX3VzZXJfYmFja2VuZHECVSlkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZHEDVQ1fYXV0aF91c2VyX2lkcQSKAQF1Lg=="
    }
},
{
    "pk": "m21on2le3kti3ezexzei1vpox57x8qgv", 
    "model": "sessions.session", 
    "fields": {
        "expire_date": "2013-09-05T06:29:00Z", 
        "session_data": "YTg4Y2I3OWM3Nzg4NmIyOGE2NmJiZDAxYmYwMGNiYWI3Zjg5OGFmMDqAAn1xAShVEl9hdXRoX3VzZXJfYmFja2VuZHECVSlkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZHEDVQ1fYXV0aF91c2VyX2lkcQSKAQF1Lg=="
    }
},
{
    "pk": "x16t71c19o93kukwu5mvog1g76ynv3ip", 
    "model": "sessions.session", 
    "fields": {
        "expire_date": "2013-09-04T07:07:46Z", 
        "session_data": "YTg4Y2I3OWM3Nzg4NmIyOGE2NmJiZDAxYmYwMGNiYWI3Zjg5OGFmMDqAAn1xAShVEl9hdXRoX3VzZXJfYmFja2VuZHECVSlkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZHEDVQ1fYXV0aF91c2VyX2lkcQSKAQF1Lg=="
    }
},
{
    "pk": 1, 
    "model": "sites.site", 
    "fields": {
        "domain": "example.com", 
        "name": "example.com"
    }
},
{
    "pk": 1, 
    "model": "polls.poll", 
    "fields": {
        "pub_date": "2013-08-21T05:56:00Z", 
        "question": "What are you doing?"
    }
},
{
    "pk": 2, 
    "model": "polls.poll", 
    "fields": {
        "pub_date": "2013-08-21T05:58:00Z", 
        "question": "What's on your mind?"
    }
},
.
.
]

如果有人可以帮助,我将非常感激:S

除非您运行python manage.py crontab add ,否则您在设置中计划的cronjobs实际上不会添加到python manage.py crontab add

RTD

请参阅django crontab的格式:

#format 1
required: cron timing (in usual format: http://en.wikipedia.org/wiki/Cron#Format)
required: the python module path to the method
optional: a job specific suffix (f.e. to redirect out/err to a file, default: '')

#format 2
required: cron timing (in usual format: http://en.wikipedia.org/wiki/Cron#Format)
required: the python module path to the method
optional: list of positional arguments for the method (default: [])
optional: dict of keyword arguments for the method (default: {})
optional: a job specific suffix (f.e. to redirect out/err to a file, default: '')

在这两种情况下,您都需要使用python方法 ,而不仅仅是使用Shell中的命令。 不允许您写'cd ...;之类的东西。 。/命令'; 您应该将此行包装到代码中的python模块中。

更多信息:

终于,在将头发拉了几天之后,我找到了可行的解决方案。

  1. 我使用腻子(SSH)登录到服务器
  2. 键入命令: crontab -e
  3. 您将看到crontab作业列表
  4. 直接输入我的工作,输入:

    0 3 * * * cp -pRu / home / path / to / my / project / file_dir / home / path / to / my / backup / dir

这只会每天凌晨3点将基于file_dir中的时间戳的新文件/ dir复制到backup_dir

  1. 完成输入后,按ESC,然后按CTRL + x,它将询问您是否要保存,只需键入Y,然后按Enter以保存文件。
  2. 通过类型检查所有crontab作业: crontab -l
  3. 而已! 干杯!

希望它可以帮助遇到类似问题的人:D

PS:还要感谢Igor和zsquare。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM