Tôi muốn có thể bắt đầu quá trình và sau đó có thể giết nó saulà có một cách để bắt đầu/ngừng các quá trình linux với python?
Trả lời
Hãy xem mô-đun subprocess
. Bạn cũng có thể sử dụng các nguyên thủy cấp thấp như fork()
qua mô-đun os
.
Một chức năng đơn giản mà sử dụng mô-đun subprocess:
def CMD(cmd) :
p = subprocess.Popen(cmd, shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
close_fds=False)
return (p.stdin, p.stdout, p.stderr)
thấy tài liệu cho ngã ba nguyên thủy() và các module subprocess, multiprocessing, multithreading
Nếu bạn cần phải tương tác với các tiểu quá trình ở tất cả, tôi khuyên bạn nên mô-đun pexpect (link text). Bạn có thể gửi đầu vào cho quá trình, nhận được (hoặc "mong đợi") đầu ra trong trở lại, và bạn có thể đóng quá trình (với lực = True để gửi SIGKILL).
Đây là một tập lệnh python nhỏ bắt đầu quá trình, kiểm tra xem nó đang chạy, chờ một lúc, giết nó, chờ nó chấm dứt, sau đó kiểm tra lại. Nó sử dụng lệnh 'kill'. Phiên bản 2.6 của quy trình con trăn có chức năng diệt. Điều này được viết trên 2.5.
import subprocess
import time
proc = subprocess.Popen(["sleep", "60"], shell=False)
print 'poll =', proc.poll(), '("None" means process not terminated yet)'
time.sleep(3)
subprocess.call(["kill", "-9", "%d" % proc.pid])
proc.wait()
print 'poll =', proc.poll()
Sản lượng theo thời gian cho biết rằng nó đã bị chấm dứt sau khoảng 3 giây và không phải 60 như lời gọi cho giấc ngủ đề xuất.
$ time python prockill.py
poll = None ("None" means process not terminated yet)
poll = -9
real 0m3.082s
user 0m0.055s
sys 0m0.029s
- 1. Bắt đầu một quá trình trong nền trong Linux với C
- 2. Quá trình nền trong linux
- 3. Giết một quá trình python
- 4. Python - Chia sẻ một mảng mờ giữa các quá trình?
- 5. Hệ điều hành bắt đầu quá trình giết khi quá trình python đa luồng chạy
- 6. Liệu hạt nhân Linux có thể được coi là một quá trình đơn lẻ
- 7. Bắt đầu một quá trình riêng biệt
- 8. Bắt quá trình node.js chết?
- 9. Có cách nào để vượt qua 'stdin' như là một đối số cho một quá trình trong python?
- 10. Nicing một quá trình python đang chạy?
- 11. Trên Linux, một quá trình có thể hiển thị GUI của một quy trình khác không?
- 12. Giết chết một quá trình tạo ra với subprocess.Popen Python()
- 13. Bắt đầu quá trình phi cao từ quá trình cao
- 14. bắt đầu quá trình ghi trong Groovy
- 15. Có thể cho một quá trình java trong một jvm để giết/dừng một quá trình java khác trong jvm?
- 16. Viết để thực hiện quá trình 'hình ảnh trên Linux
- 17. Python: ghi vào bộ nhớ của một quá trình khác theo linux
- 18. linux: nhận được umask của một quá trình đã chạy?
- 19. gọi ptrace bên trong một quá trình trên Linux ptraced
- 20. Sẽ xử lý với nhiều chủ đề trên Linux có nhiều thời gian cpu hơn quá trình với một sợi?
- 21. Hủy quá trình bắt đầu qua System.Diagnostics.Process.Start()
- 22. Các id quá trình không âm trong Linux phải không?
- 23. quá trình sinh sản từ python
- 24. giết một quá trình bắt đầu bằng popen
- 25. Có xóa dữ liệu khi quá trình bắt đầu không?
- 26. Bắt đầu một quá trình với một tên người dùng và mật khẩu
- 27. Tôi đã bắt đầu một quy trình, làm cách nào để gọi một phương thức trong quá trình đó
- 28. Django: Tôi có nên bắt đầu một quá trình riêng biệt không?
- 29. linux: lập trình có được pid cha của một quá trình khác?
- 30. Bắt đầu quá trình trong Java?
bạn có thể sử dụng 'os.kill (..)' để hủy quá trình –
hoặc thậm chí 'proc.terminate()' hoặc 'proc.kill()' kể từ python 2.6 –