command not found 与 磁盘空间不足
Posted QA小虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了command not found 与 磁盘空间不足相关的知识,希望对你有一定的参考价值。
问题:原正常运行的一服务无法运行,报错command not found,日志显示disk no space;
排查信息:df -hl
根目录所在磁盘空间已满,使用命令在/noah下
解决:通过df -h 目录名,确认处于sda2上的目录,发现大量出core文件,清理,问题解决
gdb php -c core.xxx
后续一:还是有个很傻的问题没有清晰,Linux是如何查找文件的,根目录所在磁盘已满是怎样影响到另一个文件系统下的命令的。
推测是由根目录逐层寻找,但细节未确定,总觉得少点什么,整理之。
一 文件系统与磁盘管理
(参考:主机规划与磁盘分区)
安装linux系统时就进行了磁盘分区(类似于windows 划分出C/D/E盘),如上所述,出现sda6,无sda1,应该是磁盘划分使用了扩展分区。
而不同的目录使用哪个磁盘分区则是通过“挂载” 实现的。所谓的『挂载』就是利用一个目录当成进入点,将磁盘分区槽的数据放置在该目录下; 也就是说,进入该目录就可以读取该分割槽的意思。这个动作我们称为『挂载』,那个进入点的目录我们称为『挂载点』
二 文件系统(一个可被挂载的数据为一个文件系统)
参考:文件系统管理
如果/nosh和/ 处于不同磁盘分区,不会直接从不同磁盘分区起始开始读取么?
1. Linux EXT2文件系统通常会将这两部份的数据分别存放在不同的区块,权限与属性放置到 inode 中,至于实际数据则放置到 data block 区块中。 另外,还有一个超级区块 (superblock) 会记录整个文件系统的整体信息,包括 inode 与 block 的总量、使用量、剩余量等。
构成如下
2. 目录树读取
文件名的记录是在目录的 block 当中,因此当我们要读取某个文件时,就务必会经过目录的 inode 与 block ,然后才能够找到那个待读取文件的 inode 号码, 最终才会读到正确的文件的 block 内的数据。根目录所在磁盘会导致所有内容都无法正常运行,找不到对应command.
后续二:core文件
1. 何时会出core?当系统出错,实则linux接收到某些特殊信号时(参考:http://blog.jobbole.com/101648/),前提是开启core,ulimit -a可查看
2. 如何查看core?利用gdb命令,使用命令 gdb program core
来查看 core 文件,其中 program 为可执行程序名,core 为生成的 core 文件名。
以上场景并不知道产生的program,只知道是php产生,即gdb php core.xxx,重点查看产生的进程名。若仍持续出core,需要杀掉对应进程
以上是关于command not found 与 磁盘空间不足的主要内容,如果未能解决你的问题,请参考以下文章
crontab 提示 command not found 解决方案
command not found shell returned 127
Mac 终端命令不生效:-bash: source: command not found