Điểm:0

Không có lệnh nào thực thi khi tôi xóa/lib64

lá cờ au

tôi thực hiện lệnh rm -rf * Khi tôi đã ở trong lib64 hoặc một thư mục bên trong nó.

(Qua nhận xét/câu trả lời vấn đề là tôi đã xóa ld-linux-x86-64.so.2 và tôi không có một cái tạm thời bên trong /var/lib64)

(Tôi có busybox)

Sau đó, tôi không thể thực hiện hầu hết các lệnh bash như ls,đánh đập. Khi tôi cố gắng thực hiện chúng, tôi thấy:

bash: /usr/bin/bash: Không có tệp hoặc thư mục như vậy

hoặc

bash: /usr/bin/ls: Không có tệp hoặc thư mục như vậy

Nhưng một số lệnh hoạt động bình thường như tiếng vang, đĩa CD

Và một số lệnh hoạt động nhưng không đúng như cái mà hiển thị lỗi dưới đây:

bash: /usr/bin/ which: /bin/sh: trình thông dịch kém: Không có tệp hoặc thư mục như vậy

Khi tôi tới /usr/bin xuyên qua đĩa CD rồi thực hiện lệnh tệp cd $ nó ném một lỗi. ví dụ, khi tôi thực hiện cd /usr/bin/ls nó cho tôi thấy:

bash: cd:/usr/bin/ls: Không phải thư mục

hoặc

bash: cd:/usr/bin/bash: Không phải thư mục

khi tôi thực thi 'cd/usr/bin/bash'

và khi tôi mở thiết bị đầu cuối, tôi hiển thị thông báo bên dưới:

Đã xảy ra lỗi khi tạo quy trình con cho thiết bị đầu cuối này
Không thể thực thi tiến trình con â/bin/bashâ (Không có tệp hoặc thư mục như vậy)

(Với hai tùy chọn: Tùy chọn, Khởi chạy lại)

Của tôi $PATH/home/$me/.sdkman/candidates/springboot/current/bin:/home/$me/.cargo/bin:/home/$me/.local/bin:/usr/local/sbin:/usr/local /bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/grade/gradle-7.0.2/bin:/ opt/apache-maven-3.8.1/bin:/home/$me/v8/depot_tools:/home/$me/.config/composer/vendor/bin Tôi có thể sử dụng trình duyệt hoặc/và các chương trình đã khởi chạy trước đó. Nhưng tôi không thể khởi động lại chúng.

Tôi có một tab thiết bị đầu cuối đang mở với một số lệnh đã đề cập trước đó, trình duyệt và trình đọc tài liệu. Chúng hoạt động nhưng chúng không thể được khởi chạy lại.

Điều không thể hiểu là lỗi dưới đây:

bash: /usr/bin/ which: /bin/sh: trình thông dịch kém: Không có tệp hoặc thư mục như vậy
guiverc avatar
lá cờ cn
Bạn đã không cung cấp hệ điều hành & chi tiết phát hành; nhưng bạn sẽ cần khôi phục thư mục đó từ bản sao lưu của mình. Nếu bạn xóa một tệp đang mở; chương trình đang chạy hiện tại vẫn có thể đọc nội dung (vì các nút không được giải phóng cho đến khi không có gì sử dụng chúng - Ubuntu hoặc GNU/Linux là HĐH nhiều người dùng), nhưng các chương trình cần các thư viện đó sẽ không có sẵn vì chúng đã bị xóa , do đó không thể thực thi. Khi khởi động lại (hoặc đăng xuất, bạn sẽ thấy nhiều hiệu ứng hơn), bạn sẽ thấy toàn bộ hiệu ứng của lệnh của mình. Bạn cũng có thể cài đặt lại nếu bạn không có bản sao lưu.
muru avatar
lá cờ us
Có thể bạn đã xóa `ld-linux.so`, vốn cần thiết để chạy bất kỳ tệp thực thi được liên kết động nào.
Someone avatar
lá cờ my
@muru bạn có nghĩ vậy không [câu hỏi này](https://unix.stackexchange.com/q/123353/495805)[Và câu trả lời này](https://unix.stackexchange.com/a/123358/495805) giải quyết vấn đề này
PooiaFerdowsi avatar
lá cờ au
@muru @algnis chính xác là tôi đã xóa tệp đó. nhưng không có tệp ld-linux tạm thời nào trong thư mục `/var/lib64`. tốt hơn: thư mục `var` của tôi không có thư mục `lib64` bên trong.
bac0n avatar
lá cờ cn
`/usr/bin/busybox ash` (bạn cần cung cấp đường dẫn đầy đủ) sẽ cung cấp cho bạn lời nhắc hoạt động. bây giờ, bạn sẽ có thể tạo lại liên kết bị thiếu của mình `ln -sf /lib/x86_64-linux-gnu/ld-2.33.so ld-linux-x86-64.so.2` chú ý đến ld-linux phiên bản.
bac0n avatar
lá cờ cn
bạn có thể làm tương tự từ menu grub, `e` chỉnh sửa bất kỳ mục nào trong menu, nối `break` vào dòng *linux* và *ctrl+x*, điều này sẽ mang lại lời nhắc `(initramfs)`, bạn có thể sau đó gắn phân vùng gốc của bạn, chẳng hạn như `mount /dev/sda1 /root`, `cd /root/lib64`, lần này bạn cần sử dụng đường dẫn tương đối `ln -sf ../lib/x86_64-linux-gnu/ ld-2.33.so ld-linux-x86-64.so.2`
Điểm:3
lá cờ cn

/usr/bin/cái nào là một shellscript:

~$ con mèo /usr/bin/cái nào
#! /bin/sh
đặt -ef

nếu kiểm tra -n "$KSH_VERSION"; sau đó
        đặt () {
                in -r -- "$*"
        }
khác
        đặt () {
                printf '%s\n' "$*"
        }
fi
...
...
...

Đây chỉ là những dòng đầu tiên của kịch bản, nó còn dài hơn nữa. Nhưng chúng ta chỉ cần nhìn vào dòng đầu tiên đó là

#! /bin/sh

/thùng rác được liên kết tượng trưng với /usr/bin, Vì thế /bin/sh chỉ tới /usr/bin/sh.

Có vẻ như bạn đã xóa các tệp hệ thống thiết yếu, đó là lý do tại sao các lệnh không hoạt động với bạn. đĩa CDtiếng vang không phải là lệnh mà là nội trang hệ vỏ, đó là lý do tại sao chúng vẫn hoạt động.

Chúng tôi không thể cho bạn biết bạn đã xóa tệp nào vì chúng tôi không biết bạn đã cấp tệp trong thư mục nào rm -rf *-chỉ huy. Có thể sao chép các tệp từ phiên trực tiếp và làm cho hệ thống hoạt động trở lại nhưng bạn sẽ phải tự tìm ra tệp nào bị thiếu. Nếu không thì cài đặt lại.

Gợi ý: Trên hệ thống của tôi, tôi chỉ có một tệp duy nhất trong /lib64:

~$ ~$ ~$ ls -la /lib64/
tổng số 8
drwxr-xr-x 2 gốc gốc 4096 ngày 13 tháng 10 03:37 .
drwxr-xr-x 14 gốc gốc 4096 ngày 13 tháng 10 03:37 ..
lrwxrwxrwx 1 root root 42 28 tháng 9 08:38 ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2

Đây là một liên kết tượng trưng, ​​chỉ cần tạo lại liên kết tượng trưng là đủ, nhưng vì các lệnh không hoạt động nữa nên bạn sẽ phải thực hiện việc này từ phiên trực tiếp.

muru avatar
lá cờ us
Bạn nên thử `ls -la /lib64/`, vì có vẻ như OP đã vào thư mục trước khi xóa mọi thứ trong đó.
mook765 avatar
lá cờ cn
@muru Tôi không thấy bất kỳ sự khác biệt nào giữa `ls -la /lib64` và `ls -la /lib64/`.
muru avatar
lá cờ us
Điều đó khá kỳ lạ. Tùy chọn thứ hai sẽ liệt kê nội dung của thư mục đích của liên kết tượng trưng (nội dung mà OP trong trường hợp này đã xóa). `ls -laH /lib64/`, thì nếu `ls` của bạn có thể là bí danh có tùy chọn phá vỡ hành vi đó.
mook765 avatar
lá cờ cn
@muru Vâng, tôi thấy điều này ngay bây giờ, bạn nói đúng. Bởi vì `/lib64` không phải là một thư mục mà là một liên kết tượng trưng... đã chỉnh sửa...
Điểm:1
lá cờ in

Thư mục /lib64 chứa các thư viện dùng chung cần thiết cho các tệp thực thi được liên kết động. Chúng chia sẻ mã chung trong các thư viện dùng chung thay vì sao chép nó vào từng tệp thực thi. Những thứ như shell script cũng có thể không hoạt động, vì những lệnh chạy đó có thể bị hỏng.

Các lệnh hoạt động được tích hợp sẵn trong trình bao của bạn (như đĩa CDtiếng vang) hoặc được liên kết tĩnh. Lệnh busybox theo thiết kế được liên kết tĩnh và có các phiên bản rút gọn của nhiều lệnh được tích hợp trong đó.

Thiệt hại đối với các thư mục hệ thống như/lib64 gần như gây tử vong cho hệ thống unix. Để khôi phục chức năng, bạn cần khôi phục các tệp bị thiếu. Các tùy chọn để làm điều này sẽ bao gồm:

  • khôi phục lại từ bản sao lưu
  • cài đặt lại các tệp gỡ lỗi mà chúng đến từ đó
  • sao chép các tệp từ một hệ thống giống hệt khác có cùng phiên bản hệ điều hành
  • khởi động từ đĩa cài đặt trực tiếp và sử dụng các công cụ trên đĩa trực tiếp để thay thế các tệp bị thiếu
  • cài lại hoàn toàn hệ điều hành (sao lưu dữ liệu trước)

Có thể thực hiện khôi phục một phần và sau đó sử dụng một cái gì đó như dpkg -V để lấy danh sách những thứ khác hoặc bị thiếu trong các tệp chứng khoán và cài đặt lại một số gói bị hỏng với cài đặt apt --reinstall. Thật không may, dpkg và các công cụ mà nó sử dụng đều dựa trên các thư viện dùng chung, vì vậy ít nhất những công cụ quan trọng phải ở đó trước khi điều này có ích.

Đáng buồn thay, trong những tình huống như thế này, việc cài đặt lại từ đầu thường nhanh hơn và dễ dàng hơn là sửa chữa hư hỏng.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.