Tại sao thiết bị đầu cuối có thể tự gỡ cài đặt?


25

ảnh chụp màn hình

Làm thế nào để apt-get remove xtermđi qua? Và sau khi được gỡ cài đặt, xtermkhông đóng và tiếp tục hoạt động bình thường.

xtermquá trình lưu trong RAM trong khi nó đang chạy?


6
Nói chính xác, Nó không thực sự tự gỡ cài đặt - apt-getđang gỡ cài đặt xtermvà không biết rằng bằng cách nào đó nó phụ thuộc vào một xtermquy trình - vì vậy, đó là về "Tại sao xterm có thể được gỡ cài đặt trong khi chạy?". Câu hỏi hay.
Volker Siegel

2
Nó tương tự như cách bạn có thể xóa đĩa cứng trong khi chạy HĐH.
jkd

Câu trả lời:


53

Không hẳn. Các tập tin đã được mở bởi chương trình. Xóa tệp (và sau đó thay thế nó bằng phiên bản khác) không ảnh hưởng đến chương trình đang chạy vì tệp gốc được giữ mở (mặc dù không có tên trên đĩa để mở lại) cho đến khi chương trình được thực hiện với nó. Chỉ khi tất cả các thẻ điều khiển tệp được đóng, các khối dữ liệu của nó trên đĩa mới được giải phóng. Cho đến lúc đó, tệp mở có thể được đọc và viết giống như bình thường - thay đổi duy nhất là không ai khác có thể mở tệp vì tên của nó đã bị xóa.

Mặc dù các phần của chương trình có thể đã được đọc vào ram khi bị xóa, nhưng chúng vẫn có thể bị loại bỏ và đọc lại sau đó, hoặc các phần mới của chương trình chưa được thực hiện trước đó vẫn có thể được tải từ tệp đã bị xóa.


4
Đây là lý do thực tế .... đây cũng là lý do tại sao rm -rf /hoạt động .....
heemayl

6
Nếu bạn muốn sử dụng từ "công trình" để mô tả thành công mọi thứ hoàn toàn khó khăn. ;) Thật thú vị, rm -rf /sẽ không hoạt động nếu bạn cố chạy nó lần thứ hai ngay sau đó;)
thomasrutter

1
Tôi thường thấy "/ some / file / name (đã xóa)" trong lsofđầu ra và tôi biết đó là tệp của 'zombie' trông như thế nào ... nhưng có cách nào để lưu nội dung của tệp đó khỏi biến mất Khi xử lý tập tin cuối cùng chết?
Kilian Foth

1
@KilianFoth, nếu bạn có thể tìm thấy một quy trình vẫn mở tệp, thì bạn có thể sao chép nó từ / Proc / $ PID / fd / $ ID sang một tệp khác, nhưng tôi dường như không thể tìm cách khôi phục tệp tại chỗ khi tất cả các nỗ lực liên kết cứng tập tin thất bại.
psusi

3
@KilianFoth Nếu có một tệp xử lý, thì rootcó thể tạo tên cho nó (và do đó ngăn chặn xóa) bằng cách sử dụng lệnh linkatgọi hệ thống. Nhưng các tệp thực thi và thư viện được ánh xạ bộ nhớ, không yêu cầu xử lý tệp. Tôi không biết cách nào để xử lý một tệp chỉ tồn tại vì nó được ánh xạ bộ nhớ. Mặc dù các tệp thực thi có thể được truy cập /proctrong khi chúng đang chạy, do đó, chỉ có các thư viện và các tệp ánh xạ bộ nhớ khác có thể vượt quá khả năng phục hồi. Nếu bạn muốn biết thêm chi tiết về điều đó, bạn nên hỏi nó như một câu hỏi riêng biệt.
kasperd

8

xtermquá trình lưu trong RAM trong khi nó đang chạy?

Chính xác. Nó tương tự như quy trình cho phép bạn cài đặt các bản cập nhật cho mọi thứ trong khi chúng đang chạy mà không gặp sự cố. Và cũng là lý do tại sao bạn phải khởi động lại dịch vụ sau khi bạn cập nhật chúng. Một khi một cái gì đó đang chạy, nhị phân của nó là trong bộ nhớ.

Nếu nó phụ thuộc vào các tệp khác (không ở trạng thái "mở" bị giữ) bị xóa hoặc thay thế, điều đó có thể gây ra sự cố nhưng đối với một cái gì đó rời rạc xterm, thì đó không phải là vấn đề.


6
Không hoàn toàn .. các phần của chương trình chỉ được đọc vào bộ nhớ khi cần và có thể bị loại bỏ bất cứ lúc nào để giải phóng bộ nhớ cho các mục đích sử dụng khác, và do đó sẽ cần phải đọc lại sau (khi chương trình cố gắng truy cập các phần đó lần nữa ).
psusi

17
Nó không nhất thiết phải có trong RAM. Nhưng các tệp không thực sự bị xóa cho đến khi chúng không mở, bao gồm cả tệp thực thi xterm.
dùng253751

@immibis, do đó, câu trả lời của tôi;)
psusi

2

Thực tế nó là một tính năng của cách máy tính hoạt động: Khi một chương trình được gọi, nó thực sự được tải vào bộ nhớ và nó hoạt động từ đó.

Một tập tin thực sự hoạt động theo cùng một cách. Để tránh sự cố, nhiều tệp trong hệ thống UNIX-ish tạo khóa.

Câu đố thực tế là tại sao bạn không thể làm những việc tương tự và tương tự trong Windows.

Tính năng này thực sự là những gì cho phép bạn cập nhật toàn bộ hệ thống, bao gồm các chương trình đang hoạt động trong hệ thống của bạn. ;)


+1 cho "iddle thực tế là lý do tại sao bạn không thể làm những việc tương tự và tương tự như vậy trong Windows"
kể từ
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.