Debian 10可执行文件运行方法及systemd自启配置报错咨询
问题原因
你遇到的问题来自两个明确的错误:
- systemd的
ExecStart参数强制要求可执行文件写绝对路径,即使配置了WorkingDirectory也不支持./这种相对路径写法,这是你报错的直接原因。 myserver是静态编译的ARM架构ELF二进制文件,不是shell脚本,所以用bash myserver/sh myserver执行肯定会失败,没有任何意义。
解决方案
一、修复systemd开机自启配置
修改/etc/systemd/system/myserver.service里的ExecStart行,替换为绝对路径:
[Unit] Description=myserver After=network-online.target [Service] ExecStart=/home/sahar/myserver WorkingDirectory=/home/sahar StandardOutput=inherit StandardError=inherit Restart=always User=sahar [Install] WantedBy=multi-user.target
修改完成后执行以下命令生效:
- 重载systemd配置:
systemctl daemon-reload - 启动服务测试运行:
systemctl start myserver - 查看服务运行状态:
systemctl status myserver - 确认运行正常后设置开机自启:
systemctl enable myserver
二、其他手动执行方法(无需每次加./)
如果平时手动运行时不想每次都输入./myserver,可以用以下两种方案实现直接输入myserver即可运行:
- 将文件所在目录加入PATH环境变量
- 临时生效(仅当前终端窗口有效):
export PATH=/home/sahar:$PATH - 永久生效(针对sahar用户):把上面这行代码添加到
~/.bashrc文件末尾,执行source ~/.bashrc后即可全局生效。
- 临时生效(仅当前终端窗口有效):
- 将文件移动到系统默认可执行目录
执行命令:sudo mv /home/sahar/myserver /usr/local/bin/,之后所有用户都可以在任意位置直接输入myserver运行程序。如果你的程序依赖同目录下的配置文件,需要同步把配置文件移动到对应路径,或者修改程序内的配置读取路径。
内容的提问来源于stack exchange,提问作者Sahar
相关产品推荐
相关产品推荐

