服务

以下均以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 [字符串|$变量名]

image-20250815115554255

date命令

显示或设置系统时间。格式为date [选项] [+指定的格式]

选项

  • -s, –set=STRING:根据字符串设置系统时间。
  • -d, –date=STRING:通过字符串显示时间格式。

指定的格式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
%%   输出字符 %
%a 星期几的缩写 (Sun..Sat)
%A 星期的完整名称(Sunday..Saturday)。
%b 缩写的月份名称(例如,Jan)
%B 完整的月份名称(例如,January)
%c 本地日期和时间(例如,Thu Mar 3 23:05:25 2005)
%d 日 (01..31)
%D 日期,等价于%m/%d/%y
%e 一月中的一天,格式使用空格填充,等价于%_d
%F 完整的日期;等价于 %Y-%m-%d
%H 小时 (00..23)
%I 小时 (01..12)
%j 一年中的第几天 (001..366)
%k 小时,使用空格填充 ( 0..23); 等价于 %_H
%l 小时, 使用空格填充 ( 1..12); 等价于 %_I
%m 月份 (01..12)
%M 分钟 (00..59)
%n 新的一行,换行符
%p 用于表示当地的AM或PM,如果未知则为空白
%P 类似 %p, 但是是小写的
%r 本地的 12 小时制时间(例如 11:11:04 PM)
%R 24 小时制 的小时与分钟; 等价于 %H:%M
%s 自 1970-01-01 00:00:00 UTC 到现在的秒数
%S 秒 (00..60)
%t 插入水平制表符 tab
%T 时间; 等价于 %H:%M:%S
%u 一周中的一天 (1..7); 1 表示星期一
%U 一年中的第几周,周日作为一周的起始 (00..53)
%w 一周中的一天(0..6),0代表星期天
%W 一年中的第几周,周一作为一周的起始(00..53)
%x 本地的日期格式(例如,12/31/99)
%X 本地的日期格式(例如,23:13:48)
%y 年份后两位数字 (00..99)
%Y 年
%Z 时区缩写 (如 EDT)
image-20250815122051786

示例

+指定格式

1
2
3
4
5
6
7
8
9
10
11
12
root@wq3stone:~# date
Fri 15 Aug 2025 12:40:56 PM CST
root@wq3stone:~# date '+%c'
Fri 15 Aug 2025 12:41:06 PM CST
root@wq3stone:~# date '+%D'
08/15/25
root@wq3stone:~# date '+%x'
08/15/2025
root@wq3stone:~# date '+%T'
12:41:49
root@wq3stone:~# date '+%X'
12:41:59 PM

当您不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date ‘+%-H:%-M:%-S’ 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。

-d参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@wq3stone:~# date +%Y%m%d                   # 显示年月日
20250815
root@wq3stone:~# date -d "+1 day" +%Y%m%d # 显示后一天的日期
20250816
root@wq3stone:~# date -d "-1 day" +%Y%m%d # 显示前一天的日期
20250814
root@wq3stone:~# date -d "-1 month" +%Y%m%d # 显示上一月的日期
20250715
root@wq3stone:~# date -d "+1 month" +%Y%m%d # 显示下一月的日期
20250915
root@wq3stone:~# date -d "-1 year" +%Y%m%d # 显示前一年的日期
20240815
root@wq3stone:~# date -d "+1 year" +%Y%m%d # 显示下一年的日期
20260815

-s参数

1
2
3
4
5
6
7
date -s                         # 设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523 # 设置成20120523,这样会把具体时间设置成00:00:00
date -s 01:01:01 # 设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23" # 这样可以设置全部时间
date -s "01:01:01 20120523" # 这样可以设置全部时间
date -s "2012-05-23 01:01:01" # 这样可以设置全部时间
date -s "20120523 01:01:01" # 这样可以设置全部时间

只有取得权限者(比如说 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 <用户名>:仅显示指定用户名的进程信息。
image-20250815132654756

系统整体的统计信息

第一行

1
2
3
4
5
top - 13:46:29 up 3 days, 30 min,  2 users,  load average: 0.00, 0.00, 0.00
# top:当前系统时间。
# up:机器运行了多长时间。
# users:当前登录用户数。
# load average:系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二行

1
2
3
4
5
6
Tasks: 110 total,   1 running, 107 sleeping,   2 stopped,   0 zombie
# Tasks:当前有多少进程。
# running:正在运行的进程数。
# sleeping:正在休眠的进程数。
# stopped:停止的进程数。
# zombie:僵尸进程数。

第三行

1
2
3
4
5
6
7
8
9
%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
# us:用户空间占CPU的百分比
# sy:内核空间占CPU的百分比
# ni:调整过nice值的进程消耗掉的CPU时间
# id: 空闲CPU占用率。
# wa: 等待输入输出的CPU时间百分比,一般这个值高代表磁盘io较大。
# hi:硬中断占用百分比,硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息,当CPU收到中断消息后需要进行适当的处理(消耗CPU时间)
# si:软中断占用百分比(软中断是由程序发出的中断,最终也会执行相应的处理程序,消耗CPU时间)。
# st:Steal Time(窃取时间) ,当系统运行在虚拟化环境(如虚拟机)中时,物理 CPU 资源被同一物理机上的其他虚拟机占用,导致当前虚拟机无法使用 CPU 的时间比例。

第四行

1
2
3
4
5
MiB Mem :   1872.6 total,    341.1 free,    638.1 used,    893.5 buff/cache
# total:物理内存总量。
# free:空闲内存量。
# used:使用的内存量。
# buffer/cache:用作内核缓存的内存量。

第五行

1
2
3
4
5
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   1075.4 avail Mem 
# total:交换区内存总量。
# free:空闲交换区总量。
# used:使用的交换区总量。
# buffer/cache:缓冲的交换区总量。

进程信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
1624 root 20 0 157612 18204 12096 S 2.0 1.0 3:44.32 AliYunDunMonito
1603 root 20 0 148488 40856 7196 S 0.7 2.3 1:27.12 AliYunDun
1 root 20 0 125632 4072 2620 S 0.0 0.2 0:01.36 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H

# PID: 进程id
# USER: 进程所有者的用户名
# PR: 优先级
# NI: nice值,负值表示高优先级,正值表示低优先级
# VIRT: 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
# RES: 代表进程实际使用的物理内存(未被换出到磁盘),单位kb。
# SHR: 共享内存大小,单位kb
# S: 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
# %CPU: 上次更新到现在的CPU时间占用百分比
# %MEM: 进程使用的物理内存百分比
# TIME+: 进程使用的CPU时间总计,单位1/100秒
# COMMAND: 命令名/命令行

在此页面还可以输入以下按键执行相应的功能(注意大小写区分的)

参数 含义
? 显示在top当中可以输入的命令
P 以CPU的使用资源排序显示
M 以内存的使用资源排序显示
N 以pid排序显示
T 由进程使用的时间累计排序显示
k 给某一个pid一个信号,可以用来杀死进程(9)
r 给某个pid重新定制一个nice值(即优先级)
q 退出top(用Ctrl+C也可以退出top)

pidof命令

查询某个指定服务进程的PID值,格式为pidof [参数] [服务名称]

image-20250815140103180

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 [网络设备] [参数]

image-20250815142122606

uname命令

uname命令用于查看系统内核与系统版本等信息,格式为uname [-a]

uptime命令

与top命令的第一行数据一样

free命令

free命令用于显示当前系统中内存的使用量

输出信息

  • total:总物理内存
  • used:已经使用的物理内存
  • free:没有使用过的物理内存
  • shared:多进程共享内存
  • buff/cache:读写缓存内存,这部分内存是当空闲来用的,当free内存不足时,linux内核会将此内存释放
  • available:还可以被应用程序使用的物理内存

who命令

查看当前登入主机的用户终端信息

image-20250815143959320

last命令

查看所有系统的登录信息

history命令

查看历史执行过的命令,可以使用!编码数字来重复执行某一次的命令,若使用-c参数,会清除所有的历史命令记录。

默认保存近1000条命令,可以修改/etc/profile中的HISTSIZE变量值修改保存命令数

历史命令被存储在用户家目录中的.bash_history文件中,可以使用cat ~/.bash_history查看

工作目录切换命令

pwd命令

cd命令

ls命令

文本文件编辑命令

cat命令

more命令

head命令

tail命令

tr命令

wc命令

stat命令

cut命令

diff命令

文件目录管理命令

touch命令

mkdir命令

cp命令

mv命令

rm命令

dd命令

file命令

打包压缩与搜索命令

tar命令

grep命令

find命令