系统管理与维护命令
ls 命令
- 功能说明
显示指定工作目录下的内容,列出工作目录所含的文件及子目录。此命令与下的语法如下:
ls [选项] [路径或文件]
ls的选项说明如下表所示。
ls的选项及其含义
选 项 | 含 义 |
-a | 显示指定目录下的所有文件以及子目录,包含隐藏文件(Linux 下将“.”开头的文件或者目录视为隐藏文档) |
-d | 只显示目录列表,不显示文件 |
-l | 除文件名称外,同时将文件或者子目录的权限、使用者和大小等信息详细列出 |
-s | 在每个文件名后输出该文件的大小 |
-k | 以 k 字节的形式表示文件的大小 |
-u | 以文件上次被访问的时间排序 |
-t | 以时间排序 |
-o | 显示除组信息外的详细信息 |
-x | 按列输出,横向排序 |
-r | 对目录反向排序 |
-q | 用?代替不可输出的字符 |
-m | 横向输出文件名,并以“,”作分格符 |
-S | 以文件大小排序 |
-R | 列出所有子目录下的文件 |
-pF | 在每个文件名后附上一个字符以说明该文件的类型。“*”表示可执行的普通文件,“/”表示目录,“@”表示符号链接,“|”表示 FIFOs, “=”表示套接字(sockets) |
-C | 按列输出,纵向排序 |
-R | 列出所有子目录下的文件 |
-Q | 把输出的文件名用双引号括起来 |
- 举例
列出/home 目录下文件及其子目录。
# ls -l /home/
总用量 0
drwx------ 2 test test 83 4月 25 01:16 test
drwx------ 2 woman myhome 62 4月 25 01:14 woman
drwx------ 2 yunlong myhome 101 4月 27 01:16 yunlong
显示/home/yunlong下的所有文件及其子目录的详细信息,并显示文件类型标记。
# ls -alF
总用量 12
drwx------ 2 yunlong myhome 101 4月 27 01:16 ./
drwxr-xr-x. 5 root root 46 4月 25 01:14 ../
-rw-r--r-- 1 root root 0 4月 27 01:16 1.txt
-rw-r--r-- 1 root root 0 4月 27 01:16 2.txt
-rw-r--r-- 1 root root 0 4月 27 01:16 3.txt
-rw-r--r-- 1 yunlong myhome 18 11月 25 2021 .bash_logout
-rw-r--r-- 1 yunlong myhome 193 11月 25 2021 .bash_profile
-rw-r--r-- 1 yunlong myhome 231 11月 25 2021 .bashrc
pwd命令
- 功能说明
显示当前的工作目录,执行 pwd 指令可立刻得知目前所在的工作目录的绝对路径名称, pwd 命令的语法如下:
pwd
cd命令
- 功能说明
改变当前工作目录,其用法与Windows下的cd类似。具体的语法格式如下:
cd [目录名]
cd命令的选项及其说明如下表所示。
cd命令的选项及其说明
命令格式 | 说 明 |
cd [目录] | 切换到有目录名指定的目录下,注意 Linux下文件和目录是区分大小写的 |
cd 或者cd ~ | 返回当前用户的默认工作目录,注意 cd与“~”之间有一个空格 |
cd~[用户名] | 返回指定用户的工作目录下,注意这里“~”和用户名之间没有空格 |
cd ..或者 cd ../ | 返回到上级工作目录下 |
cd / | 返回到根目录下 |
- 举例
切换到/usr/bin 目录下,命令如下:
#cd /usr/bin/
# pwd
/usr/bin
返回到 oracle 工作目录下,命令如下:
# cd ~yunlong
# pwd
/home/yunlong
date命令
- 功能说明
显示或者修改系统时间与日期。只有超级用户才能用date命令设置时间,一般用户只能用date命令显示时间。date命令的语法如下:
date [选项] 显示时间格式 (以+开头,后面接时间格式)
Date命令的选项及其说明如下。
- -s --set:设置系统时间。
- -d --date:显示描述的日期。
时间显示格式如下所示。
时间显示格式
格 式 | 表示含义 |
%H | 显示小时,表示范围是 00~23 |
%I | 显示小时,表示范围是 01~12 |
%k | 显示小时,表示范围 0~23 |
%l | 显示小时,表示范围 1~12 |
%M | 显示分钟,显示格式为 00~59 |
%S | 显示秒钟,显示格式为 00~59 |
%p | 显示是 AM(上午)还是 PM(下午) |
%r | 显示时间,格式为 hh:mm:ssAM或 PM,其中 hh代表小时,mm代表分钟,ss代表秒 |
%T | 显示时间,格式为 hh:mm:ss |
%x | 显示年份和日期,格式为 mm/dd/yyyy,这里的 代表年份 |
%X | 显示时间格式,相当于%H:%M:%S 的组合 |
%a | 显示星期几 |
%b 或%B | 显示月份,%b 是月的简称,%B 是显示月的全称 |
%m | 显示月份,表示格式为从 01~12 |
%Z | 显示时区 |
%d | 显示一个月的第几天 |
%D | 显示年份和月份,格式为 mm/dd/yy,这里 yy 代表年份的最后两个数字 |
%Y 或%y | 显示年份,%Y 显示完整的年份,%y 显示年份的最后两个数字 |
%c | 显示日期和时间格式,相当于“%a %d %b %Y %r %Z”的组合 |
- 举例
(1) 用指定的格式显示时间和日期。
# date '+This date now is:%x, time is now:%X, thanks!'
This date now is:2024年04月27日, time is now:15时53分48秒, thanks!
(2) 修改系统时间。
# date -s 20240427
2024年 04月 27日 星期六 00:00:00 CST
# date -s 15:53:30
2024年 04月 27日 星期六 15:53:30 CST
也可以将上面两部合并到一起。
# date -s "20240427 15:55:30"
2024年 04月 27日 星期六 15:55:30 CST
(3) 显示两天前的时间。
# date '+%Y-%m-%d'
2024-04-27
# date -d "2 days ago" +%Y-%m-%d
2024-04-25
passwd命令
- 功能说明
用于设置用户口令。语法格式如下:
passwd [用户名]
- 举例
(1) 普通用户要修改自己的口令,可使用以下命令:
passwd
然后根据提示连续两次输入口令即可。
(2) 超级用户 root 修改某个用户的口令时,使用以下命令:
passwd [用户名]
然后根据提示连续两次输入口令即可。
root 修改自己的密码时,只需输入:
passwd
或者
passwd
然后根据提示连续两次输入口令即可。
su命令
- 功能说明
su命令主要用于改变用户身份,其格式如下:
su [选项] [用户名]
su命令的选项及其说明如下所示。
su命令的选项及其说明
选 项 | 说 明 |
- | 加载相应用户下的环境变量 |
-l | 使目前的 shell成为改变身份后用户默认的 shell |
-c | 改变身份运行一个指令后就结束 |
-m | 改变用户身份,但是不改变环境变量 |
- 举例
(1) 普通用户要成为超级用户,可执行如下命令。
$su -
根据系统提示输入超级用户口令,即可转变为超级用户。
注意:su 后面的“-”就是加载 root 环境变量,如果直接输入su 也可以转变为超级用户,但是由于没有加载 root 环境变量,因此某些指令可能无法执行,会提示“command not found”。
(2) 在普通用户A 下修改超级用户 root 的口令,可以使用下面的命令。
$su –c passwd
然后根据提示输入 root 口令,接着连续两次输入 root 用户新的密码。执行完毕,系统自动退出到普通用户A 下。
选项 | 说明 |
- | 加载相应用户下的环境变量 |
-l | 使目前的 shell 成为改变身份后用户默认的 shell |
-c | 改变身份运行一个指令后就结束 |
-m | 改变用户身份,但是不改变环境变量 |
clear命令
- 功能说明
clear 命令用来清除屏幕信息,格式如下:
man命令
- 功能说明
man命令用来显示指定命令的帮助信息,其格式如下:
man [命令名称]
- 举例
需要得到 ls 命令的帮助信息。
# man ls
who命令
- 功能说明
who 命令显示目前登录到系统的用户,其格式如下:
who [选项] [file]
who 命令的一般输出格式如下:
名称 [状态] 线路 时间 [活动] [进程标识](主机名)
- 名称:用户的登录名。
- 状态:表明线路是否对用户都是可写的。
- 线路:类似于 pts/1、pts/2 等,此线路标识在/dev 目录中可找到。
- 时间:用户登录系统的时间。
- 活动:某个用户在自己的线路上最后一次活动发生以来到现在的时间,如果此项是个“.”,就表示一分钟内的线路活动;如果线路保持静止已经超过 24 小时或自从系统启动以来还没有被使用过,那么此项标记为“old”。
- 进程标识:用户登录 shell 的进程id。
- 主机名:登录到 Linux 系统上的客户端机器标识。
who 命令的选项及其说明如表所示。
who 命令的选项及其说明
选 项 | 说 明 |
-a | 列出所有信息,相当于所有选项 |
-b | 列出系统最近启动的时间日期 |
-l | 列出所有可登录的终端信息 |
-m | 仅列出关于当前终端的信息。“who –m”命令等同于“who am i”和“who am I”命令 |
-q | 列出在本地系统上的用户和用户数的清单 |
-r | 显示当前系统的运行级别 |
-s | 仅显示名称、线路和时间字段信息。这是 who 默认的输出,即“who”和“who –s”命令是等效的 |
-u | 显示当前每个用户的用户名、登录终端、登录时间、线路活动和进程标识 |
-T 或-w | 显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root用户或所有者可写,“<”表示遇到线路故障 |
在 Linux 下who 通常通过/var/run/utmp 文件来获取信息,如果“[file]”选项指定另一个文件,则 who 命令不再默认读取/var/run/utmp 文件,而是读取指定文件来获取信息。
- 举例
(1) 系统处于什么运行级别。
(2) 显示系统最近启动日期,以及当前每个用户的登录详情,终端状态。
w命令
- 功能说明
用于显示登录到系统的用户信息,其格式如下:
w [选项] [用户]
w 命令的选项及其说明如下表所示。
w 命令的选项及其说明
选 项 | 含 义 |
-h | 不显示输出信息的标题 |
-l | 用长格式输出 |
-s | 用短格式输出,不显示登录时间、JCPU 和 PCPU 时间 |
-V | 显示版本信息 |
[用户]表示当指定用户后,只显示该用户的信息。
- 举例
显示当前用户登录信息。
- 上面第 1 行输出显示了当前的系统时间、系统从启动到现在已经运行的时间、登录到系统中的用户数和系统平均负载。平均负载是指在 1 分种、5 分钟、15 分钟内系统负载状况。
- USER:表示登录系统的用户。
- TTY:表示用户使用的 TTY 名称。
- FROM:表示用户从哪里登录进来,一般显示远程登录主机的 IP 地址或者主机名。
- LOGIN@:用户登录的日期和时间。
- IDLE:表示某个程序上次从终端开始执行到现在所持续的时间。
- JCPU:表示该终端上的所有进程及子进程使用系统的总时间。
- PCPU:当前活动进程使用的系统时间。
- WHAT:当前用户执行的进程名称和选项。
uname 命令
- 功能说明
uname 命令用来显示操作系统相关信息。其格式如下:
uname [选项]
uname 命令的选项及其说明如表所示。
uname 命令的选项及其说明
选 项 | 含 义 |
-a | 显示操作系统全部信息 |
-m | 显示系统 CPU 类型,是 32 位还是 64 位系统 |
-n | 显示操作系统的主机名 |
-s | 显示操作系统类型 |
-r | 显示操作系统内核版本 |
- 举例
(1) 下面显示的是一个 64 位 ubuntu Linux 的操作系统,内核版本为 5.4.0-100-generic,主机名为localhost.localdomain。
(2) 下面显示的是一个 64 位 Linux 的位操作系统,内核版本为 3.10.0-1160.el7.x86_64,主机名为centos7.9。
uptime命令
- 功能说明
uptime 命令用来输出系统任务队列信息,其格式如下:
uptime
uptime 输出当前系统时间、系统开机到现在的运行时间、目前有多少用户在线和系统平均负载等。
- 举例
[root@web1 ~]# uptime
16:03:08 up 4 days, 1:49, 2 users, load average: 0.12, 0.20, 0.17
上面的输出表示现在系统时间是 16:03:08,系统已经运行 4 天零 1 小时 49 分钟,目前有两个用户在线,系统在 1 分钟、5 分钟、15 分钟前到现在的平均负载为 0.12, 0.20, 0.17。
last命令
- 功能说明
列出目前与过去登入系统的用户相关信息。当执行 last 指令时,它会默认读取位于/var/log 目录下名称为 wtmp 的文件,并把该给文件记录的登入系统的用户名单全部显示出来。
last [选项] [-n 显示列数]
last 命令的选项及其说明如表所示。
last 命令的选项及其说明
选 项 | 含 义 |
-a | 把从何处登入系统的主机名称或 IP地址显示在最后一行 |
-R | 不显示登入系统的主机名称或 IP地址 |
-x | 显示系统关机、重新开机以及执行等级的改变等信息 |
-n <显示列数>或-<显示列数> | 设置列出名单的显示列数 |
-d | 将显示的 IP地址转换成主机名称 |
dmesg命令
- 功能说明
显示开机信息。内核会将开机信息存储在系统缓冲区(ring buffer)中,如果开机来不及查看相关信息,可以在开机后利用 dmesg 命令查看,也可以在/var/log/目录中查看 dmesg 文件。其格式如下:
dmesg [选项]
dmesg 命令的选项及其说明如表所示。
dmesg 命令的选项及其说明
选 项 | 含 义 |
-c | 显示开机信息后,清除ringbuffer信息 |
-s | 设置缓冲区大小,默认设置为 8192 |
-n | 设置记录信息的层级 |
free命令
- 功能说明
free 命令用来显示系统内存状态,具体包括系统物理内存、虚拟内存、共享内存和系统缓存。其格式如下:
free [选项] [-s (间隔秒数)]
free 命令的选项及其说明如表所示。
free 命令的选项及其说明
选 项 | 含 义 |
-b | 以 Byte 为单位显示内存使用情况 |
-m | 以 MB 为单位显示内存使用情况 |
-K | 以 kB 为单位显示内存使用情况 |
-t | 显示内存总和列 |
-s(间隔秒数) | 根据指定的间隔秒数持续显示内存使用情况 |
-o | 不显示系统缓冲区列 |
- 举例
列出当前内存的使用状况,以MB 的形式显示,如图所示。
从图中可以看出,系统总的物理内存为 64GB,已经使用了 2467MB,空闲的内存有56538MB。而交换分区 swap 总大小为 32GB,还没有被系统使用。
ps命令
- 功能说明
ps 命令显示系统进程在瞬间的运行动态,其格式如下:
ps [选项]
ps 的选项非常之多,这里我们仅仅列出常用的选项介绍,ps 命令的选项及其说明如表所示。
ps 命令的选项及其说明
选 项 | 含 义 |
a | 显示所有用户的进程,包含每个程序的完整路径 |
-x | 显示所有系统程序,包括那些没有终端的程序 |
-u | 显示使用者的名称和起始时间 |
-f | 详细显示程序执行的路径群 |
-c | 只显示进程的名称,不显示进程的完整路径 |
-e | 将除内核进程以外所有进程的信息写到标准输出 |
- 举例
(1) 要查看目前使用者的进程,使用以下命令,如图所示。
默认 ps 命令输出使用者自己的进程:
- PID 是进程的标识号;
- TTY 是进程所属的终端控制台;
- TIME 列是进程所使用的总的 CPU 时间;
- CMD 列列出正在执行的命令行。
(2) 查看系统所有进程,使用以下命令:
[root@localhost.localdomain ~]# ps -ef
注意:ps 命令是 Linux 系统最基本最常用的,非常强大的进程查看命令,使用该命令可以确定哪些进程在运行,进程占用了多少资源,是否合理,运行状态是否正常,进程是否结束,进程有没有僵死现象,等等,该命令最常用的选项就是 e、f、a、u,相应的选项组合为 ps –ef、ps aux,可以通过这些组合准确定位系统进程运行状态。
top命令
top 命令提供了实时的对系统处理器状态的监控,它能够实时显示系统中各个进程的资源占用状况。该命令可以按照对 CPU 的使用、内存使用和执行时间对系统任务进程进行排序显示,同时top 命令还可以通过交互式命令进行设定显示。
- 功能说明
查看即时活跃的进程,类似于 的任务管理器。其格式如下:
top [选项]
top 的选项很多,这里列出常用的选项及其含义,如表所示。
top 命令的选项及其含义
选 项 | 含 义 |
-d | 指定每两次屏幕信息刷新之间的时间间隔 |
-i | 不显示闲置或者僵死的进程信息 |
-c | 显示进程的整个命令路径,而不是只显示命令名称 |
-s | 使 top 命令在安全模式下运行,此时 top 的交互式指令被取消,避免潜在危险 |
-b | 分屏显示输出信息,结合“-n”选项可以将屏幕信息输出到文档 |
-n | top 输出信息更新的次数,完成后将退出top 命令 |
top 命令除了一些选项,还有很多交互式命令。交互式命令就是在 top 命令执行过程中使用的一些命令,这些命令都是单个字母,从应用来讲,熟悉这些交互式命令至关重要。下表所示就是交互式命令和具体的含义。
交互式命令及其含义
交互命令 | 含 义 |
h 或? | 显示帮助信息,给出交互式命令的一些说明总结 |
k | 终止一个进程,系统将提示用户输入一个需要终止进程的 PID |
i | 忽略闲置进程和僵死进程,这是一个开关式命令 |
s | 改变 top 输出信息两次刷新之间的时间,系统将提示输入新的时间,单位是秒。如果是小数,就换算成毫秒;如果输入 0,系统输出将不断刷新,默认刷新时间是 5 秒。需要注意的是,如果设置太小的时间,可能会引起系统不断刷新,无法看清输 出显示情况,而且系统负载也会加大 |
o 或者 O | 改变 top 输出信息中显示项目的顺序。按小写的“a~z”键可以将相应的列向右移动,而按大写的“A~Z”键可以将相应 的列向左移动。最后按回车键确定 |
f 或者F | 从当前显示列表中添加或者删除项目。按“f”键之后会显示列的列表,按“a~z”键即可显示或隐藏对应的列。最后按回车键确定 |
m | 切换显示内存信息 |
t | 切换显示进程和 CPU 状态信息 |
r | 重新设置一个进程的优先级,系统提示用户输入需要改变的进程 PID 以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是 10 |
l | 切换显示平均负载和启动时间信息 |
q | 退出 top 显示 |
c | 切换显示完整命令行和命令名称信息 |
M | 根据驻留内存大小进行排序输出 |
P | 根据 CPU 使用百分比大小进行排序输出 |
T | 根据时间/累计时间进行排序输出 |
S | 切换到累计模式 |
W | 将当前 top 设置写入~/.toprc 文件中 |
- 举例
查看当前系统活动的进程,具体的命令和结果如图所示。
从图中可以看到,top 的输出可以分为统计信息区和进程信息区两个部分,即前 5 行显示为统计信息区,下面为进程信息区,我们分别进行介绍。
(1) 统计信息区
第 1 行为任务队列信息,含义如下。
- 13:29:02:表示当前系统时间。
- up 3 days,23:15:表示系统已经启动 3 天零 23 小时 15 分钟了。
- 2 users:当前登录系统的用户数。
- load average: 0.47, 0.20, 0.10:表示系统平均负载,3 个数值分别表示 1 分钟、5 分钟、 15 分钟前到现在的系统平均负载值。
第 2 行和第 3 行分别为进程和 CPU 信息,具体含义如下。
- Tasks: 122 total:进程的总数。
- 1 running:正在运行的进程数。
- 121 sleeping:处于休眠的进程数。
- 0 stopped:停止的进程数。
- 0 zombie:僵死的进程数。
- Cpu(s): 0.3% us:表示用户进程占用 CPU 的百分比。
- 0.1% sy:系统进程占用 CPU 的百分比。
- 0.0% ni:用户进程空间内改变过优先级的进程占用 CPU 百分比。
- 99.3% id:空闲 CPU 占用的百分比。
- 0.2% wa:等待输入输出的进程占用 CPU 的百分比。最后两行输出的是内存信息,具体含义如下。
- Mem: 4059952k total:系统的物理内存大小。
- 4009540k used:已经使用的物理内存大小。
- 50412k free:目前空余内存大小。
- 468964k buffers:用作内核缓冲区的内存大小。
- Swap: 8193108k total:交换分区内存大小。
- 0k used:已经使用的交换分区大小。
- 8193108k free:空闲的交换分区大小。
- 2320396k cached:高速缓存。
(2) 进程信息区
进程信息区显示了每个进程的运行状态,我们先来看一下每列输出的含义。
- PID:进程的 id。
- USER:进程所有者的用户名。
- PR:进程优先级。
- NI:nice 值。负值表示高优先级,正值表示低优先级。
- VIRT:进程使用的虚拟内存总量,单位 kB。VIRT=SWAP+RES。
- RES:进程使用的、未被换出的物理内存大小,单位 kB。RES=CODE+DATA。
- SHR:共享内存大小,单位kB。
- S:进程状态,D 表示不可中断的睡眠状态,R 表示运行状态,S 表示睡眠状态,T 表示跟踪/停止,Z 表示僵死进程。
- %CPU:上次更新到现在的 CPU 时间占用百分比。
- %MEM:进程占用的物理内存百分比。
- TIME+:进程使用的 CPU 时间总计,单位为 1/100 秒。
- COMMAND:正在运行进程的命令名或者命令路径。