我将工作添加到crontab
。
20 2 * * * sh /home/tomcat/bin/test3.sh
20 2 * * * sh /home/tomcat/bin/test.sh
我检查了权限..
-rwxr-xr-x 1 root root 58 May 19 02:04 test3.sh
-rwxr-xr-x 1 root root 3223 May 16 08:20 test.sh
test3.sh
正在使用命令行和crontab
。
#!/bin/sh
echo "test test test..." > /test3_sh.txt
但是test.sh
无效crontab
。代码似乎有点复杂和混乱,但目的很简单。它从MYSQL检索数据并通过sendmail
发送邮件。当我从命令行运行test.sh
时它正在运行,但是从crontab
它没有。
#!/bin/sh
results=`mysql -N -h mysqlhost.com -u user -pmypassword -e "USE MYDB;
SELECT
column1,
column2,
column3,
column4
FROM MYTABLE
ORDER BY REG_DT DESC
LIMIT 10;"`
IFS=$'
'
x="<style type="text/css">
table.gridtable {
font-family: verdana,arial,sans-serif;
font-size:11px;
color:#333333;
border-width: 1px;
border-color: #666666;
border-collapse: collapse;
}
table.gridtable th {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #dedede;
}
table.gridtable td {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #666666;
background-color: #ffffff;
}
</style><table class="gridtable">
<tr>
<th>column 1</th><th>column 2</th><th>column 3</th><th>column 4</th>
</tr>"
for i in $results;
do
x+="<tr>"
x+="$i
"
x+="</tr>"
done
x+="</table>"
cat - /home/tomcat/bin/test.log << EOF | sendmail -t -f test@test.com
to:test@test.com
from:test@test.com
subject:test mail
Mime-Version: 1.0
Content-Type: text/html
<html>
<body>
<h3>my recent articles..</h3>
$x
<br><hr>
</body>
</html>
EOF
我用Google搜索了这个问题,有些人说,有些pahts和ENV变量与命令行和crontab的工作方式不同。但是我的sh中没有像ENV变量那样的东西。 我的sh中有一条日志路径。这有点可疑,但我不确定这可能是个问题。
cat - /home/tomcat/bin/test.log << EOF | sendmail -t -f test@test.com
答案 0 :(得分:1)
您还可以导航到路径并将脚本作为&gt;&gt;
运行20 2 * * * cd / home / tomcat / bin /&amp;&amp; sh test3.sh
它会起作用
答案 1 :(得分:0)
只需从命令开头删除sh
:
20 2 * * * /home/tomcat/bin/test3.sh
20 2 * * * /home/tomcat/bin/test.sh
答案 2 :(得分:0)
这是一条路。我将此路径添加到crontab
并且运行良好!
# path
SHELL=/bin/bash
PATH=/usr/local/bin/:/sbin:/bin:/usr/sbin:/usr/bin
LANG=en_US.UTF-8