2012-02-09 37 views
13

Tôi có hơn 5 triệu tệp phiên trong /var/lib/php5 Tôi muốn xóa tất cả các tệp trong thư mục này bằng cách sử dụng rm *, tuy nhiên tôi không chắc liệu có các tệp khác ngoài tệp phiên trong thư mục đó không bị xóa.Tôi có thể xóa an toàn tất cả nội dung trong/var/lib/php5 không?

Thông qua SSH, phải mất vài phút để làm cho số lượng tệp và tôi không chắc chắn tôi có thể điều hướng thông qua đó với tất cả các tên tệp ngẫu nhiên này. Thiết lập là ubuntu lucid linx, apache 2 và php5. Trong các thiết lập phổ biến nhất là có các thư mục/tệp khác trong /var/lib/php5 mà tôi không nên xóa?

Chỉnh sửa Lý do tôi muốn xóa tệp là vì tôi đã chuyển phiên xử lý sang cơ sở dữ liệu và không cần bất kỳ tệp nào nữa.

Trả lời

13

Hãy để gc của PHP thực hiện tự dọn dẹp. Tìm php.ini và thay đổi session.gc_probability thành thứ gì đó lớn hơn, lưu nó và khởi động lại Apache (gọi bất kỳ tập lệnh php nào). Nó nói đây http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu-session-phpini-garbage

Trong Debian và Ubuntu,/var/lib/php5, nơi dữ liệu được lưu trữ phiên, có quyền truy cập của drwx-wx-wt và chỉ nên được làm sạch bằng một cron kịch bản. Vì vậy, các nhà bảo trì gói vô hiệu hóa tự động phiên rác bộ sưu tập.

Hoặc bạn có thể thử đặt ini_set('session.gc_probability', 100); session_start(); (nếu session.gc_divisor bằng 100) vào một trong các tập lệnh của bạn và gọi nó. Cách tốt nhất là đưa vào tệp php trống, vì nó có thể thực hiện dọn dẹp trong một khoảng thời gian rất dài.

ps: Tôi cũng sẽ cố gắng để lại session.gc_probability 1 và đặt session.gc_divisor thành 1. Nó sẽ gọi gc ở mọi lần chạy, nhưng bạn cần nó chỉ để dọn dẹp thư mục.

Và kiểm tra cron /etc/cron.d/php5 - nó sẽ chạy mỗi nửa giờ để xóa các tệp phiên trong thư mục/var/lib/php5 /.

pps: tìm thấy bình luận thú vị

này không vô hiệu hóa nó (nó là nhận xét ra). Mặc định trong công cụ vẫn được sử dụng - phpinfo() cho biết giá trị là 1. Có vấn đề với thu gom rác trong Debian (và do đó Ubuntu) nhưng đó là do PHP muốn hút sạch rác đã bị xóa bởi tập lệnh cron. Điều này gây ra lỗi có thể được hiển thị trên trang không may mắn .

+0

Việc thay đổi các cài đặt này sẽ xóa tất cả các tệp phiên cũ? Trong thực tế, tôi chỉ muốn thoát khỏi tất cả các tập tin càng sớm càng tốt, thời gian hoạt động của phiên được đặt là 2 tuần. – Moak

+0

@ Có, nó sẽ xóa dữ liệu lỗi thời. Bạn cũng có thể thay đổi timelife chỉ để dọn dẹp. BTW, bạn có bất kỳ phần cụ thể nào trong tên của tệp phiên không? bạn có thể lọc theo nó nếu bạn muốn. Dù sao, hãy kiểm tra công việc cron và chạy nó. – Cheery

+0

Trong trường hợp của tôi (SuSE 11.2) nó không hoạt động lúc đầu. Tôi phát hiện ra rằng những thay đổi đối với 'php.ini' được áp dụng khi tôi phát hành' rcapache2 reload'. – Paramaeleon

23
cd /var/lib/php5 
find . -name "sess_*" -print | xargs rm -v 
+1

Tại sao không chỉ 'rm -v/var/lib/php5/sess_ *'? –

+13

Vì với số lượng tệp khổng lồ, 'rm' sẽ thoát sớm với lỗi" Danh sách đối số quá dài "và không thực sự xóa bất kỳ tệp nào. Tìm các tệp bằng cách sử dụng 'tìm' và kết quả từng cái một thành các bước' xargs' xung quanh giới hạn này. [Thông tin thêm] (http://www.moundalexis.com/archives/000035.php) –

0
cd /var/lib/php5 
sudo find . -name "sess_*" -print |sudo xargs rm -v 

này đã làm việc trong trường hợp của tôi.

0

Trên máy tính ubuntu của tôi, tại/var/lib/php5, có một tập tin sess ID: sess_a7kjdaojmneuhcgslj

Nếu tôi cố gắng để loại bỏ tập tin này bằng cách sử dụng lệnh:

sudo rm sess_a7 *

Tôi nhận được thông báo lỗi cho biết không có tệp nào như vậy.Tôi đã phải sử dụng tên đầy đủ như:

sudo rm sess_a7kjdaojmneuhcgslj

Nó làm việc. Đây là hai xu của tôi.

Các vấn đề liên quan