我正在尝试执行一个 Python 脚本来启动我的服务器的软件。服务器软件必须跑在终端窗口中显示用户输入和状态信息。
笔记:
- 服务器有 GUI
- Ubuntu 19.10
- 文件夹结构:〜/ parent /启动服务器.py
- Python3.8脚本需要用户从终端输入
START_SERVER.py(设置为可执行文件):
#!/usr/bin/env python3.8
import os
# Several lines of code
os.system('java -jar server.jar')
我试过了:
- 添加
./parent/START_SERVER.py
.bashrc在主目录中 - 添加
python3.8 /parent/START_SERVER.py
到.bashrc - 添加
python3.8 ~/parent/START_SERVER.py
到.bashrc - 将上述命令添加到启动应用程序
- 在中创建符号链接/etc/profile.d到启动服务器.py
- 完成以上所有操作启动服务器指向启动服务器.py
行为:
- 1-5 有时会导致登录时弹出一个窗口,提示“您确定要继续吗?”,只有一个选项:“确定”
- 当尝试 5 时,我在登录时收到以下信息:
加载 /etc/profile 时发现错误:
/etc/profile.d/START_SERVER.sh:第 3 行::
----> Outputs line 3 of my file, finding part of a comment that says "./START_SERVER.py"<------
没有此文件或目录/etc/profile.d/START_SERVER.sh:第 6 行:意外标记“(”附近有语法错误
/etc/profile.d/START_SERVER.sh: 第 6 行:`def setSettings():'
此刻我真的不知道该怎么办。 如何让该脚本在登录时运行?
答案1
## ~/.config/自动启动 ##
- 打开 gnome-terminal 窗口。
创建终端配置文件。
导航至“编辑->首选项”
点击“个人资料”旁边的“+”
命名配置文件。(在本例中我将使用“RunComm”)
单击“命令”选项卡。
导航到“当命令退出时”选择框并选择“保持终端打开”
点击“关闭”退出
在编辑器中在目录中创建一个
*.desktop
文件~/.config/autostart
。
start-server.desktop
[Desktop Entry]
Name=StartServer
Type=Application
Exec=gnome-terminal --working-directory=/home/{YOUR_USER_NAME_HERE}/parent --profile='RunComm' -e 'bash -ci ./START_SERVER.py;bash'
- 更改文件的文件模式
start-server.desktop
,使其可执行。chmod +x ~/home/{YOUR_USER_NAME_HERE}/parent/start-server.desktop
**** 我不确定第 4 步是否有必要。老习惯了。我还没有测试过 ****
在用户登录时应该打开一个 gnome-terminal 窗口并在 bash 中执行 python 脚本。
Systemd(启动时)
为脚本创建一个单元服务文件。如果目录~/.local/share/systemd/user
不存在,则创建它。在终端中输入mkdir -p ~/.local/share/systemd/user
在编辑器中创建一个文件~/.local/share/systemd/user/startserver.service
[Unit]
Description=Start server
[Service]
RemainAfterExit=no
Type=simple
ExecStart=/usr/bin/python3 /home/{YOUR_USER_NAME_HERE}/parent/START_SERVER.py
[Install]
WantedBy=default.target
然后启用服务
systemctl --user enable startserver.service
然后它将在用户登录时自动启动
可以使用以下方式检查状态
systemctl --user status startserver.service
和
journalctl --user -u startserver.service