【发布时间】:2018-02-03 11:09:34
【问题描述】:
我有一个 Debian 服务器和
我需要一个调用 sql-script 的 sh 脚本
为了从 MySQL 表中获取一些数据
所以我通过 ssh 以 root 身份连接到我的服务器并创建了所有文件
请注意,我使用了脚本中所有文件的完整路径
为了避免误解。
/root/bin/mgbc.sh
#!/bin/sh
(echo "SET @cid=570; SET @cid2='service@';" ; cat /root/bin/mgbc.sql) |/full-path-to/mysql -uusername -pservetword > /root/bin/result_mgbc.txt
/root/bin/mgbc.sql
SELECT table1.id, table1.a_id, table2.email
FROM table1
INNER JOIN table2 ON table1.a_id=table2.id
AND table1.campaign_id = @cid
AND table2.email LIKE CONCAT('%', @cid2 ,'%')
;
让我们运行它
*/root/bin/mgbc.sh*
在*/root/bin/result_mgbc.txt*
我看到了
*table1.id、table1.a_id、table2.email*
还有很多行
然后我决定把它作为一个crontab任务
所以我进入了
crontab -e
并添加了一行
35 10 1 * * /root/bin/mgbc.sh
我从 crontab 日志文件中看到脚本已启动,
但在*/root/bin/result_mgbc.txt*
我只看到字段列表
table1.id, table1.a_id, table2.email
而且根本没有数据。
看起来 @cid 和 @cid2 参数在某处丢失了 当 crontab 运行脚本时。
谁能告诉我发生了什么以及如何解决这个问题?
提前致谢。
【问题讨论】:
-
我怀疑回显命令字符串确实会执行它们。对此进行调查。
-
是的,看起来像这样。由于我的想法是从 sh 脚本中排除任何参数,然后将其作为 /root/bin/mgbc.sh 570 'service@' 运行,我认为最好忘记它:-)
-
70+ Q/A 在这里搜索
[linux] does not work from crontab。祝你好运。