一、简介
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个多用户、多任务、支持多线程和多 CPU 的操作系统。
既然Linux也是一个操作系统,那大家肯定会下意识将它和Windows系统做比较,两者当然也是有优有劣。相对于Windows来说,Linux是完全免费的,开放源码,为用户提供了最大限度的自由度。且Linux更加稳定更加安全,所以通常作为服务器的操作系统使用。
Linux是一个诞生于网络、成长于网络且成熟于网络的奇特的操作系统。1991年10月,由芬兰大学生Linus Torvalds带头编写而成,其后一大批知名的、不知名的电脑黑客、编程人员加入到开发过程中来,Linux逐渐成长起来。
Linux的主要特点
- 完全免费:Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。
- 安全性:Linux采取了许多安全技术措施,其中有对读、写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。
- 多用户:操作系统资源可以被不同用户使用,每个用户对自己的资源有特定的权限,互不影响。
- 多任务:计算机同时执行多个程序,而同时各个程序的运行互相独立。
- 独立性:Linux是具有设备独立性的操作系统,内核具有高度适应能力。
- 可移植性:Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。
内核: kernel
常见的操作系统
- Windows:由微软公司成功开发,是一个多任务的操作系统,它采用图形窗口界面,用户对计算机的各种复杂操作只需要通过点击鼠标就可以实现。
- UNIX:是一个强大的多用户、多任务的操作系统,支持多种处理器架构,按照操作系统的分类,属于分时系统。Linux的思想源于Unix。
- Mac OS:是一套运行于苹果Macintosh系列电脑上的操作系统。从本质上讲,Mac OS 也是UNIX的一个变体。
- Android:是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
- iOS:是苹果公司开发的移动端的操作系统。iOS与苹果的MacOS操作系统一样,属于类Unix的商业操作系统。
二、安装vmware
自行百度
三、安装linux
自行查阅
四、安装finalshell
finalshell连接服务器
最小安装 centos 7 启用网络
centos7更换源
五、linux目录结构
1.基本介绍:
linux的文件系统是采用级层式的树状目录结构,在此结构中最上层是根目录“/”,然后在此目录下再创建其它的目录。 在linux世界里。一切皆文件
2.目录结构具体介绍:
linux的文件系统是采用级层式的【树状目录结构】,在此结构中最上层是根目录,使用“/”表示,然后在此目录下可以创建其它的目录,Linux中所有内容都是以文件的形式保存和管理,即:一切皆文件。普通文件是文件;目录(在win下称为文件夹)是文件;硬件设备(键盘、硬盘、打印机,网卡)是文件;套接字(socket)、网络通信等资源也都是文件。
- /
- root,存放root用户的相关文件
- home,存放普通用户的相关文件
- bin,存放常用命令的目录,如vi,su
- sbin,要具有一定权限才可以使用命令
- mnt,默认挂载光驱和软驱的目录
- etc,存放配置的相关文件
- var,存放经常变化的文件,如网络连接的sock文件 、日志
- boot,存放引导系统启动的相关文件
- usr,安装一个软件的默认目录,相当于windows下的program files
- proc,这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
- srv ,service缩写。该目录存放一些服务启动之后需要提取的数据
- sys,这是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统
- tmp,这个目录是用来存放一些临时文件的
- del,类似于windows的设备管理器,把所有的硬件用文件的形式存储
- media,系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了。
- opt,这是给主机额外安装软件所摆放,如安装oracle数据库就可放到该目录下默认为空。
- selinux,selinux是一种安全子系统,它能控制程序只能访问特定文件。
3.linux目录总结
1)linux的目录中有且只有一个根目录/,
2)linux的各个目录存放的内容是规划好的,不用乱放文件,
3)linux是以文件的形式管理我们的设备,因此linux系统。一切皆文件。
4)linux的各个文件目录下存放什么内容,大家必须有一个认识,
5)你的脑海里应该有一颗linux的目录树。
相对路径 : 相对当前的路径 我家隔壁是老王 相对于的是我家
绝对路径 :一个绝对的路径 中国太原市恒大华府1-1-2304家是老王
第二章 linux命令
我们操作通常有2种方式:
第一种就是通过桌面图形化操作;另外一种则是通过终端输入命令。
针对服务器而言我们通常是采用远程连接工具连接到服务器,然后以命令的方式进行管理。我们输入命令后计算机怎么就知道该做什么呢?那就得靠命令行工具(也称终端)进行翻译解释,然后调用相应的接口服务完成特定的功能。
用户与linux系统的交互是通过shell终端,下文讲先分析shell命令行工具,再讲解最基础的linux命令。
一、shell简介
计算机硬件是由运算器、控制器、存储器、输入/输出设备等共同组成的,而让各种硬件设备各司其职且又能协同运行的东西就是系统内核。Linux 系统的内核负责完成对硬件资源的分配、调度等管理任务。因此,系统内核对计算机的正常运行至关重要,一般不建议直接去编辑内核中的参数,而是让用户通过基于系统调用接口开发出的程序或服务来管理计算机,以满足日常工作的需要。而shell就是这样一个客户端命令行工具,充当用户与系统内核沟通的桥梁。
img
file
Shell也称“终端”、“壳”,是一种用c语言写的命令行工具, 充当人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端,它就会调用相应的程序服务去完成某些工作。
1.1 shell版本
以下列举几种shell版本
- sh(Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用 。在shell编程方面做的很优秀,但是在处理与用户的交互方面做得不如其他几种shell。
- bash(Bourne Again Shell):Linux默认,是Bourne Shell的扩展。完全兼容Bourne Shell,并在他基础上增加了很多特性如命令补全、命令历史等。它还包含了很多C Shell和Korn Shell中的优点,有灵活和强大的编辑接口,同时有很友好的用户界面。
- csh(C Shell):一种比Bourne Shell更适合的变种Shell,语法与C语言很相似。
- Tcsh:Linux提供的C Shell的一个扩展版本。 包括命令行编辑,可编程单词补全,拼写校正,历史命令替换,作业控制和类似 C 语言的语法,他不仅和 Bash Shell 提示符兼容,而且还提供比 Bash Shell 更多的提示符参数 。
- ksh(Korn Shell): 集合了 C Shell 和 Bourne Shell 的优点并且和 Bourne Shell 完全兼容。
- pdksh: Linux 系统提供的 ksh 的扩展。 支持人物控制,可以在命令行上挂起,后台执行,唤醒或终止程序。
现在包括红帽系统在内的许多主流 Linux 系统默认使用的终端是 Bash(Bourne-Again SHell)解释器 。 主流 Linux 系统选择 Bash 解释器作为命令行终端主要有以下 4 项优势 :
通过上下方向键来调取过往执行过的 Linux 命令;
命令或参数仅需输入前几位就可以用 Tab 键补全;
具有强大的批处理脚本;
具有实用的环境变量功能。
我们装好的centos7默认也是采用的bash终端,当采用远程连接工具连接到centos7,默认开启的终端就是bash,可以通过在终端中输入命令:echo $SHELL 进行查看,得到的结果为:/bin/bash。
- 如何判断当前终端的类型?
通过"echo $SHELL" 命令或通过"evn"终端命令
- 如何更改登录的终端类型?
通过终端命令chsh,如:chsh -s /bin/bash将登录终端改为bash
1.2 shell命令类型
shell是一个程序,用于用户和操作系统进行交互,相当于是一个命令解析器。
作为用户和内核交互的接口,既是一种命令语言又是一种程序设计语言。shell命令又分为内置命令和外部命令。
- 内置命令内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部命令快,因为解析内部命令shell不需要创建子进程。比如:exit,history,cd,echo等 。
- 外部命令外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存*。通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell程序控制的*。shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。外部命令是在bash之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin…等等。可通过“echo $PATH”命令查看外部命令的存储路径,比如:ls、vi等
如何区分是内部命令还是外部命令?
- 通过type命令,如:type cd 可以看到是内部命令;type mkdir可以看到是外部命令。
- 通过man命令,如:man cd,会提示是bash的内置命令;man ls,会提示是外部命令。
内部命令和外部命令最大的区别之处就是性能。内部命令由于构建在shell中而不必创建多余的进程,要比外部命令执行快得多。因此和执行更大的脚本道理一样,执行包含很多外部命令的脚本会损害脚本的性能。
二、最常用命令
既然 Linux 系统中已经有了 Bash 这么好用的“翻译官”,那么接下来就有必要好好学习怎么跟它沟通了。要想准确、高效地完成各种任务,仅依赖于命令本身是不够的,还应该根 据实际情况来灵活调整各种命令的参数 。
linux执行命令一般格式:命令名称 [命令参数] [命令对象]
命令名称、命令参数、命令对象之间用空格键分隔。命令对象一般是指要处理的文件、目录、用户等资源 ,命令参数则可以用长格式(–)或短格式(-)。
长格式:man --help
短格式:man -h
linux命令很多,最重要的是各种参数的搭配使用,新手记住所有参数是不可能的,需要经常通过帮助命令进行查阅。
特别说明:在终端中,有时候显示的内容很多,可以通过快捷键进行翻看。
shift+PgUp:向上翻页
shift+PgDn:向下翻页
2.1 帮助命令
帮助命令主要有2个:man、help。平时要多于帮助命令,遇到不清楚的命令就用帮助命令查看,无须死记硬背,熟能生巧。
2.1.1 man命令
语法:man [命令或配置文件]
作用:获取帮助信息
案例:
[root@localhost /]# man date
比如欲查看date命令的用法,输入命令man date之后出现下图信息
file
由于帮助信息比较多,需要翻页才能看完,因此先说明一下本界面可能需要用到按键及用途。
按键 | 用途 |
---|---|
空格键 | 向下翻页 |
PgDn (page down) | 向下翻页 |
PgUp (page up) | 向上翻页 |
home | 前往首页 |
end | 前往页尾 |
/ | 从上至下搜索关键字,如“/linux” |
? | 从下至上搜索关键字,如“?linux” |
n | 定位到下一个搜索到的关键词 |
N | 定位到上一个搜索到的关键词 |
q | 退出帮助文档 |
初学者一看,这么多的帮助信息反而感到困惑了,其实很简单的,我们来理一下帮助信息的结构(上图中圈红线的部分)。
结构名称 | 说明 |
---|---|
NAME | 命令的名称 |
SYNOPSIS | 命令的基本语法格式 |
DESCRIPTION | 详细说明语法格式对应的选项和参数的用法 |
EXAMPLES | 如何使用命令的示例 |
OVERVIEW | 概述 |
DEFAULTS | 默认功能 |
OPTIONS | 具体的可用选项 |
ENVIRONMENT | 环境变量 |
SEE ALSO | 相关的资料,通常是手册页 |
通过这些帮助信息,就可以轻松的掌握各个命令的用法。
2.1.2 help命令
语法:help 命令
作用:获取shell内置命令的帮助信息
案例:
[root@localhost /]# help cd
在正式进入命令学习之前,再介绍几个linux常用的快捷键
快捷键 | 作用 |
---|---|
ctrl+l | 清屏 |
ctrl+q | 退出 |
ctrl+c | 停止进程 |
上下键 | 查找曾今执行过的命令 |
tab | 命令补全,多用不仅提高效率还能防止敲错 |
既然linux一切皆文件,了解万能的帮助命令后,我们就从目录文件命令开始学习。
2.2 目录相关命令
目录可以对文件进行分类管理,因此在讲解文件命令之前先讲解目录相关命令。
#2.2.1 pwd
语法:pwd
功能描述:显示当前工作目录的绝对路径
案例:
[root@localhost /]# pwd
/
2.2.2 ls
语法:ls [选项] [目录或文件]
功能描述:列出目录下的文件
选项:
-a(–all):显示全部文件,包括隐藏文件(以.开头的文件)
-d:directory,列出目录本身
-l:long长数据串列出,包含文件的属性和权限等。每行列出的信息依次为:文件类型与权限、链接数、文件属性、文件属组、文件大小(byte)、创建或最近修改时间、名字
[root@localhost /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@localhost /]# ls -a
. .. bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@localhost /]# ls -d
.
[root@localhost /]# ls -al
总用量 20
dr-xr-xr-x. 17 root root 224 3月 4 2023 .
dr-xr-xr-x. 17 root root 224 3月 4 2023 ..
lrwxrwxrwx. 1 root root 7 3月 4 2023 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 3月 4 2023 boot
drwxr-xr-x. 20 root root 3240 3月 4 2023 dev
drwxr-xr-x. 75 root root 8192 3月 4 14:00 etc
drwxr-xr-x. 2 root root 6 4月 11 2018 home
lrwxrwxrwx. 1 root root 7 3月 4 2023 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 3月 4 2023 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 2 root root 6 4月 11 2018 opt
dr-xr-xr-x. 143 root root 0 3月 4 2023 proc
dr-xr-x---. 2 root root 151 3月 4 14:20 root
drwxr-xr-x. 25 root root 740 3月 4 14:03 run
lrwxrwxrwx. 1 root root 8 3月 4 2023 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 3月 4 2023 sys
drwxrwxrwt. 11 root root 4096 3月 4 14:03 tmp
drwxr-xr-x. 13 root root 155 3月 4 2023 usr
drwxr-xr-x. 19 root root 267 3月 4 2023 var
2.2.3 cd
语法:cd [选项] [目录名称]
功能描述:切换到指定目录
案例:
cd 绝对路径或相对路径 (跳转到指定目录)
cd 或cd ~ (返回当前用户家目录)
cd - (返回上一次所在的目录)
cd … (返回当前目录的上一级目录)
…/ 上一级目录
./ 当前目录
~ 用户的的home家目录
2.2.4 mkdir
语法:mkdir [选项] 目录名称
功能描述:创建指定目录
选项:
-p :parents,创建多层目录
案例:
[root@localhost ~]# mkdir test
[root@localhost ~]# mkdir -p test1/testw
[root@localhost ~]# ls
anaconda-ks.cfg test test1
2.2.5 rmdir
语法: rmdir [选项] 目录名称
功能描述:删除空目录
选项:
-p:删除多级目录
案例:
[root@localhost ~]# rmdir test
[root@localhost ~]# rmdir -p test1/testw
[root@localhost ~]# ls
anaconda-ks.cfg
[root@localhost ~]#
如果不指定-p参数,则只删除最后一级为空的目录
2.2.6 cp
语法:cp 源目录或文件 目标目录或文件
功能描述:复制目录或文件
选项:
-r:recursive,递归复制整个文件夹
案例:
将test复制为test.txt,复制时重命名
[root@localhost ~]# touch a
[root@localhost ~]# cp a a.txt
[root@localhost ~]# ls
a anaconda-ks.cfg a.txt test
[root@localhost ~]#
将所有test目录内容复制到test1目录(自动创建test1目录)
cp -r test test1
2.2.7 mv
语法:mv [选项] 源 目标
功能描述:移动文件或重命名文件
案例:
将test文件重命名为test.txt
mv test test.txt
将test目录及其里边所有内容移动到test2目录,自动创建test2目录(可以理解为将test文件夹重命名为test2)
mv test/ test2
2.2.8 rm
语法:rm [选项] 文件
功能描述:删除文件及目录
选项:
-f:force强制执行
-r:recursive递归执行
案例:
递归删除目录及其下所有内容
rm -rf test2/
通配符
rm -f /* 删除所有
2.3 文件相关命令
linux一切皆文件,在连接目录相关命令后,本节学习文件相关命令。
2.3.1 touch
语法:touch [选项] 文件名
功能描述:touch
案例:
touch test.txt
echo
语法:echo 字符串或变量
功能描述:输出字符串或变量值,还可以搭配从定向符将内容存储到文件
案例:
[root@localhost ~]# echo hello
hello
[root@localhost ~]# echo $SHELL
/bin/bash
echo linux >> test.txt 追加文本
2.3.2 cat
语法:cat [选项] 文件名
功能描述:查看文件内容,从第一行开始显示
选项:
-A:列出特殊字符而非空白
-b:列出行号,空白行不算行号
-n:列出行号,空白行也会有行号
-v:列出一些看不出来的特殊字符
案例:
[root@localhost test]# cat test.txt
hello
who are you
where are you from
[root@localhost test]# cat -A test.txt
hello$
who are you$
$
where are you from$
[root@localhost test]# cat -b test.txt
1 hello
2 who are you
3 where are you from
[root@localhost test]# cat -n test.txt
1 hello
2 who are you
3
4 where are you from
2.3.3 more
语法:more [选项] 文件
功能描述:查看文件内容,一页一页的显示
使用说明:
空格键(space):向下翻一页
enter:向下翻一行
q:退出more,不在显示文件内容
ctrl+f:向下滚动一屏
ctrl+b:返回上一屏
=:输出当前行的行号
:f:输出文件名和当前行号
2.3.4 head
语法:head [选项] 文件
功能描述:查看文件内容,只看头几行
选项:
-n:查看头n行
案例:
head -n 2 test.txt
2.3.5 tail
语法:tail [选项] 文件
功能描述:查看文件内容,只查看文件末尾几行
选项:
-n:末尾几行
-f:follow输出文件修改的内容,用于追踪文件修改
案例:
tail -n 2 test.txt
2.3.6 wc
语法:wc [选项] 文本
功能描述:统计指定文本的行数、字数、字节数
选项:
-l:lines显示行数
-w:显示单词数
-c:显示字节数
案例:
[root@localhost test]# cat test.txt
hello
who are you
where are you form?
wellcome
hahah
test
[root@localhost test]# wc -l test.txt
8 test.txt
[root@localhost test]# wc -c test.txt
60 test.txt
[root@localhost test]# wc -w test.txt
11 test.txt
2.3.7 stat
语法:stat [选项] 文件
功能描述:查看文件的具体存储信息和时间等信息
案例:
file test.txt
2.3.9 wget
语法:wget [参数] [url地址]
功能:下载网络文件
参数:
-b:background后台下载
-P:directory-prefix下载到指定目录
-t:tries 最大尝试次数
-c:continue断点续传clear
-p:page-requisites下载页面所有内容,包括图片、视频等
-r:recursive递归下载
案例:
下载百度logo图片
[root@localhost test]# wget https://www.baidu.com/img/bd_logo1.png
--2019-11-23 22:29:45-- https://www.baidu.com/img/bd_logo1.png
Resolving www.baidu.com (www.baidu.com)... 14.215.177.38, 14.215.177.39
Connecting to www.baidu.com (www.baidu.com)|14.215.177.38|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7877 (7.7K) [image/png]
Saving to: ‘bd_logo1.png’
100%[======================>] 7,877 --.-K/s in 0.002s
2019-11-23 22:29:45 (4.43 MB/s) - ‘bd_logo1.png’ saved [7877/7877]
2.4 查找命令
有时候需要从大量文件中找出需要的文件或者从指定文件中查找特定内容,这就需要用到查找相关的命令。
2.4.1 find
语法:find [搜索范围] [匹配条件]
功能描述:查找文件或目录
参数说明
- -name:按文件名称查找
- -user:按文件拥有者查找
- -size:根按文件大小查找文件(+n大于,-n小于,n等于)
案例:
在/etc/目录下查找profile文件
find /etc/ -name profile
查找/etc/目录下查找用户root的文件
find /etc/ -user root
在test目录下查找小于100M的文件
find /etc/ -size -100M
2.5 日期命令
日期相关命令用于设置或获取系统日期。
2.5.1、date
语法:date [选项] [格式]
功能描述:显示或设置时间
参数:
-s:set 以字符串格式设置时间
格式:(注意区分大小写)
- +%Y:显示当前年份
- +%m:显示当前月份
- +%d:显示当前是哪一天
- +%H:显示当前小时
- +%M:显示当前分钟
- +%S:显示当前秒数
- +%Y%m%d:显示当前年月日
- “+%Y-%m-%d %H:%M:%S”:显示当前年月日时分秒 (用引号括起来)
案例:
设置时间
date -s "2019-05-29 10:58:00"
显示时间
date "+%Y-%m-%d %H:%M:%S"
2.6、压缩解压
为了便于传输或节省存储空间有时候文件是以压缩包的形式存在,因此就需要了解压缩与解压相关命令。
- 打包是指将一大堆文件或目录什么的变成一个总的文件。
- 压缩是将一个大的文件通过一些压缩算法变成一个小文件。
在linux中打包和压缩是两个过程。
2.6.1、tar
语法:tar [参数] 包名.tar.gz 待打包的内容
功能描述:打包目录,压缩后的文件格式为.tar.gz
参数:
短指令 | 长指令 | 描述 |
---|---|---|
-c | –create | 打包 |
-v | –verbose | 显示详细的tar处理的文件信息的过程 |
-f | –file | 要操作的文件名 |
-x | –extract | 解包 |
-z | –gzip, --gunzip, --ungzip | 通过 gzip 来进行归档压缩或解压 |
-C | –directory=DIR | 解压文件至指定的目录,如果是解压到当前目录,可以不加-C |
案例:
压缩多个文件,将test.txt和test1.txt压缩为test.tar.gz
tar -czvf 压缩包名 要压缩的文件名 //打包并压缩
tar -xzvf 压缩包名 //解压缩并解包
tar -cvf 压缩包名 要压缩的文件名 //打包
tar -xvf 压缩包名 要压缩的文件名 //打包
2.6.2、zip和unzip
语法:
压缩:zip [参数] 包名.zip 待压缩内容
解压:uzip 包名.zip
功能描述:压缩文件和目录,windows和linux通用且可以压缩目录并保留源文件
参数:
- -r:recurse-paths递归压缩目录
案例:
压缩test.txt为test.zip
zip test.zip test.txt
解压test.zip
unzip test.zip
2.6.3、gzip和gunzip
gzip与zip区别主要是适应系统不同,还有就是压缩率不一样,Windows系统下普遍使用zip,Linux系统下面普遍使用gzip。
语法:
压缩:gzip [参数] 文件
解压:gzip [参数] 文件.gz
功能描述:
压缩:压缩文件,只能将文件压缩为*.gz文件。*只能压缩文件不能压缩目录,压缩解压后不保留原来的文件。对单个文件压缩
解压:解压文件
案例:
压缩文件:
gzip test.txt
解压文件:
gunzip test.txt.gz
2.6 进程相关命令
任务都以进程或线程的形式存在,因此需要随时关注系统的进程,查看是否有异常进程以及各进程占用系统资源的情况并使用不同的进程管理命令对进程管理和控制。
2.6.1、ps
功能描述:查看系统中所有进程
参数:
- -e:显示所有进程。
- -f:全格式。
- -a:all 显示现行终端机下的所有程序,包括其他用户的程序。
- -u:userlist 以用户为主的格式来显示程序状况
- -x: 显示所有程序,不以终端机来区分 (前面讲过终端有很多类型,不仅显示当前终端)
案例:
ps -aux
ps -ef
项 | 含义 |
---|---|
USER | 进程是由哪个用户产生的 |
PID | 进程ID |
%CPU | 该进程占用CPU的百分比,占用越高,进程越耗费资源 |
%MEM | 该进程占用内存的百分比,占用越高,进程越耗费资源 |
VSZ | 占用虚拟内存的大小,单位KB |
RSS | 占用实际物理内存的大小,单位KB |
TTY | 表示该进程在哪个终端中运行,tty1-tty7代表本地控制台终端(tty1-tty6是本地的字符界面终端,tty7是图形终端),pts/0-255代表虚拟终端 |
STAT | 进程状态,常用状态有:R(运行)、S(睡眠)、T(停止状态)、s(包含子进程)、+(位于后台) |
START | 进程启动时间 |
TIME | 进程执行时间,即占用cpu的运算时间,不是系统时间 |
COMMAND | 产生此进程的命令名 |
2.6.2 管道命令 |
我们可以通过管道命令对上一个命令的结果进行过滤:
ps的结果内容太多,我们可以使用管道命令对ps的结果进行二次处理,筛选出满足条件的结果:
ps -aux | grep sshd
2.6.3 top
语法:top [选项]
功能描述:查看系统健康状态
参数:
- -d秒数:Delay-time,指定top命令每隔几秒更新,默认是3秒。
- -i:Idle-process,使top命令不显示任何闲置或者僵死进程
- -p:Monitor-PIDs ,通过指定监控进程ID来仅仅监控某个进程的状态
- -s:Secure-mode,使top在安全模式运行,去除交互命令所带来的潜在危险
案例:
查看非僵死进程,一秒钟刷新一次
top -i -d 1
在此界面可以通过如下相应按键进行排序操作
操作键 | 说明 |
---|---|
shift+n | 以PID排序 |
shift+m | 以内存排序 |
shift+p | 以cpu使用率排序,默认选项 |
q | 退出top |
2.6.4 pidof
语法:pidof [参数] 服务名称
功能描述:查询某个指定服务进程的pid值
案例:
查看sshd服务的进程id
pidof sshd
2.6.5 kill常用
语法:kill [选项] 进程id
功能描述:终止某个指定pid的服务进程
选项:
-9:强迫进程立即停止
案例:
kill -9 20385//杀死进程号为20385的进程
2.6.6 killall
语法:killall [选项] 服务名
功能描述:终止某个指定名称的服务对应的所有进程
案例:
终止httpd服务的所有进程
killall httpd
2.7 系统状态相关命令
通过相关命令检查系统状态以及资源耗用情况,保证系统健康稳定运行。
2.7.1 ip addr
语法:ifconfig 或者 ip addr
功能描述:获取网卡配置和网络状态信息
案例:
ifconfig
主要查看内容:网卡名称(eno16777736 )、ip地址(inet之后)物理网卡地址即mac地址(ether)、TX和TX接收和发送数据包的个数和累计流量
2.7.2 netstat
如果该命令不能用,需要下载net-tools,yum install net-tools。
语法:netstat [参数]
- -t或–tcp 显示TCP传输协议的连接状况。
- -u或–udp 显示UDP传输协议的连接状况。
- -n或–numeric 直接使用IP地址,而不通过域名服务器。
- -l或–listening 显示监控中的服务器的Socket。
- -p或–programs 显示正在使用Socket的程序的进程号和程序名称。
功能描述:显示整个系统目前网络情况,比如目前的链接、数据包传递数据、路由表内容等
案例:
这个命令可以列出目前正在某些端口等待或已经发生了tcp连接的程序:
netstat -pltn
2.7.3 uname
语法:uname [选项]
功能描述:查看系统内核和系统版本等信息
参数:
- -a:all显示系统完整信息
- -s:kernel-name系统内核名称
- -n:nodename节点名称
- -r:kernel-release内核发行版
- -v:kernel-version内核版本
- -m:machine硬件名称
- -i:hardware-platform硬件平台
- -p:processor处理器类型
- -o:operating-system操作系统名称
案例:
uname
uname -a
显示信息依次为:内核名称(Linux)、主机名(localhost.localdomain)、内核发行版(5.14.0-130.el9.x86_64)、内核版本(#1 SMP PREEMPT_DYNAMIC Fri Jul 15 11:24:09 UTC 2022)、硬件名称(x86_64)、硬件平台(x86_64)、处理器类型(x86_64)及操作系统名称(GNU/Linux)。
如果要查看系统版本的详细信息,通过查看/etc/redhat-release文件
cat /etc/redhat-release
2.7.4 uptime
语法:uptime [选项]
功能描述:查看系统的负载信息,可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指系统在最近1分钟、5分钟、15分钟内的压力情况,负载值越低越好,尽量不要长期超过1,生产环境不要超过5。
案例:
uptime
2.7.5 free
语法:free [选项]
功能描述:显示当前系统中内存的使用信息
选项:
-m:megabytes以兆字节显示
-h:human带单位输出
案例:
free -h
字段说明:total(内存总量)、used(已用量)、free(可用量)、shared(进程共享的内存量)、buffers(磁盘缓存的内存量)、cached(缓存的内存量)
2.7.6 df
df 以磁盘分区为单位查看文件系统,可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
例如,我们使用df -h命令来查看磁盘信息, -h 选项为根据大小适当显示
df -h
显示内容参数说明:
- Filesystem:文件系统
- Size: 分区大小
- Used: 已使用容量
- Avail: 还可以使用的容量
- Use%: 已用百分比
- Mounted on: 挂载点
相关命令:
- df -hl:查看磁盘剩余空间
- df -h:查看每个根路径的分区大小
- du -sh [目录名]:返回该目录的大小
- du -sm [文件夹]:返回该文件夹总M数
- du -h [目录名]:查看指定文件夹下的所有文件大小(包含子文件夹)
2.7.7 who
语法:who [参数]
功能描述:查看当前登入主机的用户终端信息
案例:
who
2.7.8 last
语法:last [参数]
功能描述:查看所有的系统登录记录。但是要注意,这些信息是以日志文件保存的,因此黑客可以很容易进行修改,所以不能单纯以该命令来判断是否有黑客入侵。
案例:
last
2.7.9 history
语法:history [参数]
功能描述:显示历史执行过的命令
选项:
- -c:清除所有历史记录,但是.bash_history文件内容不会删除
案例:
history
# 可以用“!编号”执行某一次曾经执行过的命令
历史命令保存在一个root的.bash_history文件中(.开头为隐藏文件通过ls或ll -a列出),可以用cat命令查看。
2.8 关机命令
linux一般用在服务器上,很少遇到关机的情况,毕竟关机服务就会中断,除非特殊情况不得已才会关闭。
正确的关机流程:sync>shutdown或reboot或halt
无论重启还是关机,都需要先sync将内存数据同步到硬盘中,避免数据丢失
2.8.1 shutdown
语法:shutdown [-option]
功能描述:关机
选项:
- -h:关机
- -r:重启
关机时间:
- hh:mm:指定24小时制的小时和分钟后关机
- +m:m分钟后关机(+1:默认值,1分钟后关机; +0:now,立刻关机)
案例:
1分钟后关机并提示所有已登录系统的用户
shutdown -h 1 "this server will shutdown after 1min"
2.8.2 reboot
语法:reboot [ 选项]
功能描述:重启系统,等同于shutdown -r now
案例:
reboot
2.8.3 poweroff
语法:poweroff [选项]
功能描述:关闭系统
案例:
poweroff
2.8.4 halt
语法:halt [选项]
功能描述:关闭系统,等同于shutdown -h now和poweroff
案例:
halt