-r--r--r-- 权限的文件,执行 chmod +w 失败,报Operation not permitted
若文件被添加了 i 属性(不可变),任何修改(包括权限)均会被拒绝
解决方法:
lsattr /path/to/file # 查看文件属性
sudo chattr -i /path/to/file # 移除不可变属性(需root权限)
花括号扩展
去掉文件的.bak后缀: mv filename{.bak,}
linux的硬连接和软连接
inode就是文件的元数据
文件结构:
[文件名]---->[inode]------>[数据块]
硬连接:只能对同分区的文件做
[文件名]---->[inode]------>[数据块]
^
|
[硬连接]------+
软连接:像是文件或目录的快捷方式
[文件名]---->[inode]------>[数据块]
^
+<<<<<<<<<<<<<<<<<<<<<<<<<<+
|
[软连接]---->[inode1]----->[数据块]
no space left on device
文件系统的 inode 总数在格式化时就固定了,因此有可能磁盘空间还有剩余,但 inode 已经耗尽,这时候也会报“no space left on device”的错误。
如果一个文件被删除,但仍然有正在运行的进程打开并持有这个文件的句柄,那么这个文件实际占用的磁盘空间(数据块)会被释放,但其 inode 可能不会被立即释放,直到所有持有它的进程关闭该文件。
可以使用 lsof | grep deleted 命令来查看是否有这类被删除但仍被进程占用的文件。
每个inode就是一个文件,所以可以通过查看目录下有多少个文件,来判断这个目录占用了多少个inode: find /path | wc -l
USS 和 PSS 和 RSS
| 指标 | 计算方式 | 共享内存处理 | 适用场景 | 示例(共享库 1000KB,4 个进程) |
|---|---|---|---|---|
| USS | 仅计算 独占内存 | 完全忽略共享内存 | 评估进程独占内存占用 | 每个进程 USS += 0KB(共享部分不算) |
| PSS | 独占内存 + 共享内存均摊 | 按进程数分摊 | 评估系统真实内存压力 | 每个进程 PSS += 250KB(1000KB / 4) |
| RSS | 独占 + 共享内存全量 | 重复计算共享内存 | 粗略估算物理内存占用 | 每个进程 RSS += 1000KB(严重高估) |
USS: Unique Set Size,查看命令:awk '/Private_/{uss += $2} END {print "USS:", uss " kB"}' /proc/<PID>/smaps
PSS: Proportional Set Size,查看命令:awk '/Pss:/ {sum+=$2} END {print sum " kB"}' /proc/[PID]/smaps
RSS: Resident Set Size,查看命令: ps -e -o 'pid,comm,rsz,args' | grep [PID]
本文发表于 0001-01-01,最后修改于 0001-01-01。
本站永久域名「 jiavvc.top 」,也可搜索「 极客油画 」找到我。

