web-dev-qa-db-ja.com

これを取得するにはどうすればよいですかPython起動またはログイン時に実行するスクリプトですか?

サーバーのソフトウェアを起動するPythonスクリプトを実行しようとしています。サーバーソフトウェアを実行する必要がありますユーザー入力およびステータス情報のターミナルウィンドウ。

ノート:

  • サーバーにはGUIがあります
  • Ubuntu 19.10
  • フォルダー構造:〜/ parent/START_SERVER.py
  • Python3.8スクリプトは、ターミナルからのユーザー入力を必要とします

START_SERVER.py(実行可能として設定):

#!/usr/bin/env python3.8
import os
# Several lines of code
os.system('Java -jar server.jar')

私はもう試した:

  1. ホームディレクトリの。bashrc./parent/START_SERVER.pyを追加する
  2. python3.8 /parent/START_SERVER.py。bashrcに追加する
  3. 。bashrcpython3.8 ~/parent/START_SERVER.pyを追加する
  4. 上記のコマンドをスタートアップアプリケーションに追加する
  5. / etc/profile.dからSTART_SERVER.pyへのシンボリックリンクの作成
  6. START_SERVER.pyを指すSTART_SERVER.shを使用して上記のすべてを行う

行動:

  1. 1-5の場合、ログイン時に「続行してもよろしいですか?」というポップアップが表示されることがあります。 1つのオプション:「ok」
  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
Craig

##〜/ .config/autostart ##

  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ウィンドウを開き、pythonスクリプトをbashで実行する必要があります。

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

自動実行の設定方法Python Systemdを使用したスクリプト

2
da_kingpin