Tôi đang cố gắng chuyển một tập lệnh shell sang phiên bản python dễ đọc hơn nhiều. Tập lệnh shell ban đầu bắt đầu một số quy trình (tiện ích, màn hình, v.v.) trong nền với "&". Làm thế nào tôi có thể đạt được hiệu quả tương tự trong trăn? Tôi muốn các quá trình này không chết khi các kịch bản python hoàn thành. Tôi chắc chắn rằng nó liên quan đến khái niệm daemon bằng cách nào đó, nhưng tôi không thể tìm thấy cách làm điều này một cách dễ dàng.
subprocess.Popen()
là cách được đề xuất mới kể từ năm 2010 (hiện tại chúng tôi đang ở 2015) và (3) câu hỏi trùng lặp chuyển hướng ở đây cũng là một câu trả lời được chấp nhận subprocess.Popen()
. Chúc mừng :-)
subprocess.Popen("<command>")
với tệp <lệnh> được dẫn bởi một shebang phù hợp. Hoạt động hoàn hảo đối với tôi (Debian) với các tập lệnh bash và python, hoàn toàn shell
s và tồn tại quá trình cha mẹ của nó. stdout
đi đến cùng một thiết bị đầu cuối hơn của cha mẹ. Vì vậy, điều này hoạt động giống như &
trong một vỏ được yêu cầu OP. Nhưng chết tiệt, tất cả các câu hỏi diễn ra rất phức tạp trong khi một thử nghiệm nhỏ cho thấy nó ngay lập tức;)