web-dev-qa-db-ja.com

ログイン時にターミナルでpythonスクリプトを実行する方法は?

Debian virtual machineを自動的にログインするように設定しましたが、自動ログインが発生したときにターミナルが開いてコマンドを実行するように設定したいと思います。

python /home/pymodbus/examples/common/synchronous_client.py

pythonスクリプトからの出力はターミナル内で発生するため、最初にスクリプトを開きたいと思います。私はすでに多くの調査を行い、次のような多くのことを試しました。このコマンドを/etc/rc.localファイルに入れますが、これは何もしないようです。

さらに、私はこれを試しました

gnome-terminal -e "python /home/pymodbus/examples/common/synchronous_client.py"

しかし、これは私が思ったようにログイン時にターミナルを起動しませんでした。

誰かがこれを達成する方法についていくつかの洞察を持っていますか?私はLinuxに非常に慣れていないので、必要なパッケージとツールを見つけようとするのは非常に混乱した経験でした。

2
Aidan

だから私はこれを行う方法を理解することができました、そして私はここで私の発見を共有したいと思いました。これが私が取ったステップです:

  1. 起動時にコマンドを実行するために、.bashrc/home/etc/ファイルを編集し、すべての事前に記述されたコード(Sudo python /home/usr/pymodbus/examples/common/synchronous_client.py)の最後にコマンドを配置しました。 コマンドにSudoが含まれていることを確認してください。
  2. 起動時に端末を起動するために、~/.config/autostartにデスクトップファイルを作成しました(自動起動フォルダーがない場合は、作成するだけです)。

  3. 自動起動フォルダーに、.desktopという名前のgnome-terminal.desktopファイルを作成し、次のように入力しました。

    [Desktop Entry]
    Type=Application
    Exec=gnome-terminal
    Hidden=false
    NoDisplay=false
    X-GNOME-Autostart-enabled=true
    Name[en_NG]=Terminal
    Name=Terminal
    Comment[en_NG]=Start Terminal On Startup
    Comment=Start Terminal On Startup
    
  4. 最後に、スクリプトを実行するときにSudoパスワードを入力する必要をなくすために、コマンドSudo visudoを実行し、ファイルの最後に次の行を配置しました。

    <username> ALL=(ALL) NOPASSWD:ALL
    

これが私と同じようなことをしようとしている人の助けになることを願っています!

1
Aidan

起動メカニズムとしてcronを使用することを検討してください。 cronエントリリストの下部に@reboot python /home/pymodbus/examples/common/synchronous_client.py &を追加します(&を忘れないでください)コンピュータの起動時に実行するスクリプトを設定できます-問題のスクリプトをchmod + xすることを忘れないでください-これによりシステムが有効になりますスクリプトを実行します。

cronにアクセスするには、Sudo crontab -eと入力します。

0
JohnnyVegas