【学习笔记】Linux命令
服务
以下均以api.service
服务为例演示,在对服务进行操作时,结尾的.service
可以省略。
启停、重载、状态
作用 | 命令 |
---|---|
启动服务 | systemctl start api.service |
停止服务 | systemctl stop api.service |
重启服务 | systemctl restart api.service |
重新加载配置文件 | systemctl reload api.service |
查看服务状态 | systemctl status api.service |
自启动
作用 | 命令 |
---|---|
开机自启动 | systemctl enable api.service |
开机不自启动 | systemctl disable api.service |
查看是否开机自启动 | systemctl is-enabled api.service |
查看各个级别服务的自启情况 | systemctl list-unit-files --type=service |
常用系统工作命令
Linux命令格式为命令名称 [命令参数] [命令对象]
命令对象一般指要处理的文件、目录、用户等资源;命令参数可以用长格式(完整的选项名称),也可以用短格式(单个字母的缩写),两者分别用–与-作为前缀,段格式与短格式之间可以进行合并,合并后仅保留一个-(减号)即可。
echo命令
用于输出字符串或变量提取后的值到终端。格式为echo [字符串|$变量名]

date命令
显示或设置系统时间。格式为date [选项] [+指定的格式]
选项
- -s, –set=STRING:根据字符串设置系统时间。
- -d, –date=STRING:通过字符串显示时间格式。
指定的格式如下:
1 | %% 输出字符 % |

示例
+指定格式
1 | root@wq3stone:~# date |
当您不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date ‘+%-H:%-M:%-S’ 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。
-d参数
1 | root@wq3stone:~# date +%Y%m%d # 显示年月日 |
-s参数
1 | date -s # 设置当前时间,只有root权限才能设置,其他只能查看 |
只有取得权限者(比如说 root)才能设定系统时间。当您以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续保持最新的正确值。
reboot命令
重启系统,默认只有root用户有此权限
poweroff命令
关闭系统,默认只有root用户有此权限
wget命令
用于在终端中下载网络文件,格式为wget [参数选项] 下载地址
下载控制选项
选项 | 说明 | 示例 |
---|---|---|
-O <文件名> |
指定保存文件名 | wget -O myfile.zip https://example.com/file.zip |
-P <目录> |
指定下载目录 | wget -P ~/downloads https://example.com/file.zip |
-c |
断点续传 | wget -c https://example.com/bigfile.iso |
-b |
后台下载 | wget -b https://example.com/largefile.mp4 |
连接设置选项
选项 | 说明 | 示例 |
---|---|---|
--limit-rate=<速度> |
限速下载 | wget --limit-rate=200k https://example.com/file.iso |
-t <次数> |
设置重试次数 | wget -t 5 https://example.com/unstable.file |
--timeout=<秒> |
设置超时时间 | wget --timeout=30 https://example.com/slow.file |
递归下载选项
选项 | 说明 | 示例 |
---|---|---|
-r |
递归下载 | wget -r https://example.com/directory/ |
-l <深度> |
设置递归深度 | wget -r -l 2 https://example.com/ |
-np |
不追溯至父目录 | wget -r -np https://example.com/path/ |
实用示例与应用场景
示例 1:下载单个文件并重命名
wget -O linux_distro.iso https://example.com/ubuntu-22.04.iso
说明:
- 从指定 URL 下载 Ubuntu 22.04 镜像
- 使用
-O
选项将文件保存为自定义名称linux_distro.iso
示例 2:限速下载大文件
wget --limit-rate=500k -c https://example.com/large_video.mp4
说明:
--limit-rate=500k
将下载速度限制在 500KB/s-c
支持断点续传,网络中断后可继续下载
示例 3:递归下载整个网站
wget -r -l 5 --convert-links --wait=2 https://example-site.com
说明:
-r
启用递归下载-l 5
设置最大递归深度为 5 层--convert-links
转换链接适合本地浏览--wait=2
每次下载间隔 2 秒,减轻服务器负担
高级技巧与注意事项
1. 批量下载文件
创建一个包含多个 URL 的文本文件 urls.txt
,然后使用:
wget -i urls.txt
2. 下载 FTP 资源
wget ftp://username:password@ftp.example.com/file.zip
注意:密码会显示在命令历史中,建议使用
--ftp-user
和 --ftp-password
选项分开设置。
3. 常见问题解决
问题 1:证书错误
wget --no-check-certificate https://example.com
问题 2:下载被拒绝(403 Forbidden)
wget --user-agent="Mozilla/5.0" https://example.com
ps命令
ps命令用于查看进程状态。格式为ps [参数]
参数
- a:显示所有进程(包括其他用户的进程)
- u:用户以及其他详细信息
- x:显示没有控制终端的进程
输出各字段的含义如下:
- USER: 进程的拥有者
- PID: 进程的 ID
- %CPU: 占用的 CPU 使用率
- %MEM: 占用的内存使用率
- VSZ: 占用的虚拟内存大小
- RSS: 占用的物理内存大小
- TTY: 终端的次要设备号
- STAT: 进程的状态(如 R 表示运行,S 表示睡眠,Z 表示僵尸进程等)
- START: 进程的启动时间
- TIME: 进程的累计 CPU 时间
- COMMAND: 启动进程的命令
常用示例
1 | ps -ef | grep node |
显示包含node的详细信息
top命令
动态监视进程活动与系统负载等信息,相当于任务管理器。
参数
-d <秒数>
:指定 top 命令的刷新时间间隔,单位为秒。-n <次数>
:指定 top 命令运行的次数后自动退出。-p <进程ID>
:仅显示指定进程ID的信息。-u <用户名>
:仅显示指定用户名的进程信息。

系统整体的统计信息
第一行
1 | top - 13:46:29 up 3 days, 30 min, 2 users, load average: 0.00, 0.00, 0.00 |
第二行
1 | Tasks: 110 total, 1 running, 107 sleeping, 2 stopped, 0 zombie |
第三行
1 | Cpu(s): 0.0 us, 3.2 sy, 0.0 ni, 96.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st |
第四行
1 | MiB Mem : 1872.6 total, 341.1 free, 638.1 used, 893.5 buff/cache |
第五行
1 | MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1075.4 avail Mem |
进程信息
1 | PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND |
在此页面还可以输入以下按键执行相应的功能(注意大小写区分的)
参数 | 含义 |
---|---|
? | 显示在top当中可以输入的命令 |
P | 以CPU的使用资源排序显示 |
M | 以内存的使用资源排序显示 |
N | 以pid排序显示 |
T | 由进程使用的时间累计排序显示 |
k | 给某一个pid一个信号,可以用来杀死进程(9) |
r | 给某个pid重新定制一个nice值(即优先级) |
q | 退出top(用Ctrl+C也可以退出top) |
pidof命令
查询某个指定服务进程的PID值,格式为pidof [参数] [服务名称]

kill命令
kill
命令可以发送不同的信号给目标进程,来实现不同的操作,如果不指定信号,默认会发送
TERM 信号(15),即终止。若仍无法终止该程序,可使用
SIGKILL(9)
信息尝试强制删除程序。
语法
1 | kill [options] <PID> |
<PID>
是要终止进程的进程 ID。
最常用的信号是:
SIGKILL
(信号9):立即结束进程,不能被捕获或忽略。SIGTERM
(信号15):正常结束进程,可以被捕获或忽略。SIGSTOP
(信号19):暂停进程,不能被捕获、忽略或结束。SIGCONT
(信号18):继续执行被暂停的进程。SIGINT
(信号2):通常是Ctrl+C产生的信号,可以被进程捕获或忽略。
killall命令
killall命令用于终止某个指定名称的服务对应的全部进程,格式为killall [参数] [进程名称]
常用选项
- -e | –exact:进程名需要完全匹配
- -I | –ignore-case:忽略大小写
- -g | –process-group:终止进程组
- -i | –interactive:终止前询问用户确认
- -l | –list:列出所有信号名称
- -q | –quiet:进程未结束时不输出任何信息
- -r | –regexp:将进程名解释为正则表达式
- -s | –signal:发送指定信号
- -u | –user:终止指定用户的进程
- -v | –verbose:显示详细执行过程
- -w | –wait:等待所有进程结束
- -V | –version:显示版本信息
- –help:显示帮助信息
系统状态检测命令
ifconfig命令
ifconfig用于获取网卡配置与网络状态等信息,格式为ifconfig [网络设备] [参数]

uname命令
uname命令用于查看系统内核与系统版本等信息,格式为uname [-a]
uptime命令
与top命令的第一行数据一样
free命令
free命令用于显示当前系统中内存的使用量
输出信息
- total:总物理内存
- used:已经使用的物理内存
- free:没有使用过的物理内存
- shared:多进程共享内存
- buff/cache:读写缓存内存,这部分内存是当空闲来用的,当free内存不足时,linux内核会将此内存释放
- available:还可以被应用程序使用的物理内存
who命令
查看当前登入主机的用户终端信息

last命令
查看所有系统的登录信息
history命令
查看历史执行过的命令,可以使用!编码数字
来重复执行某一次的命令,若使用-c
参数,会清除所有的历史命令记录。
默认保存近1000条命令,可以修改/etc/profile
中的HISTSIZE
变量值修改保存命令数
历史命令被存储在用户家目录中的.bash_history
文件中,可以使用cat ~/.bash_history
查看
工作目录切换命令
pwd命令
显示当前所处的工作目录
cd命令
切换工作路径,格式为cd [目录名称]
除此以外,cd命令还有以下用法
cd ..
进入上级目录cd ~
切换到当前用户的家目录cd ~username
切换到其他用户的家目录cd -
切换到上次所处的目录cd /
切换到根目录
ls命令
显示目录中的文件信息,默认是当前目录。
参数
-a
或--all
:显示全部文件(包含隐藏文件)-l
:显示当前目录下文件的详细信息-d
:查看目录属性信息-R
或--recursive
:递归显示当前目录中的所有文件和子目录
文本文件编辑命令
cat命令
查看内容较少的纯文本文件,格式为cat [选项] [文件]
可以使用-n
参数显示行号

- 显示文件内容:
cat filename
会将指定文件的内容输出到终端上。 - 连接文件:
cat file1 file2 > combined_file
可以将 file1 和 file2 的内容连接起来,并将结果输出到 combined_file 中。 - 创建文件:可以使用
cat
命令来创建文件,例如cat > filename
,然后你可以输入文本,按 Ctrl+D 来保存并退出。 - 在终端显示文件:可以将
cat
与管道(|
)结合使用,用来显示其他命令的输出,例如ls -l | cat
会将ls -l
的输出通过cat
打印到终端上。
实例
查看文件内容:显示文件 filename 的内容。
1 | cat filename |
创建文件:将标准输入重定向到文件 filename,覆盖该文件的内容。
1 | cat > filename |
追加内容到文件:将标准输入追加到文件 filename 的末尾。
1 | cat >> filename |
连接文件:将 file1 和 file2 的内容合并到 file3 中。
1 | cat file1 file2 > file3 |
显示多个文件的内容:同时显示 file1 和 file2 的内容。
1 | cat file1 file2 |
使用管道:将 cat 命令的输出作为另一个命令的输入。
1 | cat filename | command |
查看文件的最后几行:显示文件 filename 的最后 10 行。
1 | cat filename | tail -n 10 |
使用 -n 选项显示行号:显示文件 filename 的内容,并在每行的前面加上行号。
1 | cat -n filename |
使用 -b 选项仅显示非空行的行号:
1 | cat -b filename |
使用 -s 选项合并空行:显示文件 filename 的内容,并合并连续的空行。
1 | cat -s filename |
使用 -t 选项显示制表符:显示文件 filename 的内容,并用 ^I 表示制表符。
1 | cat -t filename |
使用 -e 选项显示行结束符:显示文件 filename 的内容,并用 $ 表示行结束。
1 | cat -e filename |
把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:
1 | cat -n textfile1 > textfile2 |
把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:
1 | cat -b textfile1 textfile2 >> textfile3 |
清空 /etc/test.txt 文档内容:
1 | cat /dev/null > /etc/test.txt |
more命令
more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。
参数:
- -num 一次显示的行数
- +num 从第 num 行开始显示

常用操作命令
- Enter 向下n行,需要定义。默认为1行
- Ctrl+F 向下滚动一屏
- 空格键 向下滚动一屏
- Ctrl+B 返回上一屏
- = 输出当前行的行号
:f
输出文件名和当前行的行号- V 调用vi编辑器
- !命令 调用Shell,并执行命令
- q 退出more
head命令
head 命令可用于查看文件的开头部分的内容。
参数
-n
:行数,默认为10-c
:字节数
tail命令
tail 命令可用于查看文件结尾部分的内容。
参数
-f
:循环读取,把最尾部的内容显示在屏幕上,并且不断刷新,只要文件更新就可以看到最新的文件内容。-n
:显示文件的尾部的行数-c
:显示文件的尾部的字节数
显示文件 notes.log 的内容,从第 20 行至文件末尾:
1 | tail -n +20 notes.log |
tr命令
wc命令
统计文件的行数、单词数、字节数,若不指定文件名称、或是所给予的文件名为”-“,则wc指令会从标准输入设备读取数据。
参数:
- -c或–bytes或–chars 只显示Bytes数。
- -l或–lines 显示行数。
- -w或–words 只显示字数。
stat命令
显示inode内容(文件状态信息)
1 | root@wq3stone:/home/project/nav# stat test |
cut命令
按列提取文本
diff命令
比较文件的差异
文件目录管理命令
touch命令
参数说明:
-a
:改变档案的读取时间记录。-m
:改变档案的修改时间记录。-d
:设定时间与日期,可以使用各种不同的格式。
mkdir命令
创建目录,格式为mkdir [-p] dirName
参数说明:
- -p 确保目录名称存在,不存在的就建一个。
在工作目录下的test1
目录中,建立一个名为test2
的子目录。若
test1
目录原本不存在,则新建一个。(注:本例若不加-p
参数,且原本test1
目录不存在,则产生错误。)
1 | mkdir -p test1/test2 |
cp命令
将文件或目录从一个位置复制到另一个位置,同时可以选择保留原文件的属性(如权限、时间戳等)。格式为cp [options] source dest
命令参数
-r
或-R
:递归复制目录及其内容(用于复制目录)。-i
:交互模式,覆盖前提示用户确认。-f
:强制复制,覆盖目标文件而不提示。-v
:显示详细的复制过程(verbose)。-p
:保留文件的原始属性(如权限、时间戳等)。-a
:归档模式,等同于-dpR
,保留所有文件属性和递归复制目录。-u
:仅当源文件比目标文件新时才复制(更新模式)。-l
:创建硬链接而不是复制文件。-s
:创建符号链接(软链接)而不是复制文件。
mv命令
为文件或目录改名、或将文件或目录移入其它位置。
参数说明:
- -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
- -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
- -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
- -n: 不要覆盖任何已存在的文件或目录。
- -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
命令格式 | 运行结果 |
---|---|
mv source_file(文件) dest_file(文件) |
将源文件名 source_file 改为目标文件名 dest_file |
mv source_file(文件) dest_directory(目录) |
将文件 source_file 移动到目标目录 dest_directory 中 |
mv source_directory(目录) dest_directory(目录) |
目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory |
mv source_directory(目录) dest_file(文件) |
出错 |
将
/usr/home
下的所有文件和目录移到当前目录下,命令行为:
1 | mv /usr/home/* . |
rm命令
删除一个文件或目录。
参数:
- -i 删除前逐一询问确认。
- -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
- -r 将目录及以下之档案亦逐一删除。
实例
删除文件可以直接使用rm命令,若删除目录则必须配合选项”-r”,例如:
1 | # rm test.txt |
删除当前目录下的所有文件及目录,命令行为:
1 | rm -r * |
文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。
dd命令
file命令
打包压缩与搜索命令
tar命令
基本操作选项
-c
:创建一个新的归档文件。-x
:解压归档文件。-t
:列出归档文件的内容。-r
:向现有归档文件中追加文件。-u
:仅追加比归档文件中已有文件更新的文件。-d
:找到归档文件中与文件系统不同步的差异。-A
:将一个.tar
文件追加到另一个.tar
文件中。-f <file>
:指定归档文件的名称(必须放在选项列表的最后)
实例
1、创建归档文件:将文件 file1、file2 和 directory 打包到一个名为 archive.tar 的归档文件中。
1 | tar -cvf archive.tar file1 file2 directory |
-c
: 创建新的归档文件-v
: 显示详细输出,列出被添加到归档中的文件-f
: 指定归档文件的名称
2、解压归档文件:解压名为 archive.tar 的归档文件,还原其中包含的文件和目录。
1 | tar -xvf archive.tar |
-x
: 解压归档文件-v
: 显示详细输出,列出被解压的文件-f
: 指定要解压的归档文件的名称
3、压缩归档文件:将名为 directory 的目录打包成一个归档文件,然后使用 gzip 进行压缩,生成名为 archive.tar.gz 的文件。
1 | tar -czvf archive.tar.gz directory |
-c
: 创建新的归档文件-z
: 使用 gzip 压缩归档文件-v
: 显示详细输出,列出被添加到归档中的文件-f
: 指定归档文件的名称
4、列出归档文件中的内容:列出名为 archive.tar 的归档文件中包含的所有文件和目录。
1 | tar -tvf archive.tar |
-t
: 列出归档文件中的内容-v
: 显示详细输出,列出归档文件中的所有文件和目录-f
: 指定要列出内容的归档文件的名称
5、追加文件到已存在的归档中:将名为 newfile 的文件添加到已存在的名为 archive.tar 的归档文件中。
1 | tar -rvf archive.tar newfile |
-r
: 向已存在的归档中追加文件-v
: 显示详细输出,列出被添加到归档中的文件-f
: 指定已存在的归档文件的名称
6、创建一个经过 gzip 压缩的归档文件:打包 directory 目录下的所有文件和子目录,并使用 gzip 压缩,生成名为 archive.tar.gz 的归档文件。
1 | tar -zcvf archive.tar.gz directory |
-z
: 表示要使用 gzip 进行压缩。-c
: 表示创建新的归档文件。-v
: 表示详细输出,列出被添加到归档中的文件。-f archive.tar.gz
: 指定归档文件的名称为archive.tar.gz
。
7、解压一个已经被 gzip 压缩的归档文件:解压 example.tar.gz 文件,并在当前目录下恢复其中包含的文件和目录。
1 | tar -zxvf example.tar.gz |
-z
: 表示要使用 gzip 解压归档文件。-x
: 表示解压操作。-v
: 表示详细输出,列出被解压的文件。-f example.tar.gz
: 指定要解压的归档文件的名称为example.tar.gz
。
指定压缩格式
tar 可以结合不同的压缩程序来创建和解压压缩归档文件。
z : 使用 gzip 压缩。
1 | tar -czvf archive.tar.gz directory |
j: 使用 bzip2 压缩。
1 | tar -cjvf archive.tar.bz2 directory |
J: 使用 xz 压缩。
1 | tar -cJvf archive.tar.xz directory |
grep命令
常用选项::
-i
:忽略大小写进行匹配。-v
:反向查找,只打印不匹配的行。-n
:显示匹配行的行号。-r
:递归查找子目录中的文件。-l
:只打印匹配的文件名。-c
:只打印匹配的行数。
实例
1、在文件 file.txt 中查找字符串 “hello”,并打印匹配的行:
1 | grep hello file.txt |
2、在文件夹 dir 中递归查找所有文件中匹配正则表达式 “pattern” 的行,并打印匹配行所在的文件名和行号:
1 | grep -r -n pattern dir/ |
3、在标准输入中查找字符串 “world”,并只打印匹配的行数:
1 | echo "hello world" | grep -c world |
4、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
1 | grep test *file |
结果如下所示:
1 | $ grep test test* #查找前缀有“test”的文件包含“test”字符串的文件 |
5、以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串”update”的文件,并打印出该字符串所在行的内容,使用的命令为:
1 | grep -r update /etc/acpi |
输出结果如下:
1 | $ grep -r update /etc/acpi #以递归的方式查找“etc/acpi” |
6、反向查找。前面各个例子是查找并打印出符合条件的行,通过”-v”参数可以打印出不符合条件行的内容。
查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:
1 | grep -v test *test* |
结果如下所示:
1 | $ grep-v test* #查找文件名中包含test 的文件中不包含test 的行 |
egrep命令
使用正则表达式匹配文本,格式为egrep [范本模式] [文件或目录]
参数说明:
- [范本模式] :查找的字符串规则。
- [文件或目录] :查找的目标文件或目录。