Linux init script làm gì 0 <& - &> đạt được


7

Tôi đang xem xét việc viết init.dcác tập lệnh của riêng mình để kiểm soát một số dịch vụ đang chạy trên Linuxmáy chủ của tôi . Tôi đã xem qua một ví dụ trực tuyến có chứa:

nohup $EXEC_SCRIPT 0<&- &> $LOG_FILE & echo $! > $PID_FILE

Từ những gì tôi hiểu:

  • nohupBắt hanguptín hiệu
  • $EXEC_SCRIPT là một biến chứa lệnh được chạy
  • 0<&- &> Không gặp phải điều này trước đây
  • $LOG_FILEtương tự $EXEC_SCRIPTnhưng chứa đường dẫn tệp nhật ký
  • &bắt đầu đăng nhập $LOG_FILEvào nền?
  • $! là PID của lệnh nền cuối cùng
  • >viết kết quả của $!sang$PID_FILE

Tôi có thể làm việc thông qua nó với kiến ​​thức này nhưng 0<&- &>nó hoàn toàn làm tôi thất vọng. Tôi không muốn bao gồm những điều mà trước tiên tôi không hiểu một phần.

Câu trả lời:


8

Đây là những chuyển hướng.

  • 0<&- đóng bộ mô tả tập tin 0 (đầu vào tiêu chuẩn).
  • &> chuyển hướng cả stdout và stderr (trong trường hợp này là logfile)

Bạn có chắc chắn không có echotrước đây $!? $!sẽ được hiểu là một lệnh và rất có thể dẫn đến một

-bash: 18552: command not found

Bạn đã đúng, đã có một lời cảm ơn echotrước $!lời giải thích

2

& <- đóng bộ mô tả tệp. Nhưng về cơ bản hơn, việc tìm kiếm những nguyên tử "&" nhỏ bé đó trên Google có thể rất đau đớn! Xem trang web này về chuyển hướng bash để biết thông tin cơ bản.

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.