欢迎来到电脑知识学习网,专业的电脑知识大全学习平台!

手机版

linux基本命令总结(linux常用命令一览表)

软件应用 发布时间:2022-05-27 17:37:40

相信大家对 Linux 肯定是不陌生的,很多同学在学习 Linux 的时候比较头疼,觉得比较难学,命令多记不住,其实我们在学习 Linux 的时候,要把我们的大脑当成内存来用,而不是硬盘。

本文用的是 Ubuntu 操作系统,版本为 ubuntu-21.04-desktop-amd64.iso。下载地址:

http://mirrors.aliyun.com/ubuntu-releases/

用的远程连接工具为 FinalShell,下载地址:

http://www.hostbuf.com/t/988.html

帮助命令

Linux 中有很多命令,命令也有很多参数,那我们要怎么去学习呢?我们可以借助帮助文档,这里给大家介绍 3 个帮助命令:

  • man
  • help
  • info

man

man 是 manual 的缩写,有问题找男人,当时这是一句开玩笑的话。

man 命令的使用也非常简单,示例如下:

man ls

man 也是一条命令,分为 9 章,可以使用 man 命令获得 man 的帮助:

man man

linux基本命令总结(linux常用命令一览表)(1)

有的同学一定会好奇,为什么 man 命令给我们 9 章,这是因为命令和系统文件有的时候会出现重名的情况,比如:

passwd        # 这是命令
/etc/passwd    # 这是配置文件

如果不知道是命令还是配置文件,加上 -a 参数:

man -a passwd

这个时候会先查看 passwd 命令,退出后会显示:

linux基本命令总结(linux常用命令一览表)(2)

可以根据提示继续查看,还是跳过当前的命令查看下一个命令:

linux基本命令总结(linux常用命令一览表)(3)

help 帮助

这里我先要说一个内部命令和外部命令的概念,shell 自带的命令称为内部命令,其他的是外部命令。

那要怎么区分到底是内部还是外部呢?通过 type,后面跟上命令。

juran@juran-virtual-machine:~$ type cd
cd 是 shell 内建

如果是内部命令使用 help:

help cd

如果是外部命令使用 --help:

ls --help

info 帮助

info 帮助比 help 更详细,作为 help 的补充,大多数的情况下,我们使用 man 和 help 就足够了。

命令格式

终端的命令组成:

command [-options] [parameter]
  • command:命令名,
  • [-options]:选项,可以有零个、一个或者多个选项,多个选项可以合并,命令的选项用于调整命令功能
  • [parameter]:参数,可以有零个、一个 或者 多个参数,参数是命令的操作对象,一般文件、目录、用户和进程等可以作为参数被命令操作
  • []:代表可选

查看目录命令

在 Linux 中一切皆文件,而且 Linux 中是没有盘符的概念的,所有的文件都在根目录下,接下来我们就来看下查看目录的命令有哪些。

linux基本命令总结(linux常用命令一览表)(4)

ls 命令:列出文件夹中的内容,ls 只能查看一层目录信息:

ls     # 查看当前文件夹的内容

ls /bin    # 查看 bin 目录下的文件

ls 命令还有一些比较常用的选项:

命令选项

说明

-l

以列表方式显示

-h

件大小单位显示,默认是字节

-a

显示隐藏文件和隐藏目录

tree 命令:以树状方式显示目录信息,tree 可以查看多层目录信息。

tree        # 以树状方式显示当前目录信息

tree /bin    # 如果提示没有 tree 命令,可以通过 apt install tree 进行安装

查看当前目录路径

pwd 命令:查看当前目录路径,是 print work directory 的缩写。

切换目录命令

linux基本命令总结(linux常用命令一览表)(5)

cd 命令:切换目录,是 change directory 的缩写。

cd 命令有几个常用的写法:

命令

说明

cd 目录

切换到指定目录

cd ~

切换到当前用户的主目录

cd ..

切换到上一级目录

cd .

切换到当前目录

cd -

切换到上一次目录

注意:cd 命令切换目录时,这个目录必须存在。cd 后面不写目录等价于 cd ~。

创建、删除文件及目录命令

linux基本命令总结(linux常用命令一览表)(6)

touch 命令:创建指定文件

touch abc.txt        # Linux 里面文件可以没有后缀的

touch a b c            # 可以一次创建多个文件

mkdir 命令:创建目录(文件夹)

mkdir movie        # 创建 movie 目录

mkdir a b c        # 创建 a b c 目录

如果我想创建双层的目录,来试试:

mkdir movie/active        # 想要创建 movie 下面的 active 目录,而且 movie 目录是没有被创建过的

mkdir: 无法创建目录 “movie/active”: 没有那个文件或目录

这是我们可以通过选项 -p:

mkdir movie/active -p         # 选项和参数之间是没有顺序的,先写那个都可以

我们也可以通过查看帮助文档,man mkdir:

linux基本命令总结(linux常用命令一览表)(7)

rm 命令:删除指定文件或者目录

rm 命令删除文件:

rm abc.txt

rm 命令删除目录:

mkdir juran
rm juran
rm: 无法删除 'juran': 是一个目录

rm 命令是无法直接删除目录的,需要加上选项 -r:

rm -r juran

可以通过 man rm 查看选项,下面来自帮助文档:

-r, -R, --recursive
    remove directories and their contents recursively

rmdir 命令:删除空目录

rmdir juran    # juran 目录是空目录

如果删除非空目录:

mkdir -p a/b
rmdir a
rmdir: 删除 'a' 失败: 目录非空

小结

  • touch 表示创建文件
  • mkdir 表示创建目录
  • rm 表示删除文件或者目录,如果删除目录需要使用 -r 选项,-r 表示递归删除目录及其内容
  • rmdir 表示删除空目录

复制、移动文件及目录命令

linux基本命令总结(linux常用命令一览表)(8)

cp 命令:拷贝文件、拷贝目录

cp 命令复制文件:

cp abc.txt juran    # 复制 abc.txt 到 juran 目录下

cp命令复制目录

mkdir a b        # 创建 a 和 b 目录
cp a b            # 复制 a 目录到 b 目录
cp: 未指定 -r;略过目录'a'

如果想要复制目录的话,需要加上选项 -r:

cp -r a b

mv 命令:移动文件、移动目录、重命名

mv 命令移动文件:

mkdir abc        # 创建 abc 目录
touch abc.txt    # 创建 abc.txt 文件

mv abc.txt abc

mv 命令移动目录:

mkdir a b
mv a b

查看文件内容命令

linux基本命令总结(linux常用命令一览表)(9)

cat 命令:文本内容显示到终端

查看文件内容:

touch a.txt
ls /bin > a.txt
cat a.txt

查看文件内容,并显示行号:

cat -n a.txt

查看多个文件:

cat a.txt b.txt

多个文件合并:

cat a.txt b.txt > c.txt

还有一个跟 cat 非常像的命令,tac 命令倒叙输出文本内容。

head 命令:查看文件开头

查看文件:

head a.txt        # 默认显示文件前 10 行内容

指定查看文件行数:

head -5 a.txt    # 显示文件前 5 行内容

tail 命令:查看文件结尾

tail a.txt        # 默认显示文件后 10 行内容

指定查看文件行数:

tail -5 a.txt        # 显示文件后 5 行内容

查看文件更新:

tail -f a.txt

在另外一个终端,对文件进行更新:

echo "juran" > a.txt

linux基本命令总结(linux常用命令一览表)(10)

wc 命令:统计文件内容信息

wc -l a.txt  # 统计文件行数

压缩和解压命令

linux基本命令总结(linux常用命令一览表)(11)

tar 命令:压缩和解压缩命令

tar 命令可以打包,也可以打包压缩:

touch 1.txt 2.txt 3.txt

ls /bin > 1.txt
ls /etc > 2.txt
ls /lib > 3.txt

tar -cvf 3.tar ./*.txt

压缩成 .gz 文件:

tar -zcvf backup.tar.gz  *.txt

解压 .gz 文件:

tar -zxvf backup.tar.gz

解压到指定的目录:

tar -zxvf backup.tar.gz -C bb/

压缩成 .bz2 文件:

tar -jcvf backup.bz2 *.txt

解压 .bz2 文件:

tar -jxvf backup.bz2

解压到指定目录:

tar -jxvf backup.bz2  -C bb/

压缩 zip 文件:

zip backup  *.txt   # 默认后缀是.zip

解压缩 zip 文件:

zip backup.zip -d /bb        # -d 指定文件夹

vim 的使用

linux基本命令总结(linux常用命令一览表)(12)

我们在 Windows 中有记事本,也有像 pycharm 这样的代码编辑器。

那在 Linux 中我们用什么来写代码呢(如何优雅的装 X)?

用的就是 vim,大家可以把 vim 想象成 Windows 中的 pycharm,或者你熟悉的编辑器。

vim 安装

sudo apt-get install vim     # 这是 Ubuntu 的安装

sudo yum install vim     # 这是 centos 的安装

vim 的工作模式

  • 命令模式
  • 编辑模式
  • 末行模式

工作模式效果图:

linux基本命令总结(linux常用命令一览表)(13)

编辑模式和末行模式之间不能直接进行切换,都需要通过命令模式来完成。

vim 的末行模式命令

  • :w 保存
  • :wq 保存退出
  • :x 保存退出
  • :q! 强制退出

vim 的常用命令

命令

说明

yy

复制光标所在行

p

粘贴

dd

删除/剪切当前行

V

按行选中

u

撤销

ctr+r

反撤销

>>

往右缩进

<<

往左缩进

:/搜索的内容

搜索指定内容

:%s/要替换的内容/替换后的内容/g

全局替换

:开始行数,结束行数 s/要替换的内容/替换后的内容

局部替换

.

重复上一次命令操作

G

回到最后一行

gg

回到第一行

数字+G

回到指定行

shift+6

回到当前行的行首

shift+4

回到当前行的行末

ctr+f

下一屏

ctr+b

上一屏

vim 交换文件解决办法

当我们用 vim 编辑一个文件,并写入一些数据,发生意外 vim 没有正常退出,这时再去编辑这个文件就会有如下提示:

linux基本命令总结(linux常用命令一览表)(14)

这时我们可以直接选择编辑,但是下次打开的时候仍然会有这个提示。如果我们执行命令 ls -a 会看到一个隐藏文件 .a.txt.swp。

这个隐藏文件大家可以理解为 Linux 中的缓存文件,为了帮助我们恢复数据的。如果我们不需要的话,可以直接删除,删除掉这个文件后,再次编辑就不会有这个提示了。

用户和用户组管理

linux基本命令总结(linux常用命令一览表)(15)

用户管理

Linux 支持多任务多用户,用户登录 Linux 之后可以做很多事件,这点和 Windows 很像,但是 Windows 不支持多用户。

linux基本命令总结(linux常用命令一览表)(16)

useradd 命令:创建(添加)用户

useradd -m juran        # 如果是普通用户执行这个命令会报错

linux基本命令总结(linux常用命令一览表)(17)

创建用户是需要管理员的权限才可以的。我们想要执行这个命令有两种方法

  • 切换到 root 用户下去执行
  • 在普通用户下,命令前面加上 sudo,这个命令在执行的时候就可以获得管理员的权限
sudo useradd -m juran

创建好的用户,还需要设置密码:

sudo passwd juran

设置好密码后,我们可以切换到 juran 用户下:

su juran

在 Ubuntu 中,默认切换到用户的 bash 是 /bash/sh,这样我们在敲命令的时候特别不方便,我们可以在创建用户的指定解释器:

sudo useradd -m juran -s /bin/bash

查看用户是否创建成功,可以查看 /etc/passwd 这个文件:

tail /etc/passwd

linux基本命令总结(linux常用命令一览表)(18)

passwd 文件中的每项信息说明,以 root:x:0:0:root:/root:/bin/bash 为例:

第一个:用户名
第二个:密码占位符
第三个:uid, 用户 id
第四个:gid, 用户所在组 id
第五个:用户描述, 可选,
第六个:用户的主目录所在位置
第七个:用户所用 shell 的类型,一般由 bash 或者 sh,默认不设置是 sh 类型

创建用户,默认会自动创建一个同名的用户组,查看用户组是否创建成功,可以查看 /etc/group 这个文件。

group 文件中的每项信息说明,以 laowang:x:1001: 为例:

第一个:用户组名
第二个:用户组密码占位符,一般 Linux 系统的用户组都没有密码的
第三个:组 id

我们也可以通过 id 命令查看用户信息:

id laowang

uid=1001(laowang) gid=1001(laowang) 组=1001(laowang)
第一个: uid 表示用户 id
第二个: gid 表示用户组 id
第三个: 组 表示用户所在的用户组

创建用户流程

  1. useradd juran
  2. 系统读取 /etc/login.defs 和 /etc/default/useradd 两个文件中定义的规则创建新用户
  3. 向 /etc/passwd 和 /etc/group 文件中添加用户和组信息,想 /etc/shadow 和 /etc/gshadow 中添加密码信息
  4. 根据 /etc/default/useradd 文件中配置的信息创建用户家目录
  5. 把 /etc/skel 中所有的文件复制到新用户家目录中

在 Linux 系统中,UID 为 0,就是超级用户,如果设置管理员用户,可以改为 UID 为 0,系统用户 UID 为 1~999,Linux 安装的服务程序都会创建独有的用户负责运行,普通用户 UID 从 1000 开始,最大值 1000~60000 范围。

修改用户信息

创建的用户没有执行 sudo 命令的权限,那我们想要创建的用户也可以执行这个命令,怎么办呢?

我们可以修改用户的附加组,每个用户都有自己的主组,相当于亲爹,那附加组就相当于干爹,可以有很多个:

sudo usermod -g sudo jr

linux基本命令总结(linux常用命令一览表)(19)

这时我们创建的用户,就可以执行 sudo 命令了。

用户组相关操作

为了方便管理属于同一组的用户,Linux 系统中还引入了用户组的概念。

一个公司中有多个部门,每个部门中又有很多员工,如果只想让员工访问本部的资源,则可以针对部门而非具体的员工来设置。开发部的小哥哥想要前台小姐姐的信息,肯定不能让他直接访问的。

groupadd 命令:创建(添加)用户组

创建用户前,我们可以先创建好用户组:

sudo groupadd dev        # 创建开发组

创建用户指定组:

sudo useradd -m laowang -g dev

修改用户组:

sudo usermod -g dev laowang

删除用户组:

sudo groupdel dev        # 这时会报错

如果用户组下面有用户先删除用户在删除用户组。

文件权限命令

linux基本命令总结(linux常用命令一览表)(20)

执行命令 ls -al 查看文件:

linux基本命令总结(linux常用命令一览表)(21)

这里以文件 abc 来解释。

第一位:文件类型

  • - 表示文件
  • d 表示目录
  • l 表示链接

后面 9 位表示权限:

命令

解释

字母表示

rw-

所有者拥有读写权限

用 u 表示,代表 user

r--

所属组拥有读权限

用 g 表示,代表 group

r--

其他人拥有读权限

用 o 表示,代表 other

减少权限:

chmod u-r abc.txt        # 不能读取数据

chmod u-w abc.txt        # 不能写入数据

添加只读权限,减少写权限:

chmod u+r,u-w pwd.txt

chmod 数字法的使用,数字法就是 rwx 这些权限也可以用数字来代替。

权限

说明

r

可读,权限值是 4

w

可写,权限值是 2

x

可执行,权限值是 1

-

无任何权限,权限值是 0

数字法授予权限,所有者可读可写可执行,所属组可读可写,其他人可读:

chmod 764 abc.txt

网络管理

linux基本命令总结(linux常用命令一览表)(22)

网络配置

网络配置最重要的两个工具就是 ifconfig 和 ip,这两个工具分别来自两个工具包 net-tools 和 iproute2。

ifconfig 命令:配置和显示 Linux 系统网卡的网络参数

ifconfig 通常是用来查看网卡的信息(比如 IP 地址、收发包及丢包情况等),以及配置网卡(如启停网卡,修改网卡 MTU,修改 IP、MAC 地址等)。

这个命令需要安装:

sudo apt-get install net-tools

若 ifconfig 提示找不到命令,安装 net-tools 也未果,可能是因为 ifconfig 已不被推荐使用,可用 ip addr show 命令代替,一样可以显示出 IP 地址。

linux基本命令总结(linux常用命令一览表)(23)

ip 命令:网络配置工具

ip 是非常强大的工具,可以替换 net-tools 包的所有工具,如常见的 ifconfig、netstat、route、arp 等。

查看网卡信息:

ip addr show

linux基本命令总结(linux常用命令一览表)(24)

显示系统路由:

ip route show

linux基本命令总结(linux常用命令一览表)(25)

开启网卡或关闭网卡:

ip link set eth0 up             # 开启网卡
ip link set eth0 down       # 关闭网卡

网络故障排除

当我们遇到服务器的网络出现问题的时候,我们改怎么去排查呢?大家可以通过下面的命令来逐一排查。

ping 命令:测试主机之间网络的连通性

这个命令通常用来判断网络的连通性和网速情况,偶尔用来查看域名的 IP:

ping www.baidu.com

linux基本命令总结(linux常用命令一览表)(26)

ping 命令并不会自动结束,需要我们 ctrl+c 强制停止,大家可以通过 -c 选项来指定 ping 的次数:

ping www.baidu.com -c 3        # 设置完成要求回应的次数

linux基本命令总结(linux常用命令一览表)(27)

ping 只能使用 ipv4,要使用 ipv6,可以用 ping6 命令。

telnet 命令:登录远程主机和管理(测试 IP 端口是否连通)

telnet 通常用作远程登录,用来确定远程服务的状态,探测远程服务器的某个端口是否能访问,也可以探测本地的:

telnet localhost 22

linux基本命令总结(linux常用命令一览表)(28)

telnet localhost 3306

linux基本命令总结(linux常用命令一览表)(29)

处理这种情况方法:

  • 确认 IP 地址是否正确?
  • 确认 IP 地址对应的主机是否已经开机?
  • 如果主机已经启动,确认路由设置是否设置正确?(使用 route 命令查看)
  • 如果主机已经启动,确认主机上是否开启了 telnet 服务?(使用 netstat 命令查看,TCP 的 23 端口是否有 LISTEN 状态的行)
  • 如果主机已经启动 telnet 服务,确认防火墙是否放开了 3306 端口的访问?(使用 iptables-save 查看)

traceroute 命令:显示数据包到主机间的路径

traceroute 主要用来探测从源主机到目标主机之间的每一跳路由节点,通常和 ping 结合起来排查网络故障, ping 测连通性和网速,如果网络不通,可以借由 traceroute 进一步排查是哪个路由节点出问题了。

traceroute www.58.com

linux基本命令总结(linux常用命令一览表)(30)

我们 traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了 ICMP 的返回信息,所以我们得不到什么相关的数据包返回数据。

有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台 DNS 出现问题时,不能解析主机名、域名时,也会有延时长的现象;您可以加 -n 参数来避免 DNS 解析,以 IP 格式输出数据。

如果在局域网中的不同网段之间,我们可以通过 traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到 traceroute 追踪数据包所经过的网关,提交 IDC 服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC 服务商也不可能帮助我们解决。

网络连接

netstat 命令:查看 Linux 中网络系统状态信息

netstat 用于查看当前网络的连接情况,能够查看所有的网络连接,包括 Unix Socket 等,也是集多种工具于一身的组合工具。

列出所有端口:

netstat -a     # 列出所有端口
netstat -at    # 列出所有 tcp 端口
netstat -au    # 列出所有 udp 端口

列出所有处于监听状态的 Sockets:

netstat -l        # 只显示监听端口
netstat -lt       # 只列出所有监听 tcp 端口
netstat -lu       # 只列出所有监听 udp 端口

ss 命令:iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息。

ss 和 netstat 类似,也是用来查看网络连接统计的工具,它的输出也和 netstat 类似,甚至显示更多连接状态信息,它最大的优势在于比 netstat 快,在服务器维持上万个连接的情况下,这种优势就体现得比较明显。

显示 TCP 连接:

ss -t -a

列出所有打开的网络连接端口:

ss -l

查看进程使用的 socket:

ss -pl

nc 命令:用于设置路由器

nc 被称为瑞士军刀,非常轻巧但功能强大,能够创建各种不同类型的网络连接、能够实现简单的聊天工具、远程传输文件、debug 分析、扫描端口等。

TCP 端口扫描:

nc -v -z -w2 localhost 1-100

选项解释:

  • -v 显示指令执行过程
  • -z 使用 0 输入/输出模式,只在扫描通信端口时使用
  • -w<超时秒数> 设置等待连线的时间
  • 1-100 扫描 TCP 端口

UDP 端口扫描:

nc -u -z -w2 192.168.0.1 1-1000        # 扫描 192.168.0.1 的端口 范围是 1-1000

选项解释:

  • -u 使用 UDP 传输协议

域名

host 命令:常用的分析域名查询工具

host 命令是域名分析查询工具,用来测试域名系统工作是否正常。

查看百度域名信息:

host www.baidu.com

linux基本命令总结(linux常用命令一览表)(31)

nslookup 命令:查询域名 DNS 信息的工具

nslookup 有两种工作模式,即“交互模式”和“非交互模式”。在“交互模式”下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表。而在“非交互模式”下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。

进入交互模式,直接输入 nslookup 命令,不加任何参数,则直接进入交互模式,此时 nslookup 会连接到默认的域名服务器。或者输入 nslookup -nameserver/ip。进入非交互模式,就直接输入 nslookup 域名就可以了。

非交互模式:

nslookup www.baidu.com

linux基本命令总结(linux常用命令一览表)(32)

交互模式:

nslookup

软件包管理器

Ubuntu 软件安装有两种方式:

  • 离线安装(deb 文件格式安装)
  • 在线安装(apt-get 方式安装)
  • 源码安装

我们绝大多数的时候,都是通过在线安装的方式来进行安装软件。

apt-get 方式安装

在线安装 deb 软件包的命令,主要用于在线从互联网的软件仓库中搜索、安装、升级、卸载软件。

在线安装软件命令格式:

sudo apt–get install 安装包         # 表示在线安装 deb 安装包

源码安装

开源软件都会提供源码下载的方式,对于源代码安装方式的好处即可以定制软件功能,安装需要的模块,不需要的模块可以屏蔽,方便管理,卸载等。

我们以 Redis 为例:

https://redis.io/download        # 这是官网 redis 的下载地址

官网中给出了源码安装的方式:

$ wget https://download.redis.io/releases/redis-6.2.5.tar.gz
$ tar xzf redis-6.2.5.tar.gz
$ cd redis-6.2.5
$ make

这里会使用 make 工具,make 工具就会通过 makefile 文件来实现。makefile 文件是一种按照某种语法来编写且定义了各个文件的依赖关系。

使用 make 命令,一般都需要 gcc 的环境:

sudo apt-get install gcc

更改镜像源

因为使用 apt-get 命令默认是从国外的服务器下载安装软件的,会导致下载安装速度很慢,所以需要更改成国内的镜像源服务器。

镜像源说明:镜像源就是下载软件来源的服务器。

更改镜像源的方式:

  • 可视化方式更改镜像源
  • 手动方式更改镜像源

可视化的方式适合 Ubuntu 这种有图形化界面的。

第一步:

linux基本命令总结(linux常用命令一览表)(33)

第二步:

linux基本命令总结(linux常用命令一览表)(34)

第三步:

linux基本命令总结(linux常用命令一览表)(35)

第四步:

linux基本命令总结(linux常用命令一览表)(36)

第五步:

linux基本命令总结(linux常用命令一览表)(37)

最后执行命令:

sudo apt-get update

手动修改就容易很多:

vim  /etc/apt/sources.list        # 编辑这个文件,将找好的国内镜像源直接复制到这个文件里面就行

这里是清华大学的镜像源,大家可以找其他的镜像源:

linux基本命令总结(linux常用命令一览表)(38)

查看进程

linux基本命令总结(linux常用命令一览表)(39)

ps 命令:用于报告当前系统的进程状态的命令

ps 命令可以搭配 kill 指令随时中断、删除不必要的程序。ps 命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。

当我们在终端敲下 ps 命令,会显示如下界面:

linux基本命令总结(linux常用命令一览表)(40)

字段解释:

PID         代表这个进程对应的 ID 号码
TTY         进程所属的控制台号码
TIME        进程所使用 CPUC 的总时间
CMD         就是正在执行的系统命令行是什么

ps 常用选项,显示 Linux 机器所有详细的进程信息:

ps -ef
  • -e:列出系统所有运行的进程
  • -f:显示 ID PID PPID C 等信息

linux基本命令总结(linux常用命令一览表)(41)

字段解释:

UID     这个进程是那个用户执行的命令
PID     进程的标识号码 用于启停进程
PPID    进程的父进程标识号
C       表示 CPU 使用的资源百分比
STIME   表示进程开始执行的时间
TTY     进程在那个终端执行的
TIME    该进程使用的 CPU 总时间
CMD     用户执行某条命令 产生的进程信息

过滤出系统指定的信息:

ps -ef | grep vim

查看 named 进程详细信息:

ps -aux | grep named

显示指定用户信息:

ps -u root

把所有进程显示出来,并输出到 ps1.txt 文件:

ps -aux > ps1.txt

ps 命令的参数,分为两种系统形式:

  • ps ef,不带减号的参数
  • ps -ef,带减号的参数

大家一定要注意带减号和不带减号,表示的含义是不同的。

  • e:列出程序时,显示每个程序所使用的环境变量
  • -e :列出系统所有运行的进程

linux基本命令总结(linux常用命令一览表)(42)

大家可以看出来效果是不一样的。

pstree 命令:以树状图的方式展现进程之间的派生关系

pstree 命令需要安装:

sudo apt-get install psmisc

执行 pstree 效果如下:

linux基本命令总结(linux常用命令一览表)(43)

kill 命令:发送相关信号,给进程达到不同的停止效果

我们通常用的都是 kill -9 进程号,除了 -9 这一个信号,kill 也有很多其他的信号。

kill -l

linux基本命令总结(linux常用命令一览表)(44)

下面是常用的信号:

HUP     1    终端挂断
INT     2    中断(同 Ctrl + C)
QUIT    3    退出(同 Ctrl + \)
KILL    9    强制终止
TERM   15    终止,这是 kill 命令默认的
CONT   18    继续(与 STOP 相反,fg/bg 命令)
STOP   19    暂停(同 Ctrl + Z)

示例:

ping www.baidu.com

找到 ping 命令的进程号:

ps -ef | grep ping

通过刚才找到的进程号结束掉 ping 命令:

kill -9 进程号

top 命令:显示或管理执行中的程序

可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。

当我们敲下 top 命令,可以看到如下界面:

linux基本命令总结(linux常用命令一览表)(45)

top 交互命令

在 top 命令执行过程中可以使用的一些交互命令,这些命令都是单字母的。

h:显示帮助画面,给出一些简短的命令总结说明;
k:终止一个进程;
i:忽略闲置和僵死进程,这是一个开关式命令;
q:退出程序;
r:重新安排一个进程的优先级别;
S:切换到累计模式;
s:改变两次刷新之间的延迟时间(单位为 s),如果有小数,就换算成 ms。输入 0 值则系统将不断刷新,默认值是 5s;
f 或者 F:从当前显示中添加或者删除项目;
o 或者 O:改变显示项目的顺序;
l:切换显示平均负载和启动时间信息;
m:切换显示内存信息;
t:切换显示进程和 CPU 状态信息;
c:切换显示命令名称和完整命令行;
M:根据驻留内存大小进行排序;
P:根据 CPU 使用百分比大小进行排序;
T:根据时间/累计时间进行排序;
w:将当前设置写入~/.toprc 文件中。

top 命令上面字段:

top - 09:44:56 up 16 days, 21:23,  1 user,  load average: 9.59, 4.75, 1.92
Tasks: 145 total,   2 running, 143 sleeping,   0 stopped,   0 zombie
Cpu(s): 99.8%us,  0.1%sy,  0.0%ni,  0.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4147888k total,  2493092k used,  1654796k free,   158188k buffers
Swap:  5144568k total,       56k used,  5144512k free,  2013180k cached

解释:

top - 09:44:56[当前系统时间],
16 days[系统已经运行了 16 天],
1 user[个用户当前登录],
load average: 9.59, 4.75, 1.92[系统负载,即任务队列的平均长度]
Tasks: 145 total[总进程数],
2 running[正在运行的进程数],
143 sleeping[睡眠的进程数],
0 stopped[停止的进程数],
0 zombie[冻结进程数],
Cpu(s): 99.8%us[用户空间占用 CPU 百分比],
0.1%sy[内核空间占用 CPU 百分比],
0.0%ni[用户进程空间内改变过优先级的进程占用 CPU 百分比],
0.2%id[空闲 CPU 百分比], 0.0%wa[等待输入输出的 CPU 时间百分比],
0.0%hi[],
0.0%st[],
Mem: 4147888k total[物理内存总量],
2493092k used[使用的物理内存总量],
1654796k free[空闲内存总量],
158188k buffers[用作内核缓存的内存量]
Swap:  5144568k total[交换区总量],
56k used[使用的交换区总量],
5144512k free[空闲交换区总量],
2013180k cached[缓冲的交换区总量],

内存查看命令

linux基本命令总结(linux常用命令一览表)(46)

free 命令:显示内存的使用情况

可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

以总和的形式显示内存的使用信息:

free -t

linux基本命令总结(linux常用命令一览表)(47)

周期性的查询内存使用信息,每 3s 执行一次命令:

free -s 3

linux基本命令总结(linux常用命令一览表)(48)

显示内存使用情况:

free -m

服务管理工具 systemctl

systemctl 命令:系统服务管理器指令

systemctl 命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。

启动服务:

service httpd start
systemctl start httpd.service

停止服务:

service httpd stop    
systemctl stop httpd.service

重启服务:

service httpd restart    
systemctl restart httpd.service

重载服务:

service httpd reload    
systemctl reload httpd.service

检查服务状态:

service httpd status
systemctl status httpd.service

设置开机自启动 MySQL 服务:

systemctl enable mysqld.service

停止开机自启动:

systemctl disable mysqld.service
责任编辑:电脑知识学习网

软件应用