[英]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.