rm -rf 无法删除会话文件

rm -rf 无法删除会话文件

1. 列出会话目录中的文件

$ /var/lib/php/sessions$ sudo ls -la
total 20
drwx-wx-wt 2 root     root     12288 May 20 14:26 .
drwxr-xr-x 4 root     root      4096 Feb 26 21:15 ..
-rw------- 1 www-data www-data     0 May 20 14:26 sess_716a24lf4tsnmfucpq50uf1pk7
-rw------- 1 www-data www-data   124 May 20 14:26 sess_fkif8ed8k85olh53q9so1cd6s3
-rw------- 1 www-data www-data     0 May 20 14:25 sess_ov6nrn16gg81i44u9angk3bls6

2. sudo 删除所有文件

$ /var/lib/php/sessions$ sudo rm -rf ./*

3.但会话文件仍然存在!

$ /var/lib/php/sessions$ sudo ls -la    
total 20
drwx-wx-wt 2 root     root     12288 May 20 14:26 .
drwxr-xr-x 4 root     root      4096 Feb 26 21:15 ..
-rw------- 1 www-data www-data     0 May 20 14:26 sess_716a24lf4tsnmfucpq50uf1pk7
-rw------- 1 www-data www-data   124 May 20 14:26 sess_fkif8ed8k85olh53q9so1cd6s3
-rw------- 1 www-data www-data     0 May 20 14:25 sess_ov6nrn16gg81i44u9angk3bls6

答案1

这里的问题是路径名扩展发生在sudo。 的路径名扩展./*无权查看目录内容。因此,它不会rm -rf ./sess_716a24lf4tsnmfucpq50uf1pk7 ./sess_fkif8ed8k85olh53q9so1cd6s3 ./sess_ov6nrn16gg81i44u9angk3bls6像预期的那样扩展为 – 如果整个命令以 的形式运行,它就会扩展为root

您可以在里面启动一个新终端sudo。尝试:

sudo sh -c "rm -rf /var/lib/php/sessions/*"

请注意,我使用了完整路径,因为它比相对路径安全得多。一旦同事在里面输入了/而不是。您可以想象会发生什么:对我来说,这是不必要的恢复任务……并且 sudoers 列表中少了一个用户。./sudo rm -rf

答案2

这很奇怪,也许在您删除它们之后立即创建了新的会话?

如果您尝试删除单个文件会发生什么情况?

sudo rm sess_716a24lf4tsnmfucpq50uf1pk7

文件被删除了吗?

答案3

您没有指出以哪个用户身份运行。但是,$提示表明您以标准用户身份运行,这很可能不是www-data

因此,问题是文件系统权限阻止您删除文件,正如您从ls -l输出中看到的那样。

答案4

作为@Esa Jokinen 通常,即使使用类似的命令也无法删除会话文件,sudo rm -rf /var/lib/php/sessions/*因为路径名扩展发生在 sudo 之前。

您可以尝试另一个命令,sudo sh -c "rm -rf /var/lib/php/sessions/*"但如果您有大量文件,您将得到类似的响应,rm: Argument list too long因为会话文件列表通常非常庞大(多达数百万个文件)。

我建议一个非常简单的方法:

  1. 新建一个文件夹会话_新mkdir /var/lib/php/sessions_new
  2. 设置与旧版本相同的权限会议目录:sudo chmod --reference=sessions sessions_new
  3. 对所有权也采取同样的做法:sudo chown --reference=sessions sessions_new
  4. 杀了它!sudo rm -rf /var/lib/php/sessions
  5. 你不需要等待很长时间才能得到结果。你可以立即在新的终端窗口中通过 来查看结果sudo find /var/lib/php/sessions/. -type f|wc -l。此命令会统计你的会议文件夹。运行两次。如果第二次运行该命令时得到的数字低于第一次,则表示进程正在朝着正确的方向进行。
  6. 等了好久了:P
  7. 当过程完成后只需重命名会话新目录:sudo mv /var/lib/php/sessions_new /var/lib/php/sessions

相关内容