Tôi có thể thay đổi tên của 'nohup.out` không?


254

Khi tôi chạy nohup some_command &, đầu ra đi đến nohup.out; man nohupnói để nhìn vào info nohupđó lần lượt nói:

Nếu đầu ra tiêu chuẩn là một thiết bị đầu cuối, đầu ra tiêu chuẩn của lệnh sẽ được thêm vào tệp 'nohup.out'; nếu điều đó không thể được ghi vào, nó sẽ được thêm vào tệp '$ HOME / nohup.out'; và nếu điều đó không thể được ghi vào, lệnh sẽ không chạy.

Nhưng nếu tôi đã có một lệnh sử dụng nohupvới đầu ra sẽ đến /nohup.outvà tôi muốn chạy một nohuplệnh khác, tôi có thể chuyển hướng đầu ra sang nohup2.outkhông?

Câu trả lời:


416
nohup some_command &> nohup2.out &

và Voila.


Cú pháp cũ hơn cho phiên bản Bash <4:

nohup some_command > nohup2.out 2>&1 &

4
@ismail, nếu tôi hiểu, điều này sẽ hướng đầu ra ra khỏi stdout và nohup.out, vào nohup2.out. Vậy thì 2>&1&làm gì?
David LeBauer

12
2>&1chuyển hướng stderrđến cùng một tệp đầu ra như stdouttrong trường hợp nàynohup2.out
ismail

17
Trong Bash 4, hai chuyển hướng có thể được viết tắt là một &> nohup2.out.
ephemient

1
Tôi đã thử &> nohup2.out và nó hoạt động, nhưng làm thế nào bạn có thể nói phiên bản bash của bạn?
monkut

9
@monkut bash --version
ismail

58

Vì một số lý do, câu trả lời trên không có tác dụng với tôi; Tôi đã không trở lại dấu nhắc lệnh sau khi chạy nó như tôi mong đợi với dấu &. Thay vào đó, tôi chỉ đơn giản là thử với

nohup some_command > nohup2.out&

và nó hoạt động như tôi muốn. Để lại đây ở đây trong trường hợp người khác ở trong tình trạng tương tự. Chạy Bash 4.3.8 để tham khảo.


12

Khi trình xử lý tệp trỏ đến các nút i (được lưu trữ độc lập với tên tệp) trên các hệ thống Linux / Unix Bạn có thể đổi tên mặc định nohup.outthành bất kỳ tên tệp nào khác bất cứ lúc nào sau khi bắt đầu nohup something&. Vì vậy, người ta cũng có thể làm như sau:

$ nohup something&
$ mv nohup.out nohup2.out
$ nohup something2&

Bây giờ somethingthêm dòng nohup2.outsomething2đến nohup.out.


10

Các phương pháp trên sẽ xóa dữ liệu tệp đầu ra của bạn bất cứ khi nào bạn chạy trên lệnh nohup.

Để chắp thêm đầu ra trong tệp do người dùng xác định, bạn có thể sử dụng >>trong lệnh nohup.

nohup your_command >> filename.out &

Lệnh này sẽ nối thêm tất cả đầu ra trong tệp của bạn mà không xóa dữ liệu cũ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.