我已检查此链接以获取建议,但似乎无法使 .sh 脚本运行。我是 Ubuntu 和 Linux 的新手(来自 Windows)。
这是我正在测试的虚拟 .sh。
它被称为testing.sh
#! /bin/bash
ls > testing.txt
我的 crontab 如下所示:
SHELL=/bin/bash
* * * * * "/home/name/Desktop/Instragram Scraper/Instagram looter/batch_scripts/testing.sh"
* * * * * "/home/name/Desktop/Instragram Scraper/Instagram looter/batch_scripts/daily_0.sh"
****other randoms cron jobs******
我查看了 cron 和 shell 的环境路径,但它们似乎有共同的变量,所以我认为 PATH 没有问题?
这是 Crontab 的环境变量(因此我尝试通过将 shell 命令添加到 cron 文件的顶部来更改它):
HOME=/home/name
LOGNAME=name
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
PWD=/home/name
这是来自 shell 的环境:
PATH=/home/name/bin:/home/name/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
SHELL=/bin/bash
不确定我做错了什么。
编辑:
文本文件似乎是在 HOME 下创建的,所以我找错了地方。但是,当运行真正的(不是虚拟的) cron 命令时,cron 命令似乎没有从我的 .sh 脚本运行这些命令:
“instalooter 标签“donut”“/media/name/data/”-n 100 -j 2 --new”
基本上 instalooter 命令似乎没有运行,
如果我通过 cmd 行运行或者通过命令行运行相同的脚本,这些命令运行起来就没有问题。
这是一个变量问题吗?
谢谢。
答案1
您需要获得明确的错误消息才能解决这个问题,尽管这似乎是一个 PATH 变量问题(在这种情况下您可能需要将程序的路径连接到 crontabPATH
变量)
要从命令中获取清晰的错误消息,您需要将Standard Error Stream
命令重定向到Standard Output Stream
并将其重定向到文件的输入流,这可以通过2>&1
运算符来实现,其中数字代表文件描述符(这里不再赘述)。
command args > /debug.txt 2>&1
修改脚本后,一旦 crontab 执行了您的脚本,您就可以查看 debug.txt 中的错误消息。