2012-11-21 24 views
6

Đây là những gì tôi đang cố gắng để đạt được:Viết kết quả của một quá trình vào một tập tin trong đó có quá trình id trong tên tập tin của nó

  • Chạy một lệnh/quá trình ở chế độ nền và có nó ra chuyển hướng đến một tệp tạm thời được đặt tên theo id tiến trình của quá trình nền.
  • Ví dụ:
    • đầu & // quá trình Id của quá trình nền tảng này là 1123
    • Sản lượng hàng đầu nên được lưu trữ trong một tập tin 1123.temp

Đây có phải là có thể? Bởi vì để thực sự chạy nó trong nền, chúng ta sẽ không phải làm chuyển hướng trước khi đánh dấu nó như là một quá trình nền? Hoặc là có một số kỹ thuật để làm việc xung quanh này?

Trả lời

6

Bạn có thể chuyển hướng đến một tệp tạm thời và sau đó mv tệp đó với tên được yêu cầu, ví dụ:

process > /tmp/process.log & 
mv /tmp/process.log /tmp/$!.log 

$! là pid của quá trình được tạo nền trước đó. Lưu ý rằng mv chỉ đơn giản là đổi tên tệp đó. Nó sẽ không làm gián đoạn việc viết cho nó.

2

Chạy lệnh exec trong bash thay thế quy trình hiện tại (bash thực hiện một) bằng lệnh bạn đang thực hiện. Vì vậy, một cái gì đó như

bash -c "exec top > ${BASHPID}.temp" & 

sẽ hoạt động.

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