2011-09-27 38 views
13

Tôi đang phát triển một chương trình có nút. Khi được hỏi, tôi muốn mở một terminal chạy:mở một thiết bị đầu cuối từ python

sudo apt-get update 

Tôi đang sử dụng:

os.system("gnome-terminal -e 'sudo apt-get update'") 

này hoạt động tốt. Vấn đề duy nhất là khi quá trình cập nhật kết thúc, terminal sẽ đóng lại. Tôi có thể làm gì để rời khỏi thiết bị đầu cuối mở?

+0

Xem bài đăng này: http://stackoverflow.com/questions/3512055/avoid-gnome-terminal-close-after-script-execution – rodion

Trả lời

11

Bạn có thể làm điều này:

os.system("gnome-terminal -e 'bash -c \"sudo apt-get update; exec bash\"'") 
+1

Và có lẽ là tương tự với konsole (nếu tôi sử dụng KDE)? – mika29

+0

os.system ("gnome-terminal -e 'sudo apt-get update'"). Không chắc chắn tại sao bạn cần thêm 'bash' khi điều này hoạt động tốt. – mastash3ff

+1

@ mastash3ff - đọc câu hỏi. "khi cập nhật xong, thiết bị đầu cuối đóng". Cuộc gọi bash thêm làm cho nó vẫn mở. – jterrace

4

Có một vài lựa chọn:

  • thêm ; read -p "Hit ENTER to exit" đến cuối dòng lệnh.
  • thêm ; sleep 10 vào cuối dòng lệnh để chờ một chút rồi thoát.
  • Định cấu hình thiết bị đầu cuối gnome:

    Chuyển đến menu "Chỉnh sửa" và nhấp vào "Hồ sơ hiện tại". Nhấp vào tab "Tiêu đề và Lệnh". Trong đó, có một thiết lập được gọi là "Khi thoát lệnh". Thay đổi nó thành "giữ thiết bị đầu cuối mở". Bạn cũng có thể tạo một hồ sơ mới.

0

Bạn có thể loại bỏ các -e:

os.system("gnome-terminal 'sudo apt-get update'") 
+1

Không thể làm việc này. Đã phải sử dụng tùy chọn -e như được đề xuất ở trên. – mastash3ff

Các vấn đề liên quan