coreos - systemd 单元失败并出现错误 "trailing garbage"

标签 coreos systemd

我的 systemd 输出出现以下非常奇怪的错误:

5月26日10:21:11 ip-10-30-2-251.ec2.internal systemd[1]: [/run/fleet/units/someservice.service:13] 尾随垃圾,忽略。 5 月 26 日 10:21:11 ip-10-30-2-251.ec2.internal systemd[1]: [/run/fleet/units/someservice.service:14] 缺少“=”。

这是我运行以下服务时引起的:

[Unit]
Description=SOMESERVICE
Requires=docker.service  
After=docker.service

[Service]
User=core
TimeoutSec=15m
RemainAfterExit=yes
EnvironmentFile=/etc/environment
ExecStartPre=/usr/bin/docker pull micronginx
ExecStartPre=/usr/bin/docker pull microphp
ExecStart=/usr/bin/bash -c ' \
    MACHINE=`cat /etc/machine-id`; \
    etcdctl get /service/someservice/machines/$MACHINE/version; \
    if [ $? -ne 0 ]; then \
        etcdctl set /service/someservice/machines/$MACHINE/version 0; \
    fi; \
    while true; \
    do \
        MACHINE_VERSION=$(etcdctl get /service/someservice/machines/$MACHINE/version); \
        SOMESERVICE_VERSION=$(etcdctl get /service/someservice/version); \
        if [ "$MACHINE_VERSION" != "$SOMESERVICE_VERSION" ]; then \
            echo "Versions are different so starting deployment of version $SOMESERVICE_VERSION \n"; \
            etcdctl get /service/someservice/config > /tmp/someservice-$SOMESERVICE_VERSION; \
            SOMESERVICE_BASE_PORT=5000; \
            PORT=`echo $SOMESERVICE_VERSION | cut -d\'.\' -f 2`; \
            SOMESERVICE_PORT=$((SOMESERVICE_BASE_PORT+PORT)); \
            /usr/bin/docker pull someservice:$SOMESERVICE_VERSION; \
            /usr/bin/docker create -v /var/www --name someservice_$SOMESERVICE_VERSION someservice:$SOMESERVICE_VERSION; \
            /usr/bin/docker run --rm --name microphp_someservice_$SOMESERVICE_VERSION --volumes-from someservice_$SOMESERVICE_VERSION --env-file /tmp/someservice-$SOMESERVICE_VERSION microphp & \
            /usr/bin/docker run -d --name micronginx_someservice_$SOMESERVICE_VERSION --volumes-from someservice_$SOMESERVICE_VERSION -p $SOMESERVICE_PORT:80 --link=microphp_someservice_$SOMESERVICE_VERSION:php-fpm micronginx; \
            if [ $? -eq 0 ]; then \
                echo "Setting machine version in etcd to $SOMESERVICE_VERSION"; \
                etcdctl set /service/someservice/machines/$MACHINE/version "$SOMESERVICE_VERSION"; \
                sleep 1; \
                echo "New machine version is visible in etcd as $(etcdctl get /service/someservice/machines/$MACHINE/version)"; \
            fi; \
            rm -f /tmp/someservice-$SOMESERVICE_VERSION; \
        fi; \
        echo "sleep for 10 seconds and recheck \n"; \
        sleep 10; \
    done; '

[X-Fleet]
Global=true

有什么想法可以解释为什么或如何解决此错误或可能导致此错误的原因吗?

-S。

最佳答案

我想我在某处听说过服务有最大线路长度。您是否尝试过将巨大的命令放入脚本中并执行该脚本?如果这不起作用,您可以创建多个 ExecPre 语句并一次构建脚本的一部分。然后您的执行人员可以运行该脚本。如果您使用云配置,则可以使用“write_file”命令将脚本写入目标计算机。

github issue max length

2048 是一行的最大长度(反引号被消耗,你的命令是一大行)。

关于coreos - systemd 单元失败并出现错误 "trailing garbage",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30456047/

相关文章:

openstack - Kubernetes。无法从主机连接到任何Pod

vagrant - 如何在服务启动之前加载 docker 图像?

docker - 在CoreOS的同一Docker容器中运行两个服务?

linux - gnome登录后播放视频文件

tomcat - systemd:延迟服务的返回,直到启动完成

amazon-web-services - CoreOS AWS Cloudinit 问题

docker - 挂载的卷不会被 docker 图像内容填满

docker - 核心安全

bash - 如何检查我的本地 docker 镜像是否已过时,而无需从其他地方推送?

selenium - 测试立即失败,出现未知错误 : DevToolsActivePort file doesn't exist when running Selenium grid through systemd