簡體   English   中英

登錄時在終端中運行 python 腳本

[英]Run python script in terminal at login

我編寫了一個 python 腳本,其中包含一個無限循環的菜單。 我的目標是在用戶登錄並開始與之交互時在終端中啟動腳本。 我創建了一個 launcher.sh 文件,它將在啟動時執行並在 crontab 中注冊它。 但是,當系統重新啟動時,它會出現以下錯誤:

1: START
2: POWEROFF
Please make a choice: Traceback (most recent call last):
  File "menu.py", line 27, in <module>
    main()
  File "menu.py", line 16, in main
    choice = input ("Please make a choice: ")
EOFError: EOF when reading a line

這是我的腳本:

#!/usr/bin/python3
def main():
    while True:
        print("1: START")
        print("2: POWEROFF")
        choice = input ("Please make a choice: ")
        print(choice)
        ... other operations

這是我的 launcher.sh 文件:

#!/bin/sh
# launcher.sh
cd /home/rao/Desktop/project
sudo python3 menu.py
cd /

和 crontab 行:

@reboot sh /home/rao/Desktop/project/launcher.sh >> /home/rao/Desktop/project/logs/status.log 2>&1

我哪里錯了?

Cron 作業以非交互方式執行,這就是它無法讀取用戶輸入的原因。 它們絕對不是應該與用戶交互的東西的正確位置。

由於您的腳本的目的是與用戶交互,因此當沒有用戶時,無需在系統啟動時運行它。 你想在用戶登錄時運行它,我猜。

您可以將腳本放入用戶的~/.profile或者如果您使用的是 bash,請將其放入~/.bash_profile~/.bashrc

~/.profile~/.bash_profile ,它將在用戶每次登錄時執行(后者僅當他使用 bash 時)。

.bashrc情況下,每次用戶打開交互式終端時都會執行它。

例如查看這篇文章以獲取詳細信息:

~/.profile是放置適用於整個會話的內容的地方,例如您希望在登錄時啟動的程序(但不是圖形程序,它們進入不同的文件)和環境變量定義。

當我在啟動應用程序中放置以下命令時它起作用了

x-terminal-emulator -e "python3 /path-to-script/menu.py"

看起來您的程序在input()行終止,這可能會導致EOFError

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM