【发布时间】:2013-11-22 13:25:10
【问题描述】:
我在运行 .sh 文件时遇到问题。我可以在我的应用程序目录中通过 sudo ./starter.sh 运行它,但是在重启时依赖它是行不通的。
我在 Windows 7 上使用 Ubuntu 12.04 VM。我在 Windows 上与 VM 共享文件,因此我通过 /mnt/hgfs/nodejs-test 访问我的文件
我正在通过我的本地 VM 使用 Nginx 运行 node.js 服务器。
截至目前,我可以转到http://node.dev,它会正确加载我位于 nodejs-test (/mnt/hgfs/nodejs-test) 中的 server.js 并将 hello world 输出到屏幕。
因此,运行该站点不是问题..但是永远(全局安装 forever.js)在重新启动时启动是行不通的。 我怀疑它根本无法执行我的 SH 文件。
这是我的 starter.sh
#!/bin/sh
if [ $(ps aux | grep $USER | grep node | grep -v grep | wc -l | tr -s "\n") -eq 0 ]
then
export PATH=/usr/local/bin:$PATH
forever start --sourceDir /mnt/hgfs/nodejs-test/server.js >> /mnt/hgfs/nodejs-test/serverlog.txt 2>&1
fi
现在我尝试了 sudo crontab -e (并将我的路径添加到文件)以及 crontab -e 并做了同样的事情。重启后……什么都没有。
@reboot /mnt/hgfs/nodejs-test/starter.sh
我尝试将那个 cronjob 编辑为此
@reboot /var/www/nodejs-test/starter.sh
因为我在 /var/www/nodejs-test 中创建了一个指向 /mnt/hgfs/nodejs-test 的符号链接
我在哪里可以检查重启时是否出现错误,或者我的重启 cron 是否根本没有运行?我知道运行 starter.sh 确实有效。
编辑 /mnt/hgfs/nodejs-test 由 root 拥有(考虑到文件存在于我的 Windows 7 操作系统上,这可能是 Windows 的事情)。我的 ubuntu 用户是我在安装 VM 时创建的“bkohlmeier”。
编辑#2
Nov 10 13:05:01 ubuntu cron[799]: (CRON) INFO (pidfile fd = 3)
Nov 10 13:05:01 ubuntu cron[875]: (CRON) STARTUP (fork ok)
Nov 10 13:05:01 ubuntu cron[875]: (CRON) INFO (Running @reboot jobs)
Nov 10 13:05:02 ubuntu CRON[887]: (bkohlmeier) CMD (/mnt/hgfs/nodejs-test/starter.sh)
Nov 10 13:05:02 ubuntu CRON[888]: (root) CMD (/var/www/nodejs-test/starter.sh >/dev/null2>&1)
Nov 10 13:05:02 ubuntu CRON[877]: (CRON) info (No MTA installed, discarding output)
Nov 10 13:05:02 ubuntu CRON[878]: (CRON) info (No MTA installed, discarding output)
【问题讨论】:
-
我不知道,但从 cron 日志看来它确实看到了 sh 并尝试执行它对吗?
-
是的,看起来就是这样......甚至似乎它通过我的用户名和 root 尝试。但即使我在 SH 文件中执行一个简单的 mkdir blah,它也永远不会触发。
-
我尝试了另一个,称为 test.sh,它唯一的工作就是 mkdir test1。当我通过 ./test.sh 运行它时,它运行良好..当我在 crontab 中设置它并重新启动时,nada。呸呸呸