我是 Linux 新手,所以对于可能有点愚蠢的问题,我深表歉意。问题是,我试图每小时 20 分钟自动执行一项作业。
1)我在脚本文件夹中创建一个 sh 文件:
。
#!/bin/sh cd /home/ubuntu/scripts/dm-customer && python3 ./md_executor.py
1.1 我将 sh 文件转换为可执行文件:
chmod 755 etl-execution.sh
chmod +x etl-execution.sh
2)现在我输入crontab -e
并添加一行:
55 * * * * ubuntu /home/ubuntu/scripts/dm-customer/etl-execution.sh
然后我的 cron 应该会自动触发,但什么也没有发生。我尝试:
- 编辑我的
crontab -e
使用ubuntu
用户而不是root
但没有任何反应 - 如果我在 ubuntu 会话中手动执行 sh,它会通过,我真的不明白。
我很感激任何反馈,这让我抓狂了。谢谢
答案1
55 * * * * ubuntu /home/ubuntu/scripts/dm-customer/etl-execution.sh
为什么那里有 Ubuntu?
格式如下man 5 crontab
:
The format of a cron command is similar to the V7 standard, with a num-
ber of upward-compatible extensions. Each line has five time-and-date
fields followed by a username (if this is the system crontab file), and
followed by a command. Commands are executed by cron(8) when the
'minute', 'hour', and 'month of the year' fields match the current
time, and at least one of the two 'day' fields ('day of month', or 'day
of week') match the current time (see "Note" below).
仅当它是系统 crontab 时才应包含用户名。如果您crontab -e
以自己的用户身份运行,则应该不是被包括在内。
尝试
55 * * * * /home/ubuntu/scripts/dm-customer/etl-execution.sh
看看是否有效。