0

我在运行 .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)
4

1 回答 1

0

好的,我找到了解决方案。我不知道这是否是“正确”的解决方案。因为我的系统在 HOST 和 GUEST(Windows 7 和 Ubuntu VM)之间共享文件,所以 /mnt/hgfs/ 必须安装(我认为)..并且重启发生得足够快,我认为安装还不知道。

所以我通过 crontab -e 添加了这个

@reboot /bin/sleep 15; /var/www/nodejs-test/starter.sh

它就像一个魅力。

于 2013-11-10T22:37:43.487 回答