Bash 与sendmail不兼容的Cron
我正在尝试创建一个cron,每两天将当前空间使用情况通过电子邮件发送给我自己 我可以完美地运行脚本并发送电子邮件,但当我将其放入cronlist时,不会发送电子邮件 cron是活动的,因为我创建了一个文件,该文件将当前日期输出到一个文件,并将其放入cronlist中,并且它一直在工作 这是我的电子邮件脚本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
#!/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
命令中格式化整个输出块。)