文件类型 Linux 将文件 分为以下五种类型: a. 普通文件 ‘-’ b. 目录文件 ‘d’ c. 管道文件 ‘p’ d. 链接文件 ‘l’ e. 设备文件(块设备 ’b’ 、字符设备 ‘c’ 、套接字设备 ‘s’ ) 文件权限 1.权限介绍
a.r 读权限 值: 4 b.w 写权限 值: 2 c.x 执行权限 值: 1 d.- 无权限 值: 0
a. u : 表示文件属主的访问权限 文件是谁建立的属主就是谁 b. g : 表示文件同组用户的访问权限 用户进行分组 c. o : 表示其他用户的访问权限 和创建文件的用户不是同一个组 一切皆文件 2.修改文件权限 文字设定法 chmod + u 表属主 g 同组人 o 其他人 a 所有人 + 增加权限 -去掉权限 文件路径/文件名(不能同时对u和0和g修改权限) 数字设定法
文件操作 1.ls 查看当前目录下的文件 -a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出) -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 -r 将文件以相反次序显示(原定依英文字母次序) -t 将文件依建立时间之先后次序列出 -A 同 -a ,但不列出 “.” (目前目录) 及 “…” (父目录) -F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/” -R 若目录下有文件,则以下之文件亦皆依序列出
2.创建文件 touch + 文件路径/文件名 创建普通文件 文件路径:可以是相对路径也可以是绝对路径 mkdir + 目录路径/目录名 创建目录文件
3.删除文件 删除普通文件 rm + 文件路径/文件名 删除普通文件 删除目录文件 rmdir + 目录路径/目录名 删除空目录 rm -r +目录路径/ 目录名 -r 是rm的参数 删除非空目录 rm -r +目录路径/ 目录名 注意:rm -rf * 禁用 rm -rf /*
文件复制与重命名 复制粘贴使用cp 语法: cp [options] source… directory • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。 • -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。 • -f:覆盖已经存在的目标文件而不给出提示。 • -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。 • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。 • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。 • -l:不复制文件,只是生成链接文件。
移动文件或者重命名使用mv 语法:mv [options] source… directory • -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件; • -f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;
压缩、打包 我们使用tar进行打包或者解包。使用gizp进行文件压缩。 打包 将文件打包或者解包 ◼ c 创建包文件 ◼ f 指定目标为文件而不是设备 ◼ v 显示详细过程 ◼ t 显示包中的内容而不释放 ◼ x 释放包中的内容 ◼ z GNU 版本新加的,使得 tar 有压缩和解压的功能 下图为 tar 解包过程:
一步打包压缩与压缩包一步解压的过程:
压缩 下图为 gzip 压缩的过程:
下图为 gzip 解压的过程
下图为 tar 对 xxx.tgz 或 xxx.tar.gz 压缩包一步解压的过程
文本查看 cat 查看文件内容 合并文件 往文件中写入数据, Ctrl+d 是结束输入 more 当一个文件的内容超过一个屏幕能显示的行数,使用 more 可以分屏显示文件内容。 使用方式: more filename less 文本内容查看器,查看文件内容,但是文件内容不会显示到界面上 head 显示文件前 n 行的内容 tail 显示文件后 n 行的内容 数据统计 wc 统计文件中单词个数(-w)、字符个数(-c)、行数(-l) 文件编辑命令 三种模式介绍
命令模式切换到插入模式:
a //进入到当前光标后开始编辑A //进入到当前光标所在行的行末开始编辑i //进入当前光标位置开始编辑I //进入当前光标所在行的行头开始编辑o //进入当前光标下一行开始编辑O //进入当前光标上一行开始编辑 命令模式切换到末行模式: //对文本的设置或保存工作/ //对文本进行全文向下搜索字符串 string? //对文本进行全文向上搜索字符串 string vi/vim 常用命令n dd //删除光标开始向下的 n 行n yy //拷贝光标开始向下的 n 行p //粘贴u //撤销上一次操作ctrl + r // 恢复上一次撤销操作r //替换一个字符shift + 6 //光标移动到当前行的行头shift + 4 //光标移动到当前行的行尾shift + g //光标移动到整个文本的最后一行 Ggg //光标移动到整个文本的第一行n shift + g //光标移动到第 n 行d n shift + g //删除光标到 n 行的内容y n shift + g //拷贝光标到 n 行的内容 3.4 末行模式下的操作:w //保存文本:q //退出编辑:wq //保存并退出:q! //强制退出:w newfile //另存为:set nu //显示行号:set nonu //取消行号: set hlsearch //设置高亮搜索: set nohlsearch //取消高亮搜索: n,m s/oldstring/newstring //替换整个文本每行的第一个 oldstring:n, m s/oldstring/newstirng/g //替换整个文本所有的 oldstring/string //向下搜索 string?string //向上搜索 string vim配置文件 在用户家目录输入:vim .vimrc 输入一些编辑模式的命令:比如设置行号,设置快捷键计算机组成五大部件 (1) 运算器 :也叫算数逻辑单元,完成对数据的各种常规运算,如加减乘除,也包括逻辑运 算,移位,比较等。 (2) 控制器 :它是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算 机按照预先规定的目标和步骤有条不紊地进行操作及处理。 (3) 存储器 :存储程序和各种数据。 (4) 输入设备 :把人所熟悉的信息如,图片,声音,文字,转换为计算机能够识别的信息存 储起来。 (5) 输出设备 : 把计算机机能识别的信息转换为人能识别的信息,进行呈现。 一台计算机可以抽象成下图: CPU 中包含控制器和运算器, 内存就是存储器。I/O 设 备就是输入设备和输出设备,如:键盘、显示器、鼠标、硬盘、网卡
PID PID(Process Identification)操作系统里指进程识别号,也就是进程标识符。操作系统里每打开一个程序都会创建一个进程ID,即PID。 PID(进程控制符)英文全称为Process Identifier,它也属于电工电子类技术术语。 PID是各进程的代号,每个进程有唯一的PID编号。它是进程运行时系统随机分配的,并不代表专门的进程。在运行时PID是不会改变标识符的,但是你终止程序后再运行PID标识符就会被系统回收,就可能会被继续分配给新运行的程序。 含义 只要运行一程序,系统会自动分配一个标识。 是暂时唯一:进程中止后,这个号码就会被回收,并可能被分配给另一个新进程。 只要没有成功运行其他程序,这个PID会继续分配给当前要运行的程序。 如果成功运行一个程序,然后再运行别的程序时,系统会自动分配另一个PID。 是暂时唯一:进程中止后,这个号码就会被回收,并可能被分配给另一个新进程。 和用户进行交互的命令解释器。 PCB 进程控制块,进程的属性信息。 在操作系统中会使用链表将PCB连接在一起, 链表中有多少个节点,这个操作系统就有多少个进程,操作系统通过管理PCB来管理运行起来的 进程
进程描述信息: • 进程标识符用于唯一的标识一个进程(pid,ppid)。 进程控制信息: • 进程当前状态 • 进程优先级 • 程序开始地址 • 各种计时信息 • 通信信息 资源信息: • 占用内存大小及管理用数据结构指针 • 交换区相关信息 • I/O设备号、缓冲、设备相关的数结构 • 文件系统相关指针 现场保护信息(cpu进行进程切换时): • 寄存器 • PC • 程序状态字PSW • 栈指针 进程状态 就绪 、运行、阻塞
a. ready:表示线程已经被创建,正在等待系统调度分配CPU使用权。 b. running:表示线程获得了CPU使用权,正在进行运算 c. waiting:表示线程等待(或者说挂起),让出CPU资源给其他线程使用 为什么除去new和terminated状态? 是因为这两种状态实际上并不存在于线程运行中,所以也没什么实际讨论的意义。对于Java中的线程状态无论是Timed Waiting ,Waiting还是Blocked,对应的都是操作系统线程的waiting(等待)状态。而Runnable状态,则对应了操作系统中的ready和running状态。 进程管理命令 ps -A 列出所有的进程 -e 等于“-A” -a 显示现行终端机下的所有进程,包括其他用户的进程; -u 以用户为主的进程状态 ; x 通常与 a 这个参数一起使用,可列出较完整信息。 -w 显示加宽可以显示较多的资讯 -au 显示较详细的资讯 -aux 显示所有包含其他使用者的行程 -f 做一个更为完整的输出。 -L显示进程中的线程 ID 最常用的命令: ps -aux USER表示哪个用户启动了这个进程; PID表示进程的ID; %CPU表示cpu的占用率;占用越高,进程越消耗资源。 %MEM表示内存的使用率;占用越高,进程越消耗资源。 VSZ如果一个程序完全驻留在内存中一共需要会用多少内存;(该进程所占的虚拟内存大小,单位kb) RSS表示进程当前实际上占用了多少内存,注意不要跟VSZ混淆,VSZ的前提是进程完全驻留在内存中;该进程所占的物理内存大小,单位kb) TTY表示tty终端;tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符结面终端,tty是图形终端。ps/0-256代表虚拟终端。 STAT表示当前进程的状态,(S表示处于休眠状态,D表示不可终端的状态,Z表示僵尸进程,X表示死掉的进程); START启动这个命令的时间点; TIME 进程执行起到现在总的CPU占用时间; COMMAND表示启动这个进程的命令。
ps -ef
UID: 说明该程序被谁拥有(用户ID) PID:就是指该程序的 ID(进程ID) PPID: 就是指该程序父级程序的 ID(父进程号) C: 指的是 CPU 占用率 STIME: 程序的启动时间 TTY: 指的是登录终端 TIME : 表示进程执行起到现在总的CPU占用时间 CMD: 启动这个进程的命令,它其实就是一个启动进程的命令
jobs 显示当前终端的任务 sleep 睡眠 n 秒。 & 后台运行程序 fg bg fg %任务号 将后台运行的或挂起的进程挪到前台执行 bg %任务号 将挂起的进程唤醒到后台执行 kill 结束或者挂起一个进程 -9 强制结束进程 -stop 挂起进程 pkill 结束一组同名的进程
top 查看系统资源使用情况以及进程信息
前五行信息: 统计信息区 • 第一行:任务队列信息,与uptime命令执行结果相同。 • 17:25:29:系统当前时间 • up 1:10:主机已运行时间 • 1 users:用户连接数(不是用户数,who命令) • load average: 0.00, 0.00, 0.00:系统平均负载,统计最近1,5,15分钟的系统平均负载 补充:uptime -V可查询版本 • 第二行:进程信息 • Tasks: 287 total:进程总数 • 1 running:正在运行的进程数 • 146 sleeping:睡眠的进程数 • 0 stopped:停止的进程数 • 0 zombie:僵尸进程数 • 第三行:CPU信息(当有多个CPU时,这些内容可能会超过两行) • 1.7 us:用户空间所占CPU百分比 • 3.3sy:内核空间占用CPU百分比 • 0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比 • 94.2 id:空闲CPU百分比 • 0.0 wa:等待输入输出的CPU时间百分比 • 0.0 hi:硬件CPU中断占用百分比 • 0.0 si:软中断占用百分比 • 0.0 st:虚拟机占用百分比 第四行:内存信息(与第五行的信息类似与free命令) • 1021564 total:物理内存总量 • 93224 used:已使用的内存总量 • 51540 free:空闲的内存总量(free+used=total) • 416800 buffers:用作内核缓存的内存量 • 第五行:swap信息 • 998396 total:交换分区总量 • 996852 used:已使用的交换分区总量 • 1544 free:空闲交换区总量 • 351844 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。 PID:进程ID,进程的唯一标识符 USER:进程所有者的实际用户名。 PR:进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。 NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级 VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA SHR:SHR是进程使用的共享内存。共享内存大小,单位kb S:这个是进程的状态。它有以下不同的值: • D - 不可中断的睡眠态。 • R – 运行态 • S – 睡眠态 • T – 被跟踪或已停止 • Z – 僵尸态 %CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。 %MEM:进程使用的可用物理内存百分比。 TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。 COMMAND:运行进程所使用的命令。进程名称(命令名/命令行) 还有许多在默认情况下不会显示的输出,它们可以显示进程的页错误、有效组和组ID和其他更多的信息。 •