如何让这个 Python 脚本在启动或登录时执行?

如何让这个 Python 脚本在启动或登录时执行?

我正在尝试执行一个 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')

我试过了:

  1. 添加./parent/START_SERVER.py.bashrc在主目录中
  2. 添加python3.8 /parent/START_SERVER.py.bashrc
  3. 添加python3.8 ~/parent/START_SERVER.py.bashrc
  4. 将上述命令添加到启动应用程序
  5. 在中创建符号链接/etc/profile.d启动服务器.py
  6. 完成以上所有操作启动服务器指向启动服务器.py

行为:

  1. 1-5 有时会导致登录时弹出一个窗口,提示“您确定要继续吗?”,只有一个选项:“确定”
  2. 当尝试 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/自动启动 ##

  1. 打开 gnome-terminal 窗口。
  2. 创建终端配置文件。

    导航至“编辑->首选项”

    点击“个人资料”旁边的“+”

    命名配置文件。(在本例中我将使用“RunComm”)

    单击“命令”选项卡。

    导航到“当命令退出时”选择框并选择“保持终端打开”

    点击“关闭”退出

  3. 在编辑器中在目录中创建一个*.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'
  1. 更改文件的文件模式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

systemd

如何使用 Systemd 设置自动运行 Python 脚本

相关内容