我有一个我想要每5分钟执行一次的cron作业:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /scr_temp/scheduleSpider.sh
Run Code Online (Sandbox Code Playgroud)
在 /var/spool/cron/crontabs/root
cron应该执行shell脚本:
#!/bin/sh
if [ ! -f "sync.txt" ]; then
touch "sync.txt"
chmod 777 /scr_temp
curl someLink
fi
Run Code Online (Sandbox Code Playgroud)
从命令行可以正常工作,但不能从cron工作.然而,cron本身是startet但脚本没有启动.
我读到了路径问题,但我真的不明白.我设置了一个将一些env数据写入文件的cron.这是输出:
HOME=/root
LOGNAME=root
PATH=/usr/bin:/bin
SHELL=/bin/sh
Run Code Online (Sandbox Code Playgroud)
如果我在命令行中执行env命令,我会得到以下PATH输出
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)
我必须在shell脚本中设置什么路径?
我在运行脚本时遇到crontab问题。
我的sudo crontab -e看起来像这样:
05 00 * * * /opt/mcserver/backup.sh
10 00 * * * /opt/mcserver/suspend.sh
05 08 * * * /sbin/shutdown -r +1
11 11 * * * /opt/mcserver/start.sh <--- This isn't working
Run Code Online (Sandbox Code Playgroud)
并且start.sh看起来像这样:
#!/bin/sh
screen java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui
Run Code Online (Sandbox Code Playgroud)
并具有这些权限(ls -l输出)
-rwxr-xr-x 1 eve eve 72 Nov 24 14:17 start.sh
Run Code Online (Sandbox Code Playgroud)
我可以使用sudo从终端运行命令
./start.sh
Run Code Online (Sandbox Code Playgroud)
但这不会从crontab开始。如果我做
grep -iR "start.sh" /var/log
Run Code Online (Sandbox Code Playgroud)
我得到以下输出
/var/log/syslog:Nov 27 11:11:01 eve-desk CRON[5204]: (root) CMD (eve /opt/mcserver/start.sh)
grep: /var/log/btmp: Permission denied …Run Code Online (Sandbox Code Playgroud) 据我所知,我正在做我被告知的一切。
命令行中的命令“shutdown -P now”正是我想要的——立即关闭计算机。但使用该命令作为 cron 作业永远不会发生。
我只是希望它在周一到周五晚上 8:30 关闭,然后在晚上 9:30 和晚上 10:30 再次关闭。这就是我所做的;
我输入“crontab -e”,并将其添加到文件底部:
30 20,21,22 * * 1-5 shutdown -P now
Run Code Online (Sandbox Code Playgroud)
我按 CTRL+O 来“保存”它,然后按 CTRL+X 退出。我在提示符下收到“crontab:安装新的 crontab”消息。
但到了晚上8点30分,还没有关机。晚上 9:30 或晚上 10:30 也不会。
编辑:处理此处提供的列表; CronJob 未运行
我停在“测试 cron 正在工作”处。我输入命令
* * * * * /bin/echo "cron works" >> /tmp/file
Run Code Online (Sandbox Code Playgroud)
我得到了错误
Apps: command not found
Run Code Online (Sandbox Code Playgroud)
在 Google 中搜索此错误不会出现任何相关内容。
另外,我终于能够看到(感谢链接)在哪里获取消息日志输出 - 我在 Linux Mint 中(应该提到这一点),所以我需要 Ubuntu 方式来查找日志输出。关闭命令似乎已运行,唯一的“错误”消息是“未安装 MTA”,这(根据我刚刚读到的)仅用于通过电子邮件发送输出。否则似乎没有任何明显的错误消息......有人能理解这一点吗?
domarius@Domarius-LinuxMint ~ $ grep CRON /var/log/syslog
Aug 3 08:17:01 Domarius-LinuxMint CRON[3259]: (root) CMD …Run Code Online (Sandbox Code Playgroud) 我已经阅读了几篇文章,但我找不到帮助.
我有一个使用smtplib发送邮件的python脚本.它从命令行调用时有效.
我有#!/usr/bin/python第一行,可以使用/home/pi/ipsender.py和运行它python /home/pi/ipsender.py.
我的crontab是*/1 * * * * /home/pi/ipsender.py,但我自己也尝试*/1 * * * * python /home/pi/ipsender.py和*/1 * * * * /usr/bin/python /home/pi/ipsender.py.
这样做which python,我得到/usr/bin/pyhton和命令行我可以导入和使用的smtplib就好运行蟒蛇.
在/var/log/syslog我得到:
Nov 27 22:57:01 raspberrypi /USR/SBIN/CRON[3764]: (pi) CMD (python /home/pi/ipsender.py)
Nov 27 22:57:01 raspberrypi /USR/SBIN/CRON[3763]: (CRON) info (No MTA installed, discarding output)
Run Code Online (Sandbox Code Playgroud)
我猜测没有MTA ......只是关于Cron没有发送关于它正在做什么的电子邮件,或者不是吗?
我该如何运行这个脚本.
[编辑]
脚本的权限是
-rwxr-xr-x 1 pi pi 551 Nov 27 22:37 ipsender.py
Run Code Online (Sandbox Code Playgroud)
[Edit2]使用来自D Read的提示我得到以下日志 …
在我的根 crontab ( sudo crontab -e) 中,我有这个工作来生成 Go Access 日志报告:
* * * * * goaccess /var/log/nginx/access.log -o /home/me/some/path/report.html
Run Code Online (Sandbox Code Playgroud)
它工作得很好。我还有这项工作来生成一份跨越多天的报告:
* * * * * sudo zcat -f /var/log/nginx/access.log* | goaccess -o /home/me/some/path/bigger_report.html
Run Code Online (Sandbox Code Playgroud)
Cron 说它运行,但实际上似乎没有运行。我环顾四周并尝试了很多事情(包括遵循此处的列表 - /sf/answers/1592105231/),但仍然无法运行此作业。如果我自己运行该命令,它会按预期生成文件。我还尝试了管道之前的部分,输出到 txt 文件并且有效。所以我怀疑这是与 Go Access 的一些交互。
当我启用 cron 日志记录时,该作业运行时会显示以下内容:
(root) CMD (sudo zcat -f /var/log/nginx/access.log* | goaccess -o /home/me/some/path/bigger_report.html)
Run Code Online (Sandbox Code Playgroud)
有什么指点吗?谢谢!
我的书说:
在您的计算机上运行的每个程序都有一个当前工作目录或 cwd。任何不以根文件夹开头的文件名或路径都假定在当前工作目录下
因为我在 OSX 上,所以我的根文件夹是 /。当我在os.getcwd()Python shell 中输入时,我得到/Users/apple/Documents. 为什么我的 cwd 中出现 Documents 文件夹?是说 Python 正在使用 Documents 文件夹吗?没有任何以/( 根文件夹 )开头的指向 Python 的路径吗?另外,每个程序都有不同的 cwd 吗?
我正在尝试运行以下 bash 脚本,该脚本在激活 conda 环境后运行 Python 程序。
发送.bash
#!/bin/bash
source activate manage_oam_users
python ~/path/to/script/send.py
source deactivate
Run Code Online (Sandbox Code Playgroud)
定时任务表
30 * * * * source /path/to/script/send.bash
Run Code Online (Sandbox Code Playgroud)
尽管运行source send.bash正常,但我从 cron 收到以下错误。我也试过使用bash send.bashwhich 在手动运行时工作正常,但从 cron 运行时会导致相同的错误。
#!/bin/bash
source activate manage_oam_users
python ~/path/to/script/send.py
source deactivate
Run Code Online (Sandbox Code Playgroud)