Upstart:作业启动失败

12

编辑

status marybaked 的输出结果如下:

marybaked stop/waiting

以下是 /var/log/syslog 的输出:

5月3日16:24:39 marybakedpdx kernel: [3464.189563] init: 无法生成marybakedpdx主进程:无法找到setuid用户

5月3日16:24:44 marybakedpdx kernel: [3469.342062] init: 无法生成marybaked主进程:无法找到setuid用户


当我运行 start marybaked 时,我得到的结果是:

start: 作业启动失败

当我运行 start <其他任何东西> 时,我得到的结果是:

start: 未知作业:

在我的 /var/logs/upstart 目录中没有 marybaked.log 日志文件...这是怎么回事? upstart 如何识别出 marybaked 是一个作业但无法启动它,却不为其创建错误日志?

以下是我的 /etc/init/marybaked.conf 文件:

# upstart service file at /etc/init/marybakedpdx.conf
    description "Meteor.js (NodeJS) application"
    author "Daniel Speichert <daniel@speichert.pro>"

    # When to start the service
    start on started mongodb and runlevel [2345]

    # When to stop the service
    stop on shutdown

    # Automatically restart process if crashed
    respawn
    respawn limit 10 5

    # we don't use buil-in log because we use a script below
    # console log

    # drop root proviliges and switch to mymetorapp user
    setuid marybakedpdx
    setgid marybakedpdx

    script
        export PATH=/opt/local/bin:/opt/local/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
        export NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
        # set to home directory of the user Meteor will be running as
        export PWD=/home/marybakedpdx
        export HOME=/home/marybakedpdx
        # leave as 127.0.0.1 for security
        export BIND_IP=127.0.0.1
        # the port nginx is proxying requests to
        export PORT=8080
        # this allows Meteor to figure out correct IP address of visitors
        export HTTP_FORWARDED_COUNT=1
        # MongoDB connection string using marybakedpdx as database name
        export MONGO_URL=mongodb://localhost:27017/marybakedpdx
        # The domain name as configured previously as server_name in nginx
        export ROOT_URL=http://marybakedpdx.com
        # optional JSON config - the contents of file specified by passing "--settings" parameter to meteor command in development mode
        export METEOR_SETTINGS='{ "somesetting": "someval", "public": { "othersetting": "anothervalue" } }'
        # this is optional: http://docs.meteor.com/#email
        # commented out will default to no email being sent
        # you must register with MailGun to have a username and password there
        # export MAIL_URL=smtp://postmaster@mymetorapp.net:password123@smtp.mailgun.org
        # alternatively install "apt-get install default-mta" and uncomment:
        # export MAIL_URL=smtp://localhost
        exec node /home/marybakedpdx/bundle/main.js >> /home/marybakedpdx/marybakedpdx.log
    end script
1个回答

14

您的启动文件看起来没问题,最可能的情况是在 script 块中的某些内容出现了故障。这应该在 syslog 中有详细说明。

尝试查看 /var/log/syslog

为了进一步调试,您还应该尝试在各个关键点上使用 touch 命令创建文件,以进一步缩小问题范围。例如:

touch /tmp/marybake0
exec node /home/marybakedpdx/bundle/main.js >> /home/marybakedpdx/marybakedpdx.log

如果文件不存在,touch命令将创建一个新的文件。

编辑:

根据您更新的帖子,用户marybakedpdx不存在。请尝试运行以下命令:

adduser marybakedpdx
addgroup marybakedpdx

运行 ls -l /home/marybakedpdx/marybakedpdx.log。该文件是否存在?如果存在,所有者是谁?当您执行 sudo -u marybakedpdx touch /home/marybakedpdx/marybakedpdx.log 时会发生什么? - Martin Konecny
我必须运行命令 chown marybakedpdx:marybakedpdx /home/marybakedpdx -R - redress
我在将文件scp到我的服务器时遇到了问题。应用程序跳到81%,然后停止,我收到以下错误信息:`rite failed: Broken pipe lost connection` - redress
你应该为此创建一个单独的问题,并将所有相关信息发布为新的问题。 - Martin Konecny
我在系统日志中遇到了这个问题:"[1808381.569995] init: Failed to spawn myProject main process: unable to execute: Permission denied"。 - Saif ali Karedia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接