无法让 .sh 与 crontab 协同工作

无法让 .sh 与 crontab 协同工作

我已检查此链接以获取建议,但似乎无法使 .sh 脚本运行。我是 Ubuntu 和 Linux 的新手(来自 Windows)。

为什么 crontab 脚本不起作用?

这是我正在测试的虚拟 .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 中的错误消息。

相关内容