Làm thế nào để tạo / dev / null?


65

Tôi đã xóa / dev / null của tôi. Làm thế nào tôi có thể khôi phục nó?


6
Tôi đã từng thấy rằng / dev / null đã được thay thế bằng một tệp bình thường mà chỉ root mới có thể ghi vào. Tôi đã nghĩ một lúc rằng tôi sẽ phải cài đặt lại mọi thứ nhưng như đã đề cập dưới đây, sự phục hồi là không đáng kể nếu bạn biết mẹo.
Stuart Woodward

1
Tôi đã quản lý để loại bỏ / dev / null bằng cách khiến đường ống của tôi bị lật $ và & xung quanh khi chạy lệnh rm trong tập lệnh. Ôi!
flickerfly

Câu trả lời:


81
mknod /dev/null c 1 3
chmod 666 /dev/null

Sử dụng các lệnh này để tạo /dev/nullhoặc sử dụng null(4)manpage để được trợ giúp thêm.


5
Để đầy đủ, tôi lưu ý rằng điều này áp dụng cho tất cả các hệ thống dựa trên linux; các hệ thống khác có thể có số khác nhau.
Random832

2
Ngoài ra, điều này chỉ thiết lập tập tin thiết bị, nó sẽ không khôi phục quyền của nó. Bạn sẽ phải làm chmod go+wbằng tay.
Attila O.

7
Số lượng của con thú!
wefwefa3

7
mknod -m 0666 /dev/null c 1 3- điều tương tự nhưng ngắn hơn
fnkr

1
mknod -m 0666 /dev/null c 1 3đã hoạt động hoàn hảo để khôi phục / dev / null trên CentOS 7, chỉ để cho người khác biết.
Bozzy

32

Theo nhiều thông báo truyền thống, bạn có thể tạo lại các thiết bị với quyền mặc định của chúng bằng MAKEDEVtập lệnh . Kịch bản này theo truyền thống /devnhưng có trong /sbinUbuntu. Truyền cho nó một đối số cho biết bạn muốn tạo thiết bị nào; trên Ubuntu đó std(bạn cũng có thể viết MAKEDEV null, nó cũng tạo ra nullmột số thiết bị khác).

Trong các hệ thống Linux hiện đại chạy udev , bạn có thể yêu cầu udev tạo lại tất cả hoặc một số thiết bị dựa trên trình điều khiển có sẵn và phần cứng được kết nối, thông qua udevadm trigger:

udevadm trigger --sysname-match=null

Là câu trả lời này vẫn còn hiện tại? Tôi đang sử dụng CentOS 7 và tôi đã ghi đè lên / dev / null do nhầm lẫn, udevadm trigger --sysname-match=nullmẹo này không hiệu quả với tôi, trong khi vẫn mknod -m 0666 /dev/null c 1 3hoạt động hoàn hảo.
Bozzy

@Bozzy Tôi biết nó hoạt động với udev tiền hệ thống. Gần đây tôi chưa thử, nhưng theo tôi biết thì nó vẫn hoạt động. Nếu bạn thêm --verbose, nó có liệt kê /sys/devices/virtual/mem/null không?
Gilles 'SO- ngừng trở nên xấu xa'

Vâng, nó liệt kê rằng. Tôi đã cố gắng để ghi đè lên một lần nữa / dev / null trên máy dev của tôi, nhưng kỳ lạ đủ Tôi không thể làm điều đó ở đây, vì vậy tôi không thể làm một sâu hơn phân tích bây giờ ...
Bozzy
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.