1.帮助命令
1.1 man获得帮助信息
可通过man
获取某个指令的说明,比如输入man ls
后就会出现
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
--author
with -l, print the author of each file
-b, --escape
print C-style escapes for nongraphic characters
--block-size=SIZE
scale sizes by SIZE before printing them; e.g., '--block-size=M' prints sizes in units of 1,048,576 bytes; see SIZE format below
-B, --ignore-backups
do not list implied entries ending with ~
-c with -lt: sort by, and show, ctime (time of last modification of file status information); with -l: show ctime and sort by name; otherwise:
sort by ctime, newest first
-C list entries by columns
--color[=WHEN]
colorize the output; WHEN can be 'never', 'auto', or 'always' (the default); more info below
-d, --directory
list directories themselves, not their contents
-D, --dired
虽然全都是英文的,但总比没有好。
1.2 help获得内置命令的帮助信息
使用方法和man
类似,比如help cd
cd: cd [-L|[-P [-e]]] [dir]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the
HOME shell variable.
The variable CDPATH defines the search path for the directory containing
DIR. Alternative directory names in CDPATH are separated by a colon (:).
A null directory name is the same as the current directory. If DIR begins
with a slash (/), then CDPATH is not used.
If the directory is not found, and the shell option `cdable_vars` is set,
the word is assumed to be a variable name. If that variable has a value,
its value is used for DIR.
Options:
-L force symbolic links to be followed
-P use the physical directory structure without following symbolic
links
-e if the -P option is supplied, and the current working directory
cannot be determined successfully, exit with a non-zero status
The default is to follow symbolic links, as if `-L' were specified.
Exit Status:
Returns 0 if the directory is changed, and if $PWD is set successfully when
-P is used; non-zero otherwise.
可以通过type
命令来判断一个shell命令是否是内置命令,比如type cd
,就会得到
cd is a shell builtin
而type ls
,就会得到
ls is aliased to `ls --color=auto'
就可以看出来cd
是内置命令,应该用help
来获取帮助信息,ls
不是内置命令,应该用man
来获取帮助信息。
1.3 常用快捷键
常用快捷键 | 作用 |
---|---|
ctrl + c | 停止进程 |
ctrl + l | 清屏,和clear相同,彻底清屏是reset |
tab | 自动补全 |
小键盘的上下键 | 查找执行过的命令 |
2.文件目录类
2.1 pwd显示当前工作目录的绝对路径
pwd
展示当前目录的绝对路径,从根目录/
开始展示
pwd - print name of current/working directory
2.2 cd 切换目录
cd
用来进行目录切换
cd - Change the shell working directory
参数 | 作用 |
---|---|
cd 绝对路径 | 切换路径 |
cd 相对路径 | 切换路径 |
cd ~或者 cd | 回到当前用户家目录,root用户会返回根目录下的root文件夹,其他用户会返回根目录下home文件夹下以用户名创建的文件夹 |
cd - | 回到上一次所在目录 |
cd … | 回到当前目录的上一级目录 |
cd -P | 跳转到实际物理路径,而非快捷方式路径 |
绝对路径指的是从根目录开始,到当前位置的路径
相对路径指的是从当前目录开始,到当前位置的路径
2.3 ls列出目录的内容
ls
列出目录的内容
ls - list directory contents
参数 | 作用 |
---|---|
ls -a | 全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用) |
ls -l | 长数据串列出,包含文件的属性与权限等等数据;(常用)等价于“ll” |
执行ls -l
后,会依次展示:
文件类型与权限、链接数、文件属主、文件属组文件大小(用byte来表示)、建立或最近修改的时间、名字
drwxr-xr-x. 120 root root 12288 Aug 7 18:01 etc
-rw-r--r-- 1 root root 8352 Jan 14 2022 gnome_install.sh
lrwxrwxrwx. 1 root root 7 Sep 14 2020 bin -> usr/bin
其中,第一位是-
,则表示普通文件,d
表示是目录,也就是文件夹,l
则表示是链接
2.4 mkdir 创建一个新的目录
mkdir:Make directory 建立目录
参数 | 作用 |
---|---|
mkdir a b | 同时创建a、b两个目录 |
mkdir -p a/b/c | 创建多层目录 |
2.5 rmdir 删除一个空的目录
rmdir:Remove directory 移除目录
只能删除空文件夹
参数 | 作用 |
---|---|
rmdir a | 删除a目录 |
rmdir -p a/b/c | 删除多层目录 |
2.6 touch 创建空文件
touch - change file timestamps
touch 文件名称
就可以在当前目录下创建一个新文件
2.7 cp 复制文件或目录
cp - copy files and directories
cp 源文件 结果文件
就可以将源文件复制成结果文件,也可以在文件名称前加上路径
参数 | 作用 |
---|---|
cp -r | 递归复制整个文件夹 |
\cp | 强制覆盖目标文件 |
2.8 rm 删除文件或目录
rm - remove files or directories
rm
后跟想要删除的文件名即可
参数 | 作用 |
---|---|
rm -r | 递归删除目录中所有内容 |
rm -f | 强制执行删除操作,而不提示用于进行确认 |
rm -v | 显示指令的详细执行过程 |
rm ./* | 删除当前目录下的所有内容 |
rm -rf /* | 删库跑路,此命令很危险,绝对不可以使用,要想用,就自己建一个虚拟机去玩吧 |
2.9 mv 移动文件与目录或重命名
mv - move (rename) files
mv 当前文件名称 新文件名称
可以实现重命名的功能
mv 当前路径/文件名称 目标路径
可以实现移动文件的功能
2.10 cat 查看文件内容
cat - concatenate files and print on the standard output
参数 | 作用 |
---|---|
-n | 显示所有行的行号,包括空行 |
2.11 more 文件内容分屏查看器
more - file perusal filter for crt viewing
参数 | 作用 |
---|---|
空白键 (space) | 代表向下翻一页 |
Enter | 代表向下翻『一行』 |
q | 代表立刻离开 more ,不再显示该文件内容 |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
2.12 less 分屏显示文件内容
less - opposite of more
参数 | 作用 |
---|---|
空白键 (space) | 向下翻动一页 |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页 |
/字符串 | 向下搜寻『字符串』的功能;n:向下查找;N:向上查找 |
?字符串 | 向上搜寻『字符串』的功能;n:向上查找;N:向下查找 |
q | 离开 less 这个程序 |
2.13 echo
echo - display a line of text
echo
可以直接输出文本到控制台,比如echo "abc"
会得到
abc
参数 | 作用 |
---|---|
\ | 输出\本身 |
\n | 换行符 |
\t | 制表符,也就是 Tab 键 |
-e
支持反斜线控制的字符转换,比如直接执行echo "a\nbc"
会得到
a\nbc
执行echo -e "a\nbc"
则会得到
a
bc
echo $
可以查看环境变量,此处输入完成后,需要连按两下Tab键才会出现环境变量
2.14 > 输出重定向和 >> 追加
参数 | 作用 |
---|---|
ls -l > 文件 | 列表的内容写入文件中(覆盖写)) |
ls -al >> 文件 | 列表的内容追加到文件的末尾 |
cat 文件 1 > 文件 2 | 将文件 1 的内容覆盖到文件2 |
echo “内容” >> 文件 | 将指定内容追加到目标文件末尾 |
2.15 head 显示文件头部内容
head - output the first part of files
参数 | 作用 |
---|---|
-n<行数> | 指定显示头部内容的行数 |
2.16 tail 输出文件尾部内容
tail - output the last part of files
参数 | 作用 |
---|---|
-n<行数> | 输出文件尾部 n 行内容 |
-f | 显示文件最新追加的内容,监视文件变化 |
2.17 ln 软链接
ln - make links between files
ln -s [原文件或目录] [软链接名]
此命令可以给原文件创建一个软链接
ln [原文件或目录] [软链接名]
用来创建硬链接,一般用软链接即可,硬链接是指向文件的节点ID
删除软链接时,是rm -rf 软链接名
,而不是 rm -rf 软链接名/
,因为后者会把软链接对应的真实目录下内容删掉
可以通过ll
命令查看文件格式,如果第一位是l
则属于软链接
2.18 history 查看已经执行过历史命令
直接输入history
可以获取历史使用的指令,可以配合head
和tail
分别查看最初或最近使用的命令
history | head -n 10 #查看最初执行的10条命令
参数 | 作用 |
---|---|
history -c | 清空所有历史执行命令 |
3. 时间日期类
3.1 date 显示当前时间
date - print or set the system date and time
直接输入date
后,可以得到当前时间Thu Aug 11 19:50:12 CST 2022
参数 | 作用 |
---|---|
date +%Y | 显示当前年份 |
date +%m | 显示当前月份 |
date +%d | 显示当前是哪一天 |
date “+%Y-%m-%d %H:%M:%S” | 显示年月日时分秒 |
3.2 date 显示非当前时间
参数 | 作用 |
---|---|
date -d ‘1 days ago’ | 显示前一天时间 |
date -d '-1 days ago | 显示明天时间 |
3.3 cal 查看日历
cal - display a calendar
参数 | 作用 |
---|---|
cal 2022 | 展示2022年日历 |
cal -3 | 展示最近三个月的日历 |
4. 文件权限类
4.1 文件属性
直接输入ll
,可以在第一列看到每个文件的权限属性
drwxr-xr-x. 120 root root 12288 Aug 7 18:01 etc
-rw-r--r-- 1 root root 8352 Jan 14 2022 gnome_install.sh
lrwxrwxrwx. 1 root root 7 Sep 14 2020 bin -> usr/bin
第0位是文件类型,d
为文件夹,l
为软链接
第1、2、3位,4、5、6位,7、8、9位均是权限类型,一共三种情况r/w/x
,分别表示可读可写可执行
,如果没有对应的权限,就显示为-
4.2 chmod 改变权限
chmod - change file mode bits
第一种方式变更权限chmod [{ugoa}{+-=}{rwx}] 文件或目录
,比如
chmod u+x 文件或目录 #给属主增加执行权限
其中每个字母表示的含义:
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)
第二种方式变更权限chmod [mode=421 ] [文件或目录]
通过对三种权限赋值的方法,用数字表示权限
r=4 w=2 x=1
三个权限都有,那数字就是 rwx=4+2+1=7,比如
chmod 777 文件 #把指定文件给所有人赋可读可写可执行权限
chmod -R 777 文件夹/ #把指定路径下所有文件给所有人赋可读可写可执行权限
4.3 chown 改变所有者
chown - change file owner and group
chown [选项] [最终用户] [文件或目录
通过此命令改变文件的所有者
4.4 chgrp 改变所属组
chgrp - change group ownership
chgrp [最终用户组] [文件或目录]
通过此命令改变文件的所属组
5. 搜索查找类
5.1 find 查找文件或者目录
find - search for files in a directory hierarchy
find
指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端find [搜索范围] [选项]
参数 | 作用 |
---|---|
-name<查询方式> | 按照指定的文件名查找模式查找文件 |
-user<用户名> | 查找属于指定用户名所有文件 |
-size<文件大小> | 按照指定的文件大小查找文件 |
5.2 locate 快速定位文件路径
由于locate
指令基于数据库进行查询,所以第一次运行前,必须使用updatedb
指令创建locate
数据库。
locate - find files by name
直接locate 目标文件
就可以查找目标文件
5.3 grep 过滤查找及“|”管道符
grep, egrep, fgrep - print lines matching a pattern
通过grep 选项 查找内容 源文件
就可以在文件内查找指定内容
参数 | 作用 |
---|---|
-n | 显示匹配行及行号 |
管道符|
表示将前一个命令的处理结果输出传递给后面的命令处理
6. 压缩和解压类
6.1 gzip/gunzip 压缩
gzip, gunzip, zcat - compress or expand files
通过gzip 文件
和gunzip 文件.gz
就可以对文件进行压缩和解压缩操作,但有3个问题,
只能压缩文件不能压缩目录;不保留原来的文件;同时多个文件会产生多个压缩包
6.2 zip/unzip 压缩
zip - package and compress (archive) files
通过zip [选项] XXX.zip 将要压缩的内容
和unzip [选项] XXX.zip
就可以对文件和文件夹进行压缩和解压缩操作
zip参数 | 作用 |
---|---|
-r | 压缩目录 |
unzip参数 | 作用 |
---|---|
-d<目录> | 指定解压后文件的存放目录 |
6.3 tar 打包
tar - manual page for tar 1.26
通过tar [选项] XXX.tar.gz 将要打包进去的内容
就可以打包目录,压缩后的文件格式为.tar.gz
参数 | 作用 |
---|---|
-c | 产生.tar 打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包.tar 文件 |
-C | 解压到指定目录 |
7. 磁盘查看和分区类
7.1 du 查看文件和目录占用的磁盘空间
du - estimate file space usage
du: disk usage 磁盘占用情况
通过du 目录/文件
就可以显示目录下每个子目录的磁盘使用情况
参数 | 作用 |
---|---|
-h | 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示 |
-a | 不仅查看子目录大小,还要包括文件 |
-c | 显示所有的文件和子目录大小后,显示总和 |
-s | 只显示总和 |
–max-depth=n | 指定统计子目录的深度为第 n 层 |
7.2 df 查看磁盘空间使用情况
df - report file system disk space usage
df: disk free 空余磁盘
通过df 选项
就可以列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况
参数 | 作用 |
---|---|
-h | 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示 |
7.3 lsblk 查看设备挂载情况
lsblk - list block devices
通过lsblk
就可以查看设备挂载情况
参数 | 作用 |
---|---|
-f | 查看详细的设备挂载情况,显示文件系统信息 |
7.4 mount/umount 挂载/卸载
mount - mount a filesystem
umount - unmount file systems
通过mount [-t vfstype] [-o options] device dir
和mount [-t vfstype] [-o options] device dir
就可以挂载设备和卸载设备
参数 | 作用 |
---|---|
-t vfstype | 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型 |
-o options | 主要用来描述设备或档案的挂接方式 |
device | 要挂接(mount)的设备 |
dir | 设备在系统上的挂接点(mount point) |
7.5 fdisk 分区
fdisk - manipulate disk partition table
通过fdisk -l
和fdisk 硬盘设备名
就可以查看磁盘分区详情和对新增硬盘进行分区操作
参数 | 作用 |
---|---|
-l | 显示所有硬盘的分区列表 |
8. 进程管理类
8.1 ps 查看当前系统进程状态
ps - report a snapshot of the current processes
通过ps aux | grep xxx
和ps -ef | grep xxx
就可以查看系统中所有进程和查看子父进程之间的关系
参数 | 作用 |
---|---|
a | 列出带有终端的所有用户的进程 |
x | 列出当前用户的所有进程,包括没有终端的进程 |
u | 面向用户友好的显示风格 |
-e | 列出所有进程 |
-u | 列出某个用户关联的所有进程 |
-f | 显示完整格式的进程列表 |
ps aux
显示信息说明
字段 | 含义 |
---|---|
USER | 该进程是由哪个用户产生的 |
PID | 进程的 ID 号 |
%CPU | 该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源 |
%MEM | 该进程占用物理内存的百分比,占用越高,进程越耗费资源 |
VSZ | 该进程占用虚拟内存的大小,单位 KB |
RSS | 该进程占用实际物理内存的大小,单位 KB |
TTY | 该进程是在哪个终端中运行的 |
STAT | 进程状态。常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示 |
START | 该进程的启动时间 |
TIME | 该进程占用 CPU 的运算时间,注意不是系统时间 |
COMMAND | 产生此进程的命令名 |
ps -ef
显示信息说明
字段 | 含义 |
---|---|
UID | 用户 ID |
PID | 进程 ID |
PPID | 父进程 ID |
C | CPU 用于计算执行优先级的因子。数值越大,表明进程是CPU 密集型运算,执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高 |
STIME | 进程启动的时间 |
TTY | 完整的终端名称 |
TIME | CPU 时间 |
CMD | 启动进程所用的命令和参数 |
8.2 kill 终止进程
kill - terminate a process
通过kill [选项] 进程号
和killall 进程名称
就可以通过进程号杀死进程和通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
字段 | 含义 |
---|---|
-9 | 表示强迫进程立即停止 |
8.3 pstree 查看进程树
pstree - display a tree of processes
参数 | 含义 |
---|---|
-p | 显示进程的 PID |
-u | 显示进程的所属用户 |
8.4 top 实时监控系统进程状态
top - display Linux processes
参数 | 含义 |
---|---|
-d 秒数 | 指定 top 命令每隔几秒更新。默认是 3 秒在 top 命令的交互模式当中可以执行的命令 |
-i | 使 top 不显示任何闲置或者僵死进程 |
-p | 通过指定监控进程 ID 来仅仅监控某个进程的状态 |
进入top
后,可以通过指令改变排序方式
操作 | 含义 |
---|---|
P | 以 CPU 使用率排序,默认就是此项 |
M | 以内存的使用率排序 |
N | 以 PID 排序 |
q | 退出 top |
可以在top
界面直接输入u
,再输入用户名,就可以获取指定用户下的进程
也可以直接输入k
,再输入指定进程,就可以杀掉指定进程
查询结果字段解释
第一行信息为任务队列信息
内容 | 含义 |
---|---|
21:32:02 | 系统当前时间 |
up 197 days, 46 min | 系统的运行时间 |
1 user | 当前登录了1个用户 |
load average: 0.01, 0.65, 0.91 | 系统在之前 1 分钟,5 分钟,15 分钟的平均负载。一般认为小于 1 时,负载较小。如果大于1,系统已经超出负荷 |
第二行为进程信息
内容 | 含义 |
---|---|
Tasks: 124 total | 系统中的进程总数 |
1 running | 正在运行的进程数 |
123 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 | 空闲的物理内存数量 |
65800k buffers | 作为缓冲的内存数量 |
第五行为交换分区(swap)信息
内容 | 含义 |
---|---|
Swap: 524280k total | 交换分区(虚拟内存)的总大小 |
0k used | 已经使用的交互分区的大小 |
524280k free | 空闲交换分区的大小 |
409280k cached | 作为缓存的交互分区的大小 |
8.5 netstat 显示网络状态和端口占用信息
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
通过netstat -anp | grep 进程号
和netstat –nlp | grep 端口号
就可以查看该进程网络信息和查看网络端口号占用情况
参数 | 含义 |
---|---|
-a | 显示所有正在监听(listen)和未监听的套接字(socket) |
-n | 拒绝显示别名,能显示数字的全部转化成数字 |
-l | 仅列出在监听的服务状态 |
-p | 表示显示哪个进程在调用 |
常用的端口号
进程名 | 端口 |
---|---|
ssh | 22 |
mysql | 3306 |
9. crontab 系统定时任务
9.1 crontab 服务管理
crontab - maintains crontab files for individual users
参数 | 含义 |
---|---|
-e | 编辑 crontab 定时任务 |
-l | 查询 crontab 任务 |
-r | 删除当前用户所有的 crontab 任务 |
crontab
编辑界面字段解释
参数 | 含义 |
---|---|
第一个“*” | 一小时当中的第几分钟 |
第二个“*” | 一天当中的第几小时 |
第三个“*” | 一个月当中的第几天 |
第四个“*” | 一年当中的第几月 |
第五个“*” | 一周当中的星期几 |
特殊符号
参数 | 含义 |
---|---|
* | 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思 |
, | 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的 8 点 0 分,12 点 0 分,16 点0 分都执行一次命令 |
- | 代表连续的时间范围。比如“0 5 * * 1-6 命令”,代表在周一到周六的凌晨 5 点 0 分执行命令 |
*/n | 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔 10 分钟就执行一遍命令 |
特定时间执行命令
参数 | 含义 |
---|---|
45 22 * * * 命令 | 每天 22 点 45 分执行命令 |
0 17 * * 1 命令 | 每周 1 的 17 点 0 分执行命令 |
0 5 1,15 * * 命令 | 每月 1 号和 15 号的凌晨 5 点 0 分执行命令 |
40 4 * * 1-5 命令 | 每周一到周五的凌晨 4 点 40 分执行命令 |
*/10 4 * * * 命令 | 每天的凌晨 4 点,每隔 10 分钟执行一次命令 |
0 0 1,15 * 1 命令 | 每月 1 号和 15 号,每周 1 的 0 点 0 分都会执行命令 |