แก้ไข: ฉันลืมเรื่องนี้ทั้งหมด ปรากฎว่าฉันมีฮาร์ดดิสก์ที่ไม่ดี เราต้องปรับใช้เซิร์ฟเวอร์นี้สำหรับความต้องการอื่น ๆ ดังนั้นในที่สุดฉันก็กลับมาแทนที่ดิสก์ที่ไม่ดีหนึ่งอันและเรากลับมาทำธุรกิจอีกครั้ง
สองสามสัปดาห์ตอนนี้ฉันไม่สามารถหาสาเหตุที่ฉันไม่สามารถลบไฟล์นี้โดยเฉพาะ ในฐานะที่เป็น root ฉันทำได้ แต่เชลล์สคริปต์ของฉันทำงานเป็นผู้ใช้อื่น ดังนั้นฉันไปวิ่ง ls -la และมันไม่ได้มี อย่างไรก็ตามถ้าฉันเรียกมันว่าเป็นพารามิเตอร์มันจะปรากฏขึ้น! แน่นอนว่าเจ้าของคือรูตดังนั้นฉันจึงไม่สามารถลบได้
แจ้งให้ทราบล่วงหน้า 6535 หายไป ...
[root@server]# ls -la 653*
-rw-rw-r-- 1 svn svn 24002 Mar 26 01:00 653
-rw-rw-r-- 1 svn svn 7114 Mar 26 01:01 6530
-rw-rw-r-- 1 svn svn 8653 Mar 26 01:01 6531
-rw-rw-r-- 1 svn svn 6836 Mar 26 01:01 6532
-rw-rw-r-- 1 svn svn 3308 Mar 26 01:01 6533
-rw-rw-r-- 1 svn svn 3918 Mar 26 01:01 6534
-rw-rw-r-- 1 svn svn 3237 Mar 26 01:01 6536
-rw-rw-r-- 1 svn svn 3195 Mar 26 01:01 6537
-rw-rw-r-- 1 svn svn 27725 Mar 26 01:01 6538
-rw-rw-r-- 1 svn svn 263473 Mar 26 01:01 6539
ตอนนี้มันจะปรากฏขึ้นถ้าคุณเรียกมันโดยตรง
[root@server]# ls -la 6535
-rw-rw-r-- 1 root root 3486 Mar 26 01:01 6535
นี่คือสิ่งที่น่าสนใจ ดังนั้นฉันจึงพบปัญหานี้เพราะในเชลล์สคริปต์ของฉันมันจะไม่สามารถลบได้เพราะ 6535 เป็นเจ้าของโดย root ไฟล์แสดงขึ้นจริงหลังจากฉันเรียกใช้ "rm -rf" ฉันลองมาก่อนหน้านี้และไม่สามารถลบไดเรกทอรีได้เนื่องจากมันบอกฉันว่าไดเรกทอรีไม่ว่างเปล่า ฉันเข้าไปข้างในและมองและพอไฟล์ "6535" ในที่สุดก็ปรากฏขึ้น ไม่รู้เลยว่าทำไมมันถึงทำแบบนี้
strace พูดว่าต่อไปนี้
#strace ls -la 653* 2>&1 | grep ^open
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib64/tls/librt.so.1", O_RDONLY) = 3
open("/lib64/libacl.so.1", O_RDONLY) = 3
open("/lib64/libselinux.so.1", O_RDONLY) = 3
open("/lib64/tls/libc.so.6", O_RDONLY) = 3
open("/lib64/tls/libpthread.so.0", O_RDONLY) = 3
open("/lib64/libattr.so.1", O_RDONLY) = 3
open("/etc/selinux/config", O_RDONLY) = 3
open("/proc/mounts", O_RDONLY) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
open("/proc/filesystems", O_RDONLY) = 3
open("/usr/share/locale/locale.alias", O_RDONLY) = 3
open("/usr/share/locale/en_US.UTF-8/LC_TIME/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.utf8/LC_TIME/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_TIME/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_TIME/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_TIME/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_TIME/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/nsswitch.conf", O_RDONLY) = 3
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib64/libnss_files.so.2", O_RDONLY) = 3
open("/etc/passwd", O_RDONLY) = 3
open("/etc/group", O_RDONLY) = 3
open("/etc/mtab", O_RDONLY) = 3
open("/proc/meminfo", O_RDONLY) = 3
open("/etc/localtime", O_RDONLY) = 3