前提知识:
文件的组成部分:
为了解决文件的共享问题, Linux系统引入了两种链接: 硬链接(hard link)和软链接(又称符号链接, 即soft link或symbolic link).
若一个inode号对应多个文件名, 则称这些文件为硬链接. 换言之, 硬链接就是同一个文件使用了多个别名. 硬链接可以由命令link或ln创建
link oldfile newfile
硬链接特点:
若文件用户数据块中存放的内容是另一文件的路径名的指向, 则该进程就是软链接. 软链接的创建与使用没有类似硬链接的诸多限制.
详细
进程的状态: R, S, D, T, Z, X
R: 可执行状态
S: 可中断的睡眠状态
D: 不可中断的睡眠状态
T: 暂停状态或跟踪状态
Z: 退出状态, 进程成为僵尸进程(zombie, terminated but not reaped by its parent)
进程的三种基本状态:
就绪(Ready) 执行(Running) 阻塞(Blocked)
当一个子进程改变了它的状态时, 会发生:
在子进程退出时, 它的进程描述符不会立即释放, 这是为了让父进程得到子进程信息, 父进程通过wait()和waitpid()来获得一个已经退出的子进程信息
一个父进程退出, 而它的一个或者多个子进程还在运行, 那么这些子进程将成为孤儿进程.
孤儿进程将被init进程(进程号为1)所收养, 并由init进程对它们完成状态收集工作.
由于孤儿进程会被init进程收养, 所以孤儿进程不会对系统造成危害
一个子进程的进程描述符在子进程退出时不会释放, 只要当父进程通过wait()或waitpid()获取了子进程信息后才会释放. 如果子进程退出, 而父进程并没有调用wait()或waitpid(), 那么子进程的进程描述符仍然保存再系统中, 这种进程被称为僵尸进程
僵尸进程通过ps命令显示出来的状态为Z(zombie)
系统所能使用的进程号是有限的, 如果产生大量僵尸进程, 将因为没有可用的进程号而导致系统不能产生新的进程
要消灭系统中大量的僵尸进程, 只需要将其父进程杀死, 此时僵尸进程就会变成孤儿进程, 从而被init所收养, 这样init就是释放所有僵尸进程所占有的资源, 从而结束僵尸进程.
find [basedir] [option]
实例: find . -name "shadow*"
返回当前目录下, 文件名匹配"shadow"的路径
管道是将一根命令的标准输出作为另一个命令的标准输入, 在数据需要经过多个步骤的处理之后才能得到我们想要的内容时就可以使用管道
在命令之间使用 |
分隔各个管道命令
cut可以对数据进行切分, 得到想要的部分
-d 分隔符
-f 通过-d分割后, 使用-f n 取出第 n 个区间
-c 以字符为单位取出数据
实例
last | cut -d ' ' -f 1
说明: last显示登入者的信息, 使用分隔符 -d 用空格" "把信息分割开, 使用 -f 取出第 1 块区间
export | cut -c 12-
说明: 取出第 12 字符以后的字符串
sort用于排序
参数:
-f 忽略大小写
-b 忽略最前面的空格
-n 使用数字
-r 反向排序
-u unique, 重复的内容只出现一次
-t 分隔符, 默认为tab
-k 指定排序区间
grep, 使用正则表达式进行全局查找并打印
grep [-acinv] 要搜寻的字符串 filename
-c 统计个数
-i 忽略大小写
-n 输出行号
-v 反向选择
实例:
grep -n "the" filename
注意: {
和}
在shell中有特殊意义, 所以必须使用转义字符