【发布时间】:2013-02-25 06:02:37
【问题描述】:
#!/bin/bash
value=$(</var/www/sym_monitor/man.txt)
if [ "$value" == "true" ]; then
ps -ef|grep sym |grep -v grep |awk '{ print $2 }'|sudo xargs kill -9;
cd /var/www/symmetric-ds-3.1.6/bin;
sleep 30;
(sudo ./sym --port 8082 --server);
fi
我正在尝试使用 cron 每 10 分钟运行一次上述脚本。在根目录下手动运行脚本运行良好,但是当我尝试在 cron 中运行脚本时,它正在执行 (ps -ef|grep sym |grep -v grep |awk '{ print $2 }'|sudo xargs kill - 9;)并且它没有执行脚本(sudo ./sym --port 8082 --server)并且它没有给出任何错误。有人可以给我建议吗?
【问题讨论】:
-
脚本的任何输出?这通常通过邮件或系统日志发送,具体取决于您的 cron 配置。除此之外:这可能是路径问题:您没有在脚本中设置工作目录,所以 is
./sym? -
什么都没有输出。即使我在脚本(sudo ./sym --port 8082 --server)之前使用 echo $PATH 但它没有打印它(ECHO $PATH;)这是打印路径的正确命令吗?该脚本位于 (/var/www/symmetric-ds-3.1.6/bin) 位置
-
嗯,首先你必须找出输出的去向。因此,制作另一个输出一些调试字符串的小脚本,通过 cron 启动它并检查输出可能发送到的设置。这也取决于您使用哪个 crontab。全系统? root的crontab?用户的 crontab?从 cron 脚本定向输出有据可查,如果您在这一步遇到问题,我建议您开始阅读 cron 手册页(
man crontab、man cron)...
标签: linux shell ubuntu crontab