Linux的一些知识(8)
1. ps 命令
ps是查看 Linux 中当前运行的进程的命令。能列出系统中运行的进程,包括进程号、命令、CPU使用量、内存使用量等。
ps 命令是 Process Status 的缩写。ps 命令用来列出系统中 当前正在运行的那些进程,就是执行 ps 命令的那个时刻的那些进程的快照。使用该命令可以确定有哪些进程正在运行和 运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令的得到的。
ps 查看的结果不是动态连续的,如果想要动态的显示进程信息,就可以使用top、htop 命令。
kill 命令用于杀死进程。
ps 命令支持的 3 种语法格式
三种语法格式:
- 1.UNIX 风格。选项可以组合在一起,并且选项前必须有 “-” 连字符
- 2.BSD 风格。 选项可以组合在一起,但是选项前不能有 “-” 连字符
- 3.GUN 风格的长选项。选项前有两个 “-” 连字符
可以混用这几种风格,但是可能会发生冲突。较多使用 UNiX 风格的 ps 命令。
参数含义
l 长格式输出;
u 按用户名和启动时间的顺序来显示进程;
j 用任务格式来显示进程;
f 用树形格式来显示进程;
a 显示所有用户的所有进程(包括其它用户)。显示所有进程
-a 显示同一终端下的所有程序
x 显示无控制终端的进程;
r 显示运行中的进程;
ww 避免详细参数被阶段;
-A 列出所有的进程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的进程
-e 显示所有进程,环境变量
-f 全格式
-h 不显示标题
-l 长格式
-w 宽输出
常用的选项组合是 aux 或 lax ,还有参数 f 的应用。
pids 只列出进程标识符,之间运用逗号分隔
该进程列表必须在命令行参数地最后一个选项后面紧接着给出
中间不能插入空格。比如:ps -f1,4,5 显示的是进程ID为1,4,5的进程
ps aux 或 lax 输出的解释
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 进程所有者
PID: 进程ID
%CPU: 占用的CPU使用率
%MEM: 占用的内存使用率
VSZ: 占用的虚拟内存大小
RSS: 占用的内存大小
TTY: 中断的次要装置号码(minor device number of tty)
STAT: 进程状态
START: 启动进程的时间
TIME: 进程消耗CPU的时间
COMMAND:命令的名称和参数
2. top命令
top命令可以实时的监控系统状态信息和进程所使用的资源。显示进程的数据包括PID、进程属主、优先级、%CPU、%memory等。可以使用这些显示指示出资源使用量。
3. htop命令
htop 与 top 很类似,但是 htop 是交互式的文本模式的进程查看器。它通过文字图形化地显示每一个进程的CPU和内存使用量、swap使用量。使用上下光标键选择进程,F7 和 F8改变优先级。F9杀死进程。Htop 不是系统默认安装的,所以需要额外安装。
4. kill 命令
kill 命令用来发送信号给进程,并结束进程。如果一个进程没有响应杀死命令,这也许就需要强制杀死,使用 -9 参数来执行。
注意:使用强制杀死的时候一定要小心,因为进程没有时机清理现场,也许写入文件没有完成。
如果不知道进程PID或者 用名字杀死进程的时候, killall就能排上用场。
- kill —使用 kill时,需要知道进程ID号,可以通过 ps 命令得到进程号
- kill -9 —杀死进程
- killall -9 <进程名> —杀死所有拥有同样名字的进程
- pkill <进程名> —pkill 是类似的命令,但使用模式匹配,如进程名,进程拥有者等。
5. linux 上进程有5种状态
有5种进程状态
- 运行 (正在运行或者运行队列种等待)
- 中断 (休眠中,受阻,在等待某个条件的形成或接受到信息)
- 不可中断 (收到信号不唤醒和不可运行,进程必须等待直到有中断发生)
- 僵死(进程已终止,但进程描述符存在,直到父进程调用wait()系统调用后释放)
- 停止 (进程收到 SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行)
ps 工具表示进程的5种状态码
- D 不可中断 uninterruptible sleep (usually IO)
- R 运行 runnable (on run queue)
- S 中断 sleeping
- T 停止 traced or stopped
- Z 僵死 a defunct (”zombie”) process
6. vi/vim 的区别与用法
所有的 Unix Linux 系统都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。vim 具有程序编辑的能力,可以朱亚东的以字体颜色辨别语法的正确性,方便程序设计。
vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单来说,vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。vim则可以说是程序开发者的一项很好用的工具。
vim 键盘图:
vi/vim 的使用
基本上 vi/vim 共分为三种模式,分别是 命令模式(Command mode),输入模式(Insert mode),和 底线命令模式(Last line mode)。
命令模式
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
- i 切换到输入模式,以输入字符。
- x 删除当前光标所在处的字符。
- : 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
任何时候,不管用户处于何种模式,只要按一下 ESC 键,即可使vi 进入命令行模式;我们在shell 环境(提示符为$)下输入启动vi命令,进入编辑器时,也是处于该模式下。
在该模式下,用户可以输入各种合法的vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的vi命令,则vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是vi的合法命令,vi会响铃报警。
输入模式
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
在命令模式下输入插入命令i(insert)、附加命令a(append)、打开命令o(open)、修改命令c (change) 、取代命令r 或替换命令s 都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当作文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按 ESC 即可。
底线命令模式
在命令模式下按下:(英文冒号) 就进入了底线命令模式。
底线命令模式可以出入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
- q 退出程序
- w 保存文件
按ESC键可随时退出底线命令模式。
简单来说,可以将这三个模式想成底下的图标来表示:
vim 的优势
- 多级撤销。在vi里,按 u 只能撤销上次命令,而在vim里可以无限制的撤销。
- 易用性。vi 只能运行于unix中,而vim不仅可以运行于unix,Windows,mac等多操作平台。
- 语法加亮。vim 可以用不同的颜色来加亮你的代码。
- 可视化操作。即vim 不仅可以在终端运行,也可以运行于 x window、mac os、windows。
- 对vi 的完全兼容。某些情况下,可以把vim当成vi来使用。vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本。vi适用于文本编辑,但是vim更适用于coding。
7. ln -s 创建软连接
当在不同目录使用相同文件时,可以使用ln命令链接,避免了重复占用磁盘空间。
ln 为某一个文件在另外一个位置建立一个不同的链接,这样操作之后就不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其他的目录下用 ln 命令链接它姐可以,不必重复的占用磁盘空间。
eg :ln -s /data/bai /usr/local/data/bai
注意
- 第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件也会变动。
- 第二,ln的链接分软链接和硬链接
- 软链接:ln -s ** ** , 它只会在你选定的位置山生成一个文件的镜像,不会占用磁盘空间
- 硬链接:ln ** **,没有参数 -s,它会在你选定的位置上生成一个和源文件大小相同的文件
无论时软链接还是硬链接,文件都保持同步变化
硬连接
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删” 的功能。
硬连接 指通过索引节点来进行链接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给他分配一个编号,称为索引节点号(Inode Index)。在Linux 中,多个文件名指向同一索引节点是存在的。一般这种链接就是硬连接。
银联及的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的链接。只删除一个链接并不影响索引节点本身和其他的链接,只有当最后一个链接被删除后,文件的数据块及目录的链接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
软连接
软连接文件有类似于 Windows 的快捷方式,包含的有另一文件的位置信息。
软连接称之为符号链接(Symbolic Link),它实际上是一个特殊的文件。在符号链接中,文件实际上是一个文本文件,其中包含的有零一文件的位置信息。
创建软连接
具体用法是:ln -s [源文件] [软链接文件]