Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 与sendmail不兼容的Cron_Bash_Shell_Cron_Crontab - Fatal编程技术网

Bash 与sendmail不兼容的Cron

Bash 与sendmail不兼容的Cron,bash,shell,cron,crontab,Bash,Shell,Cron,Crontab,我正在尝试创建一个cron,每两天将当前空间使用情况通过电子邮件发送给我自己 我可以完美地运行脚本并发送电子邮件,但当我将其放入cronlist时,不会发送电子邮件 cron是活动的,因为我创建了一个文件,该文件将当前日期输出到一个文件,并将其放入cronlist中,并且它一直在工作 这是我的电子邮件脚本 #!/bin/bash TOTAL=$(df / -h | grep / | awk '{ print $2}' ) USED=$(df / -h | grep / | awk '{ prin

我正在尝试创建一个cron,每两天将当前空间使用情况通过电子邮件发送给我自己

我可以完美地运行脚本并发送电子邮件,但当我将其放入cronlist时,不会发送电子邮件

cron是活动的,因为我创建了一个文件,该文件将当前日期输出到一个文件,并将其放入cronlist中,并且它一直在工作

这是我的电子邮件脚本

#!/bin/bash
TOTAL=$(df / -h | grep / | awk '{ print $2}' )
USED=$(df / -h | grep / | awk '{ print $3}' )
AVAILABLE=$(df / -h | grep / | awk '{ print $4}' )
PERCENTAGE=$(df / -h | grep / | awk '{ print $5}' )
EMAILSUBJECT="Server 79.XXX.XXX.XXX"
sendmail "admin@example.com" <<END
Subject: $EMAILSUBJECT

Disk usage on Server 79.XXX.XXX.XXX
Total space:       $TOTAL
Used space:        $USED
Available space:   $AVAILABLE
Percentage:        $PERCENTAGE
END
test.sh是一个输出日期的文件,并且正在填充该文件

checkspace.sh
发送邮件,如果我在命令行中键入
bash/root/checkspace.sh
,则会发送电子邮件,但cron不起作用


cron和邮件之间是否存在任何类型的不兼容???

如上所述,有许多因素可能导致问题。可能,您需要在使用的命令中设置完整路径

通过这种方式发现的常见问题:

foo: Command not found or just foo: not found.
最有可能的$PATH是在.bashrc或类似的交互式init中设置的 文件尝试按完整路径(或put source)指定所有命令 ~/.bashrc在您尝试运行的脚本的开头)


此外,我还想指出执行此代码块的另一种方法:

TOTAL=$(df / -h | grep / | awk '{ print $2}' )
USED=$(df / -h | grep / | awk '{ print $3}' )
AVAILABLE=$(df / -h | grep / | awk '{ print $4}' )
PERCENTAGE=$(df / -h | grep / | awk '{ print $5}' )
请注意,您正在调用
df-h/
四次,其中一次就足够了:

read _ TOTAL USED AVAILABLE PERCENTAGE _ < <(df -hP / | tail -1)

请注意
-p
df
中的用法,它代表
p
ortability(或
--portability
,“使用POSIX输出格式”),用于防止行过长时被拆分。为此。

如上所述,有许多因素可能导致问题。可能,您需要在使用的命令中设置完整路径

通过这种方式发现的常见问题:

foo: Command not found or just foo: not found.
最有可能的$PATH是在.bashrc或类似的交互式init中设置的 文件尝试按完整路径(或put source)指定所有命令 ~/.bashrc在您尝试运行的脚本的开头)


此外,我还想指出执行此代码块的另一种方法:

TOTAL=$(df / -h | grep / | awk '{ print $2}' )
USED=$(df / -h | grep / | awk '{ print $3}' )
AVAILABLE=$(df / -h | grep / | awk '{ print $4}' )
PERCENTAGE=$(df / -h | grep / | awk '{ print $5}' )
请注意,您正在调用
df-h/
四次,其中一次就足够了:

read _ TOTAL USED AVAILABLE PERCENTAGE _ < <(df -hP / | tail -1)

请注意
-p
df
中的用法,它代表
p
ortability(或
--portability
,“使用POSIX输出格式”),用于防止行过长时被拆分。为此。

如上所述,有许多因素可能导致问题。可能,您需要在使用的命令中设置完整路径

通过这种方式发现的常见问题:

foo: Command not found or just foo: not found.
最有可能的$PATH是在.bashrc或类似的交互式init中设置的 文件尝试按完整路径(或put source)指定所有命令 ~/.bashrc在您尝试运行的脚本的开头)


此外,我还想指出执行此代码块的另一种方法:

TOTAL=$(df / -h | grep / | awk '{ print $2}' )
USED=$(df / -h | grep / | awk '{ print $3}' )
AVAILABLE=$(df / -h | grep / | awk '{ print $4}' )
PERCENTAGE=$(df / -h | grep / | awk '{ print $5}' )
请注意,您正在调用
df-h/
四次,其中一次就足够了:

read _ TOTAL USED AVAILABLE PERCENTAGE _ < <(df -hP / | tail -1)

请注意
-p
df
中的用法,它代表
p
ortability(或
--portability
,“使用POSIX输出格式”),用于防止行过长时被拆分。为此。

如上所述,有许多因素可能导致问题。可能,您需要在使用的命令中设置完整路径

通过这种方式发现的常见问题:

foo: Command not found or just foo: not found.
最有可能的$PATH是在.bashrc或类似的交互式init中设置的 文件尝试按完整路径(或put source)指定所有命令 ~/.bashrc在您尝试运行的脚本的开头)


此外,我还想指出执行此代码块的另一种方法:

TOTAL=$(df / -h | grep / | awk '{ print $2}' )
USED=$(df / -h | grep / | awk '{ print $3}' )
AVAILABLE=$(df / -h | grep / | awk '{ print $4}' )
PERCENTAGE=$(df / -h | grep / | awk '{ print $5}' )
请注意,您正在调用
df-h/
四次,其中一次就足够了:

read _ TOTAL USED AVAILABLE PERCENTAGE _ < <(df -hP / | tail -1)

请注意
-p
df
中的用法,它代表
p
ortability(或
--portability
,“使用POSIX输出格式”),用于防止行过长时被拆分。为此。

请仔细阅读“调试crontab”一节中的一些小东西,这些小东西可以让它工作。。。或者不工作!sendmail可能不在cron环境路径中。cron作业运行时使用的变量非常少。尝试在脚本中扩展
$PATH
,以包括
sendmail
的位置,或者使用
sendmail
的完整路径,看看是否有效。(顺便说一句,没有理由在管道中使用
awk
之前使用
grep
,因为
awk
可以进行过滤,如果愿意,您可以在一个
awk
命令中格式化整个输出块。)感谢Etan Reisner。你有问题了。请仔细阅读其中的“调试crontab”部分,了解一些可以让它工作的小东西。。。或者不工作!sendmail可能不在cron环境路径中。cron作业运行时使用的变量非常少。尝试在脚本中扩展
$PATH
,以包括
sendmail
的位置,或者使用
sendmail
的完整路径,看看是否有效。(顺便说一句,没有理由在管道中使用
awk
之前使用
grep
,因为
awk
可以进行过滤,如果愿意,您可以在一个
awk
命令中格式化整个输出块。)感谢Etan Reisner。你有问题了。请仔细阅读其中的“调试crontab”部分,了解一些可以让它工作的小东西。。。或者不工作!sendmail可能不在cron环境路径中。cron作业运行时使用的变量非常少。尝试在脚本中扩展
$PATH
,以包括
sendmail
的位置,或者使用
sendmail
的完整路径,看看是否有效。(作为旁注,
awk
之前没有理由在管道中使用
grep
,因为
awk
可以进行过滤,您可以在一个
awk
命令中格式化整个输出块。)