【发布时间】:2019-11-03 13:26:58
【问题描述】:
我有一个 python 机器人,我在命令行中启动并要求我登录才能开始工作。
为了跳过这一步,我添加了一个管道来直接在命令中插入登录名,如下所示:
printf "login" | python_module-py
现在,我想安排机器人的启动,这样就不必自己启动它,并避免机器人需要我的计算机始终打开。
所以我买了一个 Debian VPS 并尝试创建一个 systemd 服务。我把命令放在一个shell中。这是我的服务:(假设我的脚本在 /home/user 并且我拥有所有权限 rwx)
[Unit]
Description=Description
After=network.target
[Service]
Type=simple
User=user
Group=group
WorkingDirectory=/home/user
ExecStart=./script.sh
[Install]
WantedBy=multi-user.target
我尝试启动它,但由于此错误而失败:
TypeError: unsupported operand type(s) for /: 'NoneType' and 'int'
我几乎可以肯定那是因为登录没有通过管道传递,我想知道为什么。
请原谅我的英语问题。
[也经过测试]
使用/bin/sh -c 将命令保留在服务中也会给出相同的错误:
ExecStart=/bin/sh -c '/usr/bin/printf "login" | /usr/bin/python3.7 -m python_module'
【问题讨论】: