Shell 可以看作是一个命令解释器,为我们提供了交互式的文本控制台界面。我们可以
通过终端控制台来输入命令,由shell 进行解释并最终交给内核执行。
1)基本语法
man [命令或配置文件] (功能描述:获得帮助信息)
2)显示说明
| 信息 | 功能 |
|---|---|
| NAME | 命令的名称和单行描述 |
| SYNOPSIS | 怎样使用命令 |
| DESCRIPTION | 命令功能的深入讨论 |
| EXAMPLES | 怎样使用命令的例子 |
| SEE ALSO | 相关主题(通常是手册页) |
3)案例实操
# 查看ls 命令的帮助信息
[root@lwk ~]# man ls
一部分基础功能的系统命令是直接内嵌在shell 中的,系统加载启动之后会随着shell一起加载,常驻系统内存中。这部分命令被称为“内置(built-in)命令”;相应的其它命令被称为“外部命令”。
1)基本语法
help 命令(功能描述:获得shell 内置命令的帮助信息)
2)案例实操
# 查看cd 命令的帮助信息
[root@lwk ~]# help cd
| 常用快捷键 | 功能 |
|---|---|
| ctrl + c | 停止进程 |
| ctrl+l | 清屏,等同于clear;彻底清屏是:reset |
| 善于用 tab 键 | 提示(更重要的是可以防止敲错) |
| 上下键 | 查找执行过的命令 |
pwd:print working directory 打印工作目录
1)基本语法
pwd (功能描述:显示当前工作目录的绝对路径)
2)案例实操
# 显示当前工作目录的绝对路径
[root@lwk ~]# pwd
/root
ls:list 列出目录内容
1)基本语法
ls [选项] [目录或是文件]
2)选项说明
| 选项 | 功能 |
|---|---|
| -a | 全部的文件,连同隐藏档( 开头为. 的文件) 一起列出来(常用) |
| -l | 长数据串列出,包含文件的属性与权限等等数据;(常用)等价于“ll” |
3)显示说明
每行列出的信息依次是: 文件类型与权限、链接数、文件属主、文件属组、文件大小用byte来表示、建立或最近修改的时间、名字
4)案例实操
# 查看当前目录的所有内容信息
[root@lwk ~]# ll
总用量 12
文件类型与权限、链接数、文件属主、文件属组、文件大小用byte来表示、建立或最近修改的时间、名字
drwxr-xr-x. 2 root root 238 3月1 18:06 shelltest
cd:Change Directory 切换路径
1)基本语法
cd [参数]
2)参数说明
| 参数 | 功能 |
|---|---|
| cd 绝对路径 | 切换路径 |
| cd 相对路径 | 切换路径 |
| cd ~或者cd | 回到自己的家目录 |
| cd - | 回到上一次所在目录 |
| cd . . | 回到当前目录的上一级目录 |
| cd -P | 跳转到实际物理路径,而非快捷方式路径 |
3)案例实操
(1)使用绝对路径切换到root 目录
[root@lwk ~]# cd /root/
(2)使用相对路径切换到/usr目录
[root@lwk ~]# cd /usr
[root@lwk usr]#
(3)cd ~ 回到自己的家目录,亦即是/root 这个目录
[root@lwk usr]# cd ~
[root@lwk ~]#
(4)cd- 回到上一次所在目录
[root@lwk ~]# cd -
/usr
[root@lwk usr]#
(5)cd . . 表示回到当前目录的上一级目录,亦即是“/root/usr”的上一级目录的意思
[root@lwk usr]# cd ..
[root@lwk /]#
mkdir:Make directory 建立目录
1)基本语法
mkdir [选项] 要创建的目录
2)选项说明
| 选项 | 功能 |
|---|---|
| -p | 创建多层目录 |
3)案例实操
(1)创建一个目录
[root@lwk /]# mkdir test
(2)创建一个多级目录
[root@lwk /]# mkdir -p java/test/helloword
rmdir:Remove directory 移除目录
1)基本语法
rmdir 要删除的空目录
2)案例实操
(1)删除一个空的文件夹
[root@lwk /]# rmdir helloword
1)基本语法
touch 文件名称
2)案例实操
[root@lwk /]# touch 1.txt
1)基本语法
cp [选项] source dest (功能描述:复制source文件到dest)
2)选项说明
| 选项 | 功能 |
|---|---|
| -r | 递归复制整个文件夹 |
3)参数说明
| 参数 | 功能 |
|---|---|
| source | 源文件 |
| dest | 目标文件 |
4)经验技巧
强制覆盖不提示的方法:\cp
5)案例实操
(1)复制文件
[root@lwk /]# cp 1.txt helloword/
(2)递归复制整个文件夹
# helloWord文件夹中包含1.txt、2.txt文件,将整个helloWord文件夹复制到java文件夹下
[root@lwk /]# cp -r helloword/ java/
# 复制后,查看java文件夹
[root@lwk /]# ll java/helloword/
总用量 0
-rw-r--r--. 1 root root 0 8月 1 11:08 1.txt
-rw-r--r--. 1 root root 0 8月 1 11:08 2.txt
1)基本语法
rm [选项] deleteFile (功能描述:递归删除目录中所有内容)
2)选项说明
| 选项 | 功能 |
|---|---|
| -r | 递归删除目录中所有内容 |
| -f | 强制执行删除操作,而不提示用于进行确认。 |
| -v | 显示指令的详细执行过程 |
3)案例实操
(1)删除文件中的内容
[root@lwk helloword]# rm 1.txt
rm:是否删除普通文件 "1.txt"?y
(2)递归删除目录中所有内容
[root@lwk java]# rm -r helloword/
rm:是否进入目录"helloword/"? y
rm:是否删除普通空文件 "helloword/2.txt"?y
rm:是否删除目录 "helloword/"?y
1)基本语法
(1)mv oldNameFile newNameFile (功能描述:重命名)
(2)mv /temp/movefile /targetFolder (功能描述:移动文件)
2)案例实操
(1)重命名
[root@lwk java]# mv 3.txt 4.txt
(2)移动文件
[root@lwk java]# mv 4.txt helloword/
查看文件内容,从第一行开始显示。
1)基本语法
cat [选项] 要查看的文件
2)选项说明
| 选项 | 功能 |
|---|---|
| -n | 显示所有行的行号,包括空行。 |
3)经验技巧
一般查看比较小的文件,一屏幕能显示全的。
4)案例实操
(1)查看文件内容并显示行号
[root@lwk helloword]# cat 4.txt
more 指令是一个基于VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件
的内容。more 指令中内置了若干快捷键,详见操作说明。
1)基本语法
more 要查看的文件
2)操作说明
| 操作 | 功能 |
|---|---|
| 空白键(space) | 代表向下翻一页 |
| Enter | 代表向下翻『一行』 |
| q | 代表立刻离开more ,不再显示该文件内容。 |
| Ctrl+F | 向下滚动一屏 |
| Ctrl+B | 返回上一屏 |
| = | 输出当前行的行号 |
| :f | 输出文件名和当前行的行号 |
3)案例实操
(1)采用more查看文件
[root@lwk helloword]# more 4.txt
less 指令用来分屏查看文件内容,它的功能与more 指令类似,但是比more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
1)基本语法
less 要查看的文件
2)操作说明
| 操作 | 功能 |
|---|---|
| 空白键 | 向下翻动一页 |
| [pagedown] | 向下翻动一页 |
| [pageup] | 向上翻动一页 |
| /字串 | 向下搜寻『字串』的功能;n:向下查找;N:向上查找 |
| ?字串 | 向上搜寻『字串』的功能;n:向上查找;N:向下查找 |
| q | 离开less 这个程序 |
3)经验技巧
用SecureCRT时[pagedown]和[pageup]可能会出现无法识别的问题。
4)案例实操
(1)采用less查看文件
[root@lwk helloword]# less 4.txt
echo 输出内容到控制台
1)基本语法
echo [选项] [输出内容]
选项:
-e: 支持反斜线控制的字符转换
| 控制字符 | 作用 |
|---|---|
| \ | 输出\本身 |
| \n | 换行符 |
| \t | 制表符,也就是Tab 键 |
2)案例实操
[root@lwk helloword]# echo "hello\tword"
hello\tword
[root@lwk helloword]# echo -e "hello\tword"
hello word
head 用于显示文件的开头部分内容,默认情况下head 指令显示文件的前10 行内容。
1)基本语法
head 文件(功能描述:查看文件头10行内容)
head -n 5 文件(功能描述:查看文件头5行内容,5可以是任意行数)
2)选项说明
| 选项 | 功能 |
|---|---|
| -n<行数> | 指定显示头部内容的行数 |
3)案例实操
(1)查看文件的头2行
[root@lwk helloword]# head -n 2 4.txt
tail 用于输出文件中尾部的内容,默认情况下tail 指令显示文件的后10 行内容。
1) 基本语法
(1)tail 文件(功能描述:查看文件尾部10行内容)
(2)tail -n 5 文件(功能描述:查看文件尾部5行内容,5可以是任意行数)
(3)tail -f 文件(功能描述:实时追踪该文档的所有更新)
2) 选项说明
| 选项 | 功能 |
|---|---|
| -n<行数> | 输出文件尾部n 行内容 |
| -f | 显示文件最新追加的内容,监视文件变化 |
3)案例实操
(1)查看文件尾1 行内容
[root@lwk helloword]# tail -n 1 4.txt
(2)实时追踪该档的所有更新
[root@lwk helloword]# tail -f 4.txt
1)基本语法
(1)ls -l > 文件(功能描述:列表的内容写入文件 中(覆盖写))
(2)ls -al >> 文件(功能描述:列表的内容追加到文件的末尾)
(3)cat 文件1 > 文件2 (功能描述:将文件1 的内容覆盖到文件2)
(4)echo “内容” >> 文件 (功能描述:将“内容”追加到文件中)
2)案例实操
(1)将ls 查看信息写入到文件中
[root@lwk helloword]# ll > 4.txt
(2)将cat查看的文件追加到另一个文件中
[root@lwk helloword]# cat 4.txt >> 5.txt
(3)采用echo 将 hello 单词追加到文件中
[root@lwk helloword]# echo hello >> 4.txt
软链接也称为符号链接,类似于windows 里的快捷方式,有自己的数据块,主要存放了链接其他文件的路径。
1)基本语法
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
2)经验技巧
删除软链接: rm -rf 软链接名,而不是rm -rf 软链接名/
如果使用rm -rf 软链接名/ 删除,会把软链接对应的真实目录下内容删掉
查询:通过ll 就可以查看,列表属性第1 位是l,尾部会有位置指向。
3)案例实操
(1)创建软连接
[root@lwk java]# ln -s ./helloword/4.txt ./
[root@lwk java]# ll
总用量 0
lrwxrwxrwx. 1 root root 17 8月 1 14:05 4.txt -> ./helloword/4.txt
drwxr-xr-x. 2 root root 32 8月 1 14:04 helloword
(2)删除软连接(注意不要写最后的/)
[root@lwk java]# rm -rf 4.txt
1)基本语法
history (功能描述:查看已经执行过历史命令)
2)案例实操
(1)查看已经执行过的历史命令
[root@lwk helloword]# history
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。
1)基本语法
find [搜索范围] [选项]
2)选项说明
| 选项 | 功能 |
|---|---|
| -name<查询方式> | 按照指定的文件名查找模式查找文件 |
| -user<用户名> | 查找属于指定用户名的所有文件 |
| -size<文件大小> | 按照指定的文件大小查找文件,单位为: |
b —— 块(512 字节)
c —— 字节
w —— 字(2 字节)
k —— 千字节
M —— 兆字节
G —— 吉字
3)案例实操
(1)根据名称查找文件
[root@lwk helloword]# find 4.txt
(2)查找属于指定用户名的所有文件
[root@lwk helloword]# find -user lwk
(3)查找小于200m的文件(+n 大于 -n小于 n等于)
[root@lwk helloword]# find -size -204800
locate 指令利用事先建立的系统中所有文件名称及路径的locate 数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate 时刻。
1)基本语法
locate 搜索文件
2)经验技巧
由于locate 指令基于数据库进行查询,所以第一次运行前,必须使用updatedb 指令创建locate 数据库。
3)案例实操
(1)查询文件夹
[root@lwk helloword]# updatedb
[root@lwk helloword]# locate tmp
管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
1)基本语法
grep 选项查找内容源文件
2)选项说明
| 选项 | 功能 |
|---|---|
| -n | 显示匹配行及行号。 |
3)案例实操
(1)查找某文件在第几行
[root@lwk helloword]# ll
总用量 8
-rw-r--r--. 1 root root 65 8月 1 13:57 4.txt
-rw-r--r--. 1 root root 59 8月 1 13:56 5.txt
[root@lwk helloword]# ls | grep -n 4.txt
1:4.txt
[root@lwk helloword]# ls | grep -n 5.txt
2:5.txt
进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
ps:process status 进程状态
1)基本语法
ps aux | grep xxx (功能描述:查看系统中所有进程)
ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)
2)选项说明
| 选项 | 功能 |
|---|---|
| a | 列出带有终端的所有用户的进程 |
| x | 列出当前用户的所有进程,包括没有终端的进程 |
| u | 面向用户友好的显示风格 |
| -e | 列出所有进程 |
| -u | 列出某个用户关联的所有进程 |
| -f | 显示完整格式的进程列表 |
3)功能说明
(1)ps aux 显示信息说明
USER:该进程是由哪个用户产生的
PID:进程的ID号
%CPU:该进程占用CPU 资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理内存的大小,单位KB;
TTY:该进程是在哪个终端中运行的。对于CentOS 来说,tty1 是图形化终端,tty2-tty6 是本地的字符界面终端。pts/0-255 代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、
Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示
START:该进程的启动时间
TIME:该进程占用CPU 的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
(2)ps -ef 显示信息说明
UID:用户ID
PID:进程ID
PPID:父进程ID
C:CPU 用于计算执行优先级的因子。数值越大,表明进程是CPU 密集型运算,执行优先级会降低;数值越小,表明进程是I/O 密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU 时间
CMD:启动进程所用的命令和参数
4)经验技巧
如果想查看进程的CPU占用率和内存占用率,可以使用aux;
如果想查看进程的父进程ID,可以使用ef;
5)案例实操
[root@lwk /]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 128304 5892 ? Ss 10:02 0:09 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 10:02 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 10:02 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 10:02 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 10:02 0:01 [migration/0]
root 8 0.0 0.0 0 0 ? S 10:02 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 10:02 0:06 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 10:02 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 10:02 0:00 [watchdog/0]
root 12 0.0 0.0 0 0 ? S 10:02 0:00 [watchdog/1]
[root@lwk /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:02 ? 00:00:09 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 10:02 ? 00:00:00 [kthreadd]
root 3 2 0 10:02 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 10:02 ? 00:00:00 [kworker/0:0H]
root 7 2 0 10:02 ? 00:00:01 [migration/0]
root 8 2 0 10:02 ? 00:00:00 [rcu_bh]
root 9 2 0 10:02 ? 00:00:07 [rcu_sched]
root 10 2 0 10:02 ? 00:00:00 [lru-add-drain]
root 11 2 0 10:02 ? 00:00:00 [watchdog/0]
root 12 2 0 10:02 ? 00:00:00 [watchdog/1]
root 13 2 0 10:02 ? 00:00:01 [migration/1]
1)基本语法
kill [选项] 进程号(功能描述:通过进程号杀死进程)
killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
2)选项说明
| 选项 | 功能 |
|---|---|
| -9 | 表示强迫进程立即停止 |
3)案例实操
(1)杀死浏览器进程
[root@lwk /]# kill -9 5102
(2)通过进程名称杀死进程
[root@lwk /]# killall firefox
1)基本语法
pstree [选项]
2)选项说明
| 选项 | 功能 |
|---|---|
| -p | 显示进程的PID |
| -u | 显示进程的所属用户 |
3)案例实操
(1)显示进程pid
[root@lwk /]# pstree -p
(2)显示进程所属用户
[root@lwk /]# pstree -u
1)基本命令
top [选项]
2)选项说明
| 选项 | 功能 |
|---|---|
| -d 秒数 | 指定 top 命令每隔几秒更新。默认是3 秒在 top 命令的交互模式当中可以执行的命令 |
| -i | 使 top 不显示任何闲置或者僵死进程。 |
| -p | 通过指定监控进程 ID 来仅仅监控某个进程的状态。 |
3) 操作说明
| 操作 | 功能 |
|---|---|
| P | 以 CPU 使用率排序,默认就是此项 |
| M | 以内存的使用率排序 |
| N | 以 PID 排序 |
| q | 退出top |
4)查询结果字段解释
第一行信息为任务队列信息
| 内容 | 说明 |
|---|---|
| 12:26:46 | 系统当前时间 |
| up 1 day, 13:32 | 系统的运行时间,本机已经运行1 天13 小时32 分钟 |
| 2 users | 当前登录了两个用户 |
| load average: 0.00, 0.00, 0.00 | 系统在之前1 分钟,5 分钟,15 分钟的平均负载。一般认为小于1 时,负载较小。如果大于1,系统已经超出负荷。 |
第二行为进程信息
| 内容 | 说明 |
|---|---|
| Tasks: 95 total | 系统中的进程总数 |
| 1 running | 正在运行的进程数 |
| 94 sleeping | 睡眠的进程 |
| 0 stopped | 正在停止的进程 |
| 0 zombie | 僵尸进程。如果不是0,需要手工检查僵尸进程 |
第三行为CPU 信息
| 内容 | 说明 |
|---|---|
| Cpu(s): 0.1%us | 用户模式占用的CPU 百分比 |
| 0.1%sy | 系统模式占用的CPU 百分比 |
| 0.0%ni | 改变过优先级的用户进程占用的CPU 百分比 |
| 99.7%id | 空闲CPU 的CPU 百分比 |
| 0.1%wa | 等待输入/输出的进程的占用CPU 百分比 |
| 0.0%hi | 硬中断请求服务占用的CPU 百分比 |
| 0.1%si | 软中断请求服务占用的CPU 百分比 |
| 0.0%st st | (Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU 等待实际CPU 的时间百分比。 |
第四行为物理内存信息
| 内容 | 说明 |
|---|---|
| Mem: 625344k total | 物理内存的总量,单位KB |
| 571504k used | 已经使用的物理内存数量 |
| 53840k free | 空闲的物理内存数量,我们使用的是虚拟机,总共只分配了628MB 内存,所以只有53MB 的空闲内存了 |
| 65800k buffers | 作为缓冲的内存数量 |
第五行为交换分区(swap)信息
| 内容 | 说明 |
|---|---|
| Swap: 524280k total | 交换分区(虚拟内存)的总大小 |
| 0k used | 已经使用的交互分区的大小 |
| 524280k free | 空闲交换分区的大小 |
| 409280k cached | 作为缓存的交互分区的大小 |
5)案例实操
[root@lwk /]# top -d 1
[root@lwk /]# top -i
[root@lwk /]# top -p 2575
执行上述命令后,可以按P、M、N 对查询出的进程结果进行排序。
1)基本语法
netstat -anp | grep 进程号(功能描述:查看该进程网络信息)
netstat –nlp | grep 端口号(功能描述:查看网络端口号占用情况)
2)选项说明
| 选项 | 功能 |
|---|---|
| -a | 显示所有正在监听(listen)和未监听的套接字(socket) |
| -n | 拒绝显示别名,能显示数字的全部转化成数字 |
| -l | 仅列出在监听的服务状态 |
| -p | 表示显示哪个进程在调用 |
3)案例实操
(1)通过进程号查看sshd进程的网络信息
[root@lwk /]# netstat -anp | grep sshd
(2)查看某端口号是否被占用
[root@lwk /]# netstat -nltp | grep 22