【发布时间】:2020-04-21 11:51:54
【问题描述】:
我想使用 Makefile 和 shellscript 使用 nuxt 生成和渲染静态内容。
生成文件:
deploy-content: ## Generate content using nuxt
@echo $(/bin/bash -c cd /var/www/nuxt; npm run --prefix /var/www/nuxt generate)
render.sh:
#!/bin/sh
# start generating content in background
make deploy-content > /dev/null 2>&1 &
Crontab -e :) :
# Midnight 2 am
0 2 * * * cd /var/www/generate/ && make deploy-content > /dev/null 2>&1 &
还请考虑以下事项:
- render.sh 拥有 +x 权限。
- Makefile 和 render.sh 位于不同的目录(不是 在 /var/www/nuxt 中)。
- 当我从 shell 运行 shellscript 时,它可以正常工作,但不能在 crontab 中运行。
- 我还尝试将 npm 命令直接放入 crontab 中。 (没用)
有人可以帮助我吗,Pleeeeeeeeeeease?可能是我错过了什么,没有意识到。 :)
非常感谢,干杯!
【问题讨论】:
-
执行是否在不同于所有者的用户或组下运行? rwx------ 你的文件权限是什么?也许只是为了测试目的尝试 rwxrwxrwx 看看它是否有效。
-
它在同一个用户/组下运行,并且从 shell 中完美执行,但不是来自 crontab @Elijah
-
我对 CRON 不是很熟悉,但我在 UNIX 中遇到的大多数问题都是基于权限的问题。我会尝试出于测试目的将文件和文件夹更改为 rwxrwxrwx。然后再次尝试 cron。
-
很好奇。是权限问题还是问题仍然存在?
-
你能提供
render.sh吗?它是脚本中唯一的一行吗?如果是,则可能与您在后台运行它有关,因此它可以在您从 shell 执行它的地方工作,该 shell 在脚本执行后保持打开状态;但它不适用于 crontab,它可能会在运行脚本后关闭“会话”。
标签: shell ubuntu npm cron nuxt.js