Linux命令

本文遵循BY-SA版权协议,转载请附上原文出处链接。


本文作者: 黑伴白

本文链接: http://heibanbai.com.cn/posts/82734d8/

Linux命令

常用命令

命令 说明
ls 列出当前⽬录下的⽂件和⽬录
cd 切换⽬录
pwd 当前目录
vim 编辑⽂件
mkdir 创建新⽬录
rm -rf 删除⽂件或⽬录
cp source target 复制⽂件或⽬录, -r 参数为⽬录
mv source target 移动⽂件或⽬录
cat 查看⽂件内容
chomd 修改⽂件权限
zip 压缩⽂件
unzip 解压⽂件
ps -ef | grep java 查找所有包含 java 的进程
kill -9 PID 强制杀死进程
top 查看系统资源使⽤情况
df -h 查看磁盘空间使⽤情况
nohup java -jar app.jar > output.log 2>&1 & 后台启动 Java 应⽤,并将⽇志保存到指定⽂件
ping 测试⽹络连通性
netstat -anp | grep 8080 查看端⼝占⽤情况

文件和目录

⽂件和⽬录是 Linux 系统中最基本的组成部分,下⾯是⼀些常⽤的⽂件和⽬录操作命令

ls列出⽬录内容

  • ls :列出当前⽬录下的⽂件和⼦⽬录

  • ls -l :以列表形式显示详细信息,包括⽂件权限、所有者、⼤⼩和最后修改⽇期

  • ls -a :显示所有⽂件,包括隐藏⽂件(以.开头的⽂件)

  • ls -lh :以易读的格式显示⽂件⼤⼩(例如,⽤ K、M、B 表示)

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
[heibanbai@heibanbai01 ~]$ ls --help
用法:ls [选项]... [文件]...
列出给定文件(默认为当前目录)的信息。
如果不指定 -cftuvSUX 中任意一个或--sort 选项,则根据字母大小排序。

必选参数对长短选项同时适用。
-a, --all 不隐藏任何以 . 开始的项目
-A, --almost-all 列出除 . 及 .. 以外的任何项目
--author 与 -l 同时使用时,列出每个文件的作者
-b, --escape 以 C 风格的转义序列表示不可打印的字符
--block-size=大小 与 -l 同时使用时,将文件大小以此处给定的大小为
单位进行缩放;例如:“--block-size=M”;
请参考下文的大小格式说明
-B, --ignore-backups 不列出任何以 ~ 字符结束的项目
-c 与 -lt 共同使用时:根据 ctime 排序并显示
ctime(文件状态最后更改的时间);
-l 共同使用时:显示 ctime 并按照名称排序;
其它情况:按照 ctime 排序,最新的最前
-C 每栏由上至下列出项目
--color[=WHEN] 控制是否使用带颜色的输出;WHEN 可以是
“always”(默认缺省值)、“auto”或
“never”;更多信息请见下文
-d, --directory 当遇到目录时列出目录本身而非目录内的文件
-D, --dired 产生适合 Emacs 的 dired 模式使用的结果
-f 不进行排序,-aU 选项生效,禁用 -ls --color
-F, --classify 加上文件类型的指示符号(*/=@| 其中一个)
--file-type 类似,但不后缀‘*’字符
--format=关键字 交错 -x,逗号分隔 -m,水平 -x,长 -l,
单栏 -1,详细 -l,垂直 -C
--full-time 类似 -l --time-style=full-iso
-g 类似 -l,但不列出所有者
--group-directories-first
在文件前分组目录;
此选项可与--sort 一起使用,但是一旦使用
--sort=none (-U) 将禁用分组
-G, --no-group 以一个长列表的形式,不输出组名
-h, --human-readable 与 -l 和 -s 一起,以易于阅读的格式输出文件
大小(例如 1K 234M 2G等)
--si 同上面类似,但是使用 1000 为基底而非 1024
-H, --dereference-command-line
跟随命令行列出的符号链接
--dereference-command-line-symlink-to-dir
跟随命令行列出的指向目录的符号链接
--hide=PATTERN 隐藏符合 shell PATTERN 模式的项目
-a 或 -A 将覆盖此选项)
--hyperlink[=WHEN] 文件名使用超链接;WHEN 可以是“always”
(缺省时的默认选项)、“auto”或
“never”
--indicator-style=方式 指定在每个项目名称后加上指示符号方式:
none(默认)、slash(-p)、
file-type(--file-type)以及 classify(-F)
-i, --inode 显示每个文件的索引编号(inode 号)
-I, --ignore=模式 不显示任何匹配指定 shell <模式>的项目
-k, --kibibytes 默认使用 1024 字节的块显示磁盘使用量;
只用于 -s 和每个目录的总计
-l 使用较长格式列出信息
-L, --dereference 当显示符号链接的文件信息时,显示符号链接所指示
的对象而并非符号链接本身的信息
-m 所有项目以逗号分隔,并填满整行行宽
-n, --numeric-uid-gid 类似 -l,但列出用户和组的 ID 号
-N, --literal 输出未经引号括起的项目名称
-o 类似 -l,但不列出有关组的信息
-p, --indicator-style=slash
对目录附加“/”作为指示符号
-q, --hide-control-chars 以“?”字符代替无法打印的字符
--show-control-chars 原样显示无法打印的字符(这是默认行为,除非被调用
本程序的名称是“ls”而且是在终端中进行输出)
-Q, --quote-name 将条目名称括上双引号
--quoting-style=方式 使用指定引用的方式显示条目的名称:
literal, locale, shell, shell-always,
shell-escape, shell-escape-always, c, escape
(该选项优先于 QUOTING_STYLE 环境变量的配置)
-r, --reverse 逆序排列
-R, --recursive 递归显示子目录
-s, --size 以块数形式显示每个文件分配的尺寸
-S sort by file size, largest first
--sort=WORD sort by WORD instead of name: none (-U), size (-S),
time (-t), version (-v), extension (-X)
--time=WORD change the default of using modification times;
access time (-u): atime, access, use;
change time (-c): ctime, status;
birth time: birth, creation;
with -l, WORD determines which time to show;
with --sort=time, sort by WORD (newest first)
--time-style=TIME_STYLE 使用 -l 时显示的时间/日期格式;请见下面
TIME_STYLE 的相关内容
-t 按时间排序,最新的最前;参见 --time
-T, --tabsize=COLS 指定制表符(Tab)的宽度,而非默认8字符
-u 同 -lt 一起使用:按照访问时间排序并显示;
-l 一起使用:显示访问时间并按文件名排序
其它:按照访问时间排序,最新的最靠前
-U 不进行排序;按照目录顺序列出项目
-v 在文本中进行数字(版本)的自然排序
-w, --width=COLS 设置输出宽度为 COLS 对应的值。0 代表无限制
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名按字母顺序排序
-Z, --context 输出每个文件的所有安全上下文信息
-1 每行只列出一个文件。与 -q 或 -b 共用时避免 '\n'
--help 显示此帮助信息并退出
--version 显示版本信息并退出

cd切换目录

  • cd /home/heibanbai :切换到指定的目录
  • cd .. :返回上一级目录
  • cd ~ :切换到当前用户的主目录
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
[heibanbai@heibanbai01 ~]$ cd --help
cd: cd [-L|[-P [-e]] [-@]] [目录]
改变 shell 工作目录。

改变当前目录至 DIR 目录。默认的 DIR 目录是 shell 变量 HOME
的值。

变量 CDPATH 定义了含有 DIR 的目录的搜索路径,其中不同的目录名称由冒号 (:)分隔。
一个空的目录名称表示当前目录。如果要切换到的 DIR 由斜杠 (/) 开头,则 CDPATH
不会用上变量。

如果路径找不到,并且 shell 选项 `cdable_vars' 被设定,则参数词被假定为一个
变量名。如果该变量有值,则它的值被当作 DIR 目录。

选项:
-L 强制跟随符号链接: 在处理 `..' 之后解析 DIR 中的符号链接。
-P 使用物理目录结构而不跟随符号链接: 在处理 `..' 之前解析 DIR 中的符号链接。
-e 如果使用了 -P 参数,但不能成功确定当前工作目录时,返回非零的返回值。
-@ 在支持拓展属性的系统上,将一个有这些属性的文件当作有文件属性的目录。

默认情况下跟随符号链接,如同指定 `-L'。
`..' 使用移除向前相邻目录名成员直到 DIR 开始或一个斜杠的方式处理。

退出状态:
如果目录改变,或在使用 -P 选项时 $PWD 修改成功时返回 0,否则非零。

pwd显示当前目录

  • pwd :显示当前⼯作⽬录的绝对路径
1
2
3
4
5
6
7
8
9
[heibanbai@heibanbai01 ~]$ pwd --help
pwd: pwd [-LP]
打印当前工作目录的名字。

选项:
-L 打印 $PWD 变量的值,如果它包含了当前的工作目录
-P 打印当前的物理路径,不带有任何的符号链接

默认情况下,`pwd' 的行为和带 `-L' 选项一致

mkdir创建目录

  • mkdir directory :创建⼀个新⽬录。

  • mkdir -p directory/subdirectory :创建⼀个新⽬录和⼦⽬录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[heibanbai@heibanbai01 ~]$ mkdir --help
用法:mkdir [选项]... 目录...
若指定<目录>不存在则创建目录。

必选参数对长短选项同时适用。
-m, --mode=模式 设置权限模式(类似chmod),而不是 a=rwx 减 umask
-p, --parents 需要时创建目标目录的上层目录,但即使这些目录已存在
也不当作错误处理
-v, --verbose 每次创建新目录都显示信息
-Z 设置每个创建的目录的 SELinux 安全上下文为默认类型
--context[=CTX] 类似 -Z,或如果指定了 CTX,则将 SELinux 或 SMACK 安全
上下文设置为 CTX 对应的值
--help 显示此帮助信息并退出
--version 显示版本信息并退出

rm删除文件或目录

  • rm file :删除⽂件。

  • rm -r directory :删除⽬录及其所有内容。

  • rm -f file :强制删除⽂件,不提示。

  • rm -rf directory :强制删除⽬录及其所有内容,不提示。

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
36
[heibanbai@heibanbai01 ~]$ rm --help
用法:rm [选项]... [文件]...
删除(unlink)指定<文件>。

-f, --force 强制删除。忽略不存在的文件,不提示确认
-i 每次删除前提示确认
-I 在删除超过三个文件或者递归删除前提示一次并要求确认;
此选项比 -i 提示内容更少,但同样可以阻止大多数
错误发生
--interactive[=场景] 根据指定的<场景>进行确认提示:never(从不)、
once(一次,等效于使用 -I)或者 always(总是,
等效于使用 -i)。如果使用此参数没有指定<场景>则
总是提示
--one-file-system 递归删除一个层级时,跳过所有不符合命令行参
数的文件系统上的文件
--no-preserve-root 不要对“/”特殊处理
--preserve-root[=all] 不要删除“/”(默认行为);
如添加了“all”参数,将拒绝处理与父目录位于
不同设备上的命令行参数
-r, -R, --recursive 递归删除目录及其内容
-d, --dir 删除空目录
-v, --verbose 详细显示进行的步骤
--help 显示此帮助信息并退出
--version 显示版本信息并退出

默认时,rm 不会删除目录。使用--recursive(-r 或-R)选项可删除每个给定
的目录,以及其下所有的内容。

要删除文件名第一个字符为“-”的文件(例如“-foo”),请使用
以下方法之一:
rm -- -foo

rm ./-foo

请注意,如果使用rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证
该文件的内容无法还原,请考虑使用shred。

cp 复制⽂件或⽬录

  • cp source target :复制⽂件。

  • cp -r source target :递归复制⽬录极其内容。

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
[heibanbai@heibanbai01 ~]$ cp --help
用法:cp [选项]... [-T] 源文件 目标文件
 或:cp [选项]... 源文件... 目录
 或:cp [选项]... -t 目录 源文件...
将指定<源文件>复制至<目标文件>,或将多个<源文件>复制至<目标目录>。

必选参数对长短选项同时适用。
-a, --archive 等于-dR --preserve=all
--attributes-only 仅复制属性而不复制数据 --backup[=CONTROL 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
--copy-contents 在递归处理是复制特殊文件内容
-d 等于--no-dereference --preserve=links
-f, --force 如果有已存在的目标文件且无法打开,则将其删除并重试
(该选项在与 -n 选项同时使用时将被忽略)
-i, --interactive 覆盖前询问(使前面的 -n 选项失效)
-H 跟随源文件中的命令行符号链接
-l, --link 硬链接文件以代替复制
-L, --dereference 总是跟随源文件中的符号链接
-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-P, --no-dereference 不跟随源文件中的符号链接
-p 等于--preserve=模式,所有权,时间戳
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果
可能保持附加属性:上下文、链接、xattr 等
--sno-preserve=属性列表 不保留指定的文件属性
--parents 复制前在目标目录创建来源文件路径中的所有目录
-R, -r, --recursive 递归复制目录及其子目录内的所有内容
--reflink[=WHEN] 控制克隆/CoW 副本。请查看下面的内如。
--remove-destination 尝试打开目标文件前先删除已存在的目的地
文件 (相对于 --force 选项)
--sparse=WHEN 控制创建稀疏文件的方式
--strip-trailing-slashes 删除参数中所有源文件/目录末端的斜杠
-s, --symbolic-link 只创建符号链接而不复制文件
-S, --suffix=后缀 自行指定备份文件的后缀
-t, --target-directory=目录 将所有参数指定的源文件/目录
复制至目标目录
-T, --no-target-directory 将目标目录视作普通文件
-u, --update 只在源文件比目标文件新,或目标文件
不存在时才进行复制
-v, --verbose 显示详细的进行步骤
-x, --one-file-system 不跨越文件系统进行操作
-Z 设置目标文件的 SELinux 安全上下文为默认类型
--context[=上下文] 类似 -Z;如果指定了上下文,则将 SELinux 或
SMACK 安全上下文设置为指定值
--help 显示此帮助信息并退出
--version 显示版本信息并退出

默认情况下,源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件
也将设为稀疏。这是因为默认情况下使用了--sparse=auto 参数。如果明确使用
--sparse=always 参数,则不论源文件是否包含足够长的 0 序列,都会将目标文件
创建为稀疏文件。使用 --sparse=never 参数可以禁止创建稀疏文件。

当指定了 --reflink[=always] 参数时,将进行轻量级复制,此时数据块只在被修改时
进行复制,如果无法如此操作则复制将会失败。或者如果指定了 --reflink=auto,程序
将会回退到标准复制操作。使用 --reflink=never 可以确保永远进行标准复制。

备份文件的后缀为"~",除非以--suffix 选项或是 SIMPLE_BACKUP_SUFFIX
环境变量指定。版本控制的方式可通过--backup 选项或 VERSION_CONTROL 环境
变量来选择。以下是可用的变量值:

none, off 不进行备份(即使使用了--backup 选项)
numbered, t 备份文件加上数字进行排序
existing, nil 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
simple, never 永远使用普通方式备份

有一个特别情况:如果同时指定--force--backup 选项,而源文件和目标文件
是同一个已存在的一般文件的话,cp 会将源文件备份。

mv 移动⽂件或⽬录

  • mv source target :移动⽂件或⽬录,也可以⽤来重命名⽂件。
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
[heibanbai@heibanbai01 ~]$ mv --help
用法:mv [选项]... [-T] 源文件 目标文件
 或:mv [选项]... 源文件... 目录
 或:mv [选项]... -t 目录 源文件...
将<源文件>重命名为<目标文件>,或将<源文件>移动至指定<目录>。

必选参数对长短选项同时适用。
--backup[=CONTROL] 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
-f, --force 覆盖前不询问
-i, --interactive 覆盖前询问
-n, --no-clobber 不覆盖已存在文件
如果您指定了-i、-f、-n 中的多个,仅最后一个生效。
--strip-trailing-slashes 去掉每个源文件参数尾部的斜线
-S, --suffix=SUFFIX 替换常用的备份文件后缀
-t, --target-directory=目录 将所有<源文件>移动至指定的<目录>中
-T, --no-target-directory 将参数中所有<目标文件>部分视为普通文件
-u, --update 仅在<源文件>比目标文件更新,或者目标文件
不存在时进行移动操作
-v, --verbose 对正在发生的操作给出解释
-Z, --context 将目标文件的 SELinux 安全上下文设置为
默认类型
--help 显示此帮助信息并退出
--version 显示版本信息并退出

备份文件的后缀为"~",除非以--suffix 选项或是 SIMPLE_BACKUP_SUFFIX
环境变量指定。版本控制的方式可通过--backup 选项或 VERSION_CONTROL 环境
变量来选择。以下是可用的变量值:

none, off 不进行备份(即使使用了--backup 选项)
numbered, t 备份文件加上数字进行排序
existing, nil 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
simple, never 永远使用普通方式备份

cat 查看⽂件内容

  • cat file :显示⽂件内容。
  • cat file1 file2 :连接多个⽂件并显示内容。
  • cat > file :创建⼀个新⽂件并输⼊内容,按 Ctrl + D 保存退出。
  • cat >> file :追加内容到⽂件末尾。
  • cat file1 file2 > file3 :合并 file1 和 file2 的内容,并将合并后的内容存储到 file3 中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[heibanbai@heibanbai01 ~]$ cat --help
用法:cat [选项]... [文件]...
连接所有指定文件并将结果写到标准输出。

如果没有指定文件,或者文件为"-",则从标准输入读取。

-A, --show-all 等效于 -vET
-b, --number-nonblank 对非空输出行编号,同时取消 -n 选项效果
-e 等效于 -vE
-E, --show-ends 在每行结束处显示"$"
-n, --number 对输出的所有行编号
-s, --squeeze-blank 不输出多行空行
-t 与 -vT 等效
-T, --show-tabs 将跳格字符显示为^I
-u (被忽略)
-v, --show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
--help 显示此帮助信息并退出
--version 显示版本信息并退出

示例:
cat f - g 先输出f 的内容,然后输出标准输入的内容,最后输出g 的内容。
cat 将标准输入的内容复制到标准输出。

echo 输出⽂本

  • echo "Hello, World!" :输出⽂本。
  • echo "Hello, World!" > file :将输出重定向到⽂件。
  • echo "Hello, World!" >> file :将输出追加到⽂件末尾。
  • echo -e "Hello\nWorld" :⽀持转义字符。
  • echo -n "Hello, World!" :不换⾏输出。
  • echo $? :显示上⼀个命令的退出状态。
  • echo $SHELL :显示当前 shell 的类型。

head 和 tail 查看⽂件头和尾

  • head file :显示⽂件的前 10 ⾏。
  • head -n 20 file :显示⽂件的前 20 ⾏。
  • tail file :显示⽂件的最后 10 ⾏。
  • tail -n 20 file :显示⽂件的最后 20 ⾏。

vim 编辑⽂件

  • vim file :编辑⽂件。

  • i :切换到插⼊模式。

  • Esc :退出插⼊模式。

  • :w :保存⽂件。

  • :q :退出⽂件。

  • :wq :保存并退出⽂件。

  • :q! :强制退出⽂件

chmod 修改⽂件权限

chmod 777 file :赋予⽂件所有权限。

Linux 中的权限可以应⽤于三种类别的⽤户:

  • ⽂件所有者(u)

  • 与⽂件所有者同组的⽤户(g)

  • 其他⽤户(o)

image-20240508165054376

符号模式

符号模式使⽤字⺟来表示权限,如下:

  • 读(r)

  • 写(w)

  • 执⾏(x)

  • 所有(a)

例如:

  • chmod u+w file :给⽂件所有者添加写权限。

  • chmod g-r file :移除组⽤户的读权限。

  • chmod o+x file :给其他⽤户添加执⾏权限。

  • chmod u=rwx,g=rx,o=r file :设置⽂件所有者具有读写执⾏权限,组⽤户具有读执⾏权限,其他⽤户具有读

权限。

数字模式

数字模式使⽤三位⼋进制数来表示权限,每位数字代表不同的⽤户类别(所有者、组、其他⽤户),数字是其各⾃权限

值的总和:

  • 读(r)= 4

  • 写(w)= 2

  • 执⾏(x)= 1

image-20240508165134724

tree 显示⽬录结构

  • tree :以树形结构显示⽬录。

  • tree -L 2 :只显示两层⽬录。

  • tree -d :只显示⽬录。

  • tree -a :显示所有⽂件和⽬录。

  • tree -a :显示所有⽂件和⽬录。

  • tree -h :以易读的格式显示⽂件⼤⼩。

1
2
3
4
5
6
7
8
9
10
[heibanbai@heibanbai01 ~]$ tree .
.
├── hadoop -> /app/hadoop-3.3.6
├── hadoop_start_stop.sh
├── moiasrv -> /app/MoiaControlServer
├── nginx -> /app/nginx
├── rabbitmq -> /app/rabbitmq_server-3.10.7
└── redis -> /app/redis

5 directories, 1 file

whereis 查找命令

whereis 命令⽤来查找⽂件的位置,特别是⽤于查找⼆进制⽂件、源代码⽂件、和帮助⽂档的位置。它⽐ find 命令运

⾏得更快,因为 whereis 不会遍历整个⽂件系统,⽽是在⼀组预定义的路径中查找⽂件,这些路径通常包括 Linux 系

统上安装软件的标准位置。

基本⽤法: whereis [选项] 程序名 :

  • -b :只查找⼆进制⽂件。

  • -m :只查找帮助⼿册的路径。

  • -s :只查找源代码⽂件。

  • -u :查找未分类的⽂件。

which 查找命令

  • which command :查找命令的位置,前提是该命令在⽤户的 PATH 环境变量所指定的⽬录中。

⽹络和进程管理

ping 测试⽹络连通性

如果你本机的电脑连不上服务器,那结果⽆⾮两样,你本机的⽹络出问题了,或者服务器的⽹络出问题了,这时候就可以使⽤ ping 命令来测试⽹络连通性。

  • ping domain :测试域名的连通性。

  • ping IP :测试 IP 的连通性。

netstat 查看⽹络状态

  • netstat -a :显示所有的输⼊和输出连接,包括未处于监听状态的。

  • netstat -at :显示所有 TCP 连接。

  • netstat -au :显示所有 UDP 连接。

  • netstat -l :仅显示监听中的服务器端⼝。

  • netstat -p :显示进程 ID 和进程名称。

  • netstat -s :显示⽹络统计信息。

  • netstat -n :显示 IP 地址和端⼝号。

  • netstat -tuln :显示所有 TCP 和 UDP 连接的 IP 地址和端⼝号。

  • netstat -antp :显示所有 TCP 连接的 IP 地址和端⼝号,以及进程 ID 和进程名称。

  • netstat -anp | grep 8080 :查看端⼝占⽤情况。

ps 查看进程

  • ps :显示当前⽤户的进程。

  • ps -ef :显示所有进程。

  • ps -ef | grep java :查找所有包含 java 的进程。

kill 终⽌进程

  • kill PID :终⽌指定进程。

  • kill -9 PID :强制终⽌指定进程。

top 查看系统资源

  • top :显示系统资源使⽤情况, Ctrl + C 退出。

nohup 后台启动应⽤

  • nohup java -jar app.jar > output.log 2>&1 & :后台启动 Java 应⽤,并将⽇志保存到指定⽂件。

  • nohup command & :后台启动命令。

链接

Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。

默认情况下,ln命令产生硬链接。

硬链接

硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

软连接

另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[heibanbai@heibanbai01 tmp]$ pwd
/home/heibanbai/tmp
[heibanbai@heibanbai01 tmp]$ touch test.txt # 创建一个测试文件test.txt
[heibanbai@heibanbai01 tmp]$ ls -lhi # 查看文件inode节点信息
总用量 0
39396432 -rw-r--r-- 1 heibanbai heibanbai 0 5月 8 19:12 test.txt
[heibanbai@heibanbai01 tmp]$ ln test.txt test2.txt # 创建test.txt的一个硬链接文件test2.txt
[heibanbai@heibanbai01 tmp]$ ls -lhi
总用量 0
39396432 -rw-r--r-- 2 heibanbai heibanbai 0 5月 8 19:12 test2.txt
39396432 -rw-r--r-- 2 heibanbai heibanbai 0 5月 8 19:12 test.txt
[heibanbai@heibanbai01 tmp]$ ln -s test.txt test3.txt # 创建test.txt的一个软链接test3.txt
[heibanbai@heibanbai01 tmp]$ ls -lhi
总用量 0
39396432 -rw-r--r-- 2 heibanbai heibanbai 0 5月 8 19:12 test2.txt
39396434 lrwxrwxrwx 1 heibanbai heibanbai 8 5月 8 19:12 test3.txt -> test.txt
39396432 -rw-r--r-- 2 heibanbai heibanbai 0 5月 8 19:12 test.txt

从上面的结果中可以看出,硬连接文件与原文件的inode节点相同,然而符号连接文件的inode节点不同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[heibanbai@heibanbai01 tmp]$ echo "this file name is test.txt">test.txt
[heibanbai@heibanbai01 tmp]$ cat test.txt
this file name is test.txt
[heibanbai@heibanbai01 tmp]$ cat test2.txt
this file name is test.txt
[heibanbai@heibanbai01 tmp]$ cat test3.txt
this file name is test.txt
[heibanbai@heibanbai01 tmp]$ rm test.txt
[heibanbai@heibanbai01 tmp]$ cat test.txt
cat: test.txt: 没有那个文件或目录
[heibanbai@heibanbai01 tmp]$ cat test2.txt
this file name is test.txt
[heibanbai@heibanbai01 tmp]$ cat test3.txt
cat: test3.txt: 没有那个文件或目录
[heibanbai@heibanbai01 tmp]$ ls -lhi
总用量 4.0K
39396432 -rw-r--r-- 1 heibanbai heibanbai 27 5月 8 19:16 test2.txt
39396434 lrwxrwxrwx 1 heibanbai heibanbai 8 5月 8 19:12 test3.txt -> test.txt

通过上面的测试可以看出:当删除原始文件后,硬连接不受影响,但是符号连接文件无效。

磁盘和分区管理

df 查看磁盘空间

  • df :显示磁盘空间使⽤情况。

  • df -h :以易读的格式显示磁盘空间使⽤情况,例如 GB、MB 等。

du 查看⽬录⼤⼩

  • du :估算⽂件或⽬录的磁盘空间使⽤量。

  • du -ash /path/to/directory-s 汇总总⽤量, -h 以易读⽅式显示,不指定陌路默认为当前⽬录。

  • du -sk * | sort -n :列出当前⽬录下所有⽂件和⽬录的⼤⼩,并按⼤⼩排序。

  • du -sk * | sort -rn :列出当前⽬录下所有⽂件和⽬录的⼤⼩,并按⼤⼩逆序排序。

fdisk 分区管理

  • fdisk -l :列出所有磁盘分区。

  • fdisk /dev/sda :对磁盘 /dev/sda 进⾏分区。

系统信息和性能查看

uname 查看系统信息

  • uname :显示系统信息。

  • uname -a :查看内核/OS/CPU 信息。

  • uname -r :查看内核版本。

  • uname -m :查看处理器架构,同 arch 命令。

  • hostname :查看主机名。

  • who :查看当前登录⽤户,同 who am i 。

  • whoami :查看当前⽤户名。

  • cat /proc/version :查看内核版本。

  • cat /proc/cpuinfo :查看 CPU 信息。

  • uptime :查看系统运⾏时间和平均负载

vmstat 查看系统性能

  • vmstat :显示系统性能信息。
  • vmstat 1 :每秒显示⼀次系统性能信息。
  • vmstat 1 10 :每秒显示⼀次系统性能信息,共显示 10 次。 Ctrl + C 退出。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[heibanbai@heibanbai01 ~]$ vmstat --help

Usage:
vmstat [options] [delay [count]]

Options:
-a, --active active/inactive memory
-f, --forks number of forks since boot
-m, --slabs slabinfo
-n, --one-header do not redisplay header
-s, --stats event counter statistics
-d, --disk disk statistics
-D, --disk-sum summarize disk statistics
-p, --partition <dev> partition specific statistics
-S, --unit <char> define display unit
-w, --wide wide output
-t, --timestamp show timestamp

-h, --help display this help and exit
-V, --version output version information and exit

free 查看内存使⽤

  • free :显示内存使⽤情况。
  • free -h :以易读的格式显示内存使⽤情况。
  • free -m :以 MB 为单位显示内存使⽤情况。
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
[heibanbai@heibanbai01 ~]$ free --help

Usage:
free [options]

Options:
-b, --bytes show output in bytes
--kilo show output in kilobytes
--mega show output in megabytes
--giga show output in gigabytes
--tera show output in terabytes
--peta show output in petabytes
-k, --kibi show output in kibibytes
-m, --mebi show output in mebibytes
-g, --gibi show output in gibibytes
--tebi show output in tebibytes
--pebi show output in pebibytes
-h, --human show human-readable output
--si use powers of 1000 not 1024
-l, --lohi show detailed low and high memory statistics
-t, --total show total for RAM + swap
-s N, --seconds N repeat printing every N seconds
-c N, --count N repeat printing N times, then exit
-w, --wide wide output

--help display this help and exit
-V, --version output version information and exit

env 查看环境变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[heibanbai@heibanbai01 ~]$ env --help
用法:env [选项]... [-] [名称=值]... [命令 [参数]...]
在环境中设置每个给定变量<名称>的值为给定<值>,并运行给定<命令>。

必选参数对长短选项同时适用。
-i, --ignore-environment 以空环境启动
-0, --null 以 NUL 空字符而非换行符结束每一输出行
-u, --unset=名称 从当前环境中移除一个变量
-C, --chdir=目录 将工作目录变更为指定目录
-S, --split-string=S 处理并将 S 字符串分割为多个参数;
用于向 shebang 行传递多个参数
--block-signal[=信号] 阻挡向指定<命令>传递指定的信号
--default-signal[=信号] 将对指定信号的处理方式重置为默认方式
--ignore-signal[=信号] 将对指定信号的处理方式设置为什么都不做
--list-signal-handling 向标准错误输出非默认的信号处理方式
-v, --debug 为每个处理流程输出详细信息
--help 显示此帮助信息并退出
--version 显示版本信息并退出

单纯的 - 意味着 -i。如果没有命令,则打印结果环境。

date 查看系统时间

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
[heibanbai@heibanbai01 ~]$ date --help
用法:date [选项]... [+格式]
 或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
以给定<格式>字符串的形式显示当前时间,或者设置系统日期。

必选参数对长短选项同时适用。
-d, --date=字符串 显示给定<字符串>描述的时间,而非“当前时间”
--debug 对解析的日期添加注释,
对不规范的使用方式进行警告,并输出警告信息到
标准错误
-f, --file=日期文件 类似 --date;使用给定<日期文件>,一次处理一行
-I[FMT], --iso-8601[=FMT] 以 ISO 8601 格式输出日期/时间。
FMT='date' 时只输出日期(默认行为),
当其为 'hours''minutes''seconds''ns'
则按照所指示的精确度显示日期和时间。
示例:2006-08-14T02:34:56-06:00
-R, --rfc-email 以 RFC 5322 格式输出日期和时间。
例如:Mon, 14 Aug 2006 02:34:56 -0600
--rfc-3339=格式 以 RFC 3339 格式输出日期/时间。
<格式>字符串可以是'date''seconds''ns'
用于指定日期和时间显示的精确度。
例如:2006-08-14 02:34:56-06:00
-r, --reference=文件 显示指定<文件>的最后修改时间
-s, --set=字符串 按照给定<字符串>描述的时间来设置时间
-u, --utc, --universal 按照协调世界时(UTC)显示或设置时间
--help 显示此帮助信息并退出
--version 显示版本信息并退出

给定的格式FORMAT 控制着输出,解释序列如下:

%% 一个文字的 %
%a 当前locale 的星期名缩写(例如: 日,代表星期日)
%A 当前locale 的星期名全称 (如:星期日)
%b 当前locale 的月名缩写 (如:一,代表一月)
%B 当前locale 的月名全称 (如:一月)
%c 当前locale 的日期和时间 (如:200533日 星期四 23:05:25)
%C 世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20)
%d 按月计的日期(例如:01)
%D 按月计的日期;等于%m/%d/%y
%e 按月计的日期,添加空格,等于%_d
%F 完整日期格式,等价于 %+4Y-%m-%d
%g ISO-8601 格式年份的最后两位(参见 %G)
%G ISO-8601 格式年份(参见 %V),一般只和 %V 结合使用
%h 等于%b
%H 小时(00-23)
%I 小时(00-12)
%j 按年计的日期(001-366)
%k 小时,空格补充空白位( 0..23);与 %_H 相同
%l 小时,空格补充空白位( 1..12);与 %_I 相同
%m 月份(01..12
%M 分钟(00..59
%n 换行
%N 纳秒(000000000..999999999
%p 当前地区时间设置中 AM 或 PM 的等效值(“上午”或“下午”),未知则为空
%P 类似 %p,但使用小写
%q 一年中的季度(1..4
%r 当前地区时间中十二小时制钟表时间(例如,下午 111104秒)
%R 24 小时制的时间和分钟;和 %H:%M 相同
%s 1970-01-01 00:00:00 UTC 以来的秒数
%S 秒(00-60)
%t 输出制表符 Tab
%T 时间,等于%H:%M:%S
%u 星期,1 代表星期一
%U 一年中的第几周,以周日为每星期第一天(00-53)
%V ISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53)
%w 一星期中的第几日(0-6),0 代表周一
%W 一年中的第几周,以周一为每星期第一天(00-53)
%x 当前locale 下的日期描述 (如:12/31/99)
%X 当前locale 下的时间描述 (如:23:13:48)
%y 年份最后两位数位 (00-99)
%Y 年份
%z +hhmm 数字时区(例如,-0400)
%:z +hh:mm 数字时区(例如,-04:00)
%::z +hh:mm:ss 数字时区(例如,-04:00:00)
%:::z 数字时区带有必要的精度 (例如,-04,+05:30)
%Z 按字母表排序的时区缩写 (例如,EDT)

默认情况下,日期的数字区域以0 填充。
以下可选标记可以跟在"%"后:

- (连字符)不填充该域
_ (下划线)以空格填充
0 (数字0)以 0 填充
+ 以零填充,并且在大于四个数位的未来年份之前放置 '+' 符号
^ 如果可能,使用大写字母
# 如果可能,使用相反的大小写

在任何标记之后还允许一个可选的域宽度指定,它是一个十进制数字。
作为一个可选的修饰声明,它可以是E,在可能的情况下使用本地环境关联的
表示方式;或者是O,在可能的情况下使用本地环境关联的数字符号。

示例:
将 epoch(1970-01-01 UTC)以来的秒数转换为日期
$ date --date='@2147483647'

显示美国东海岸的当前时间(请使用 tzselect(1) 来查询 TZ 的具体数值)
$ TZ='America/Los_Angeles' date

显示美国东海岸下一个星期五当地时间早上九点
$ date --date='TZ="America/Los_Angeles" 09:00 next Fri'

iostat 查看磁盘性能

1
2
3
4
5
6
7
8
[heibanbai@heibanbai01 ~]$ iostat --help
用法: iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]
选项:
[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ --dec={ 0 | 1 | 2 } ] [ --human ] [ -o JSON ]
[ [ -H ] -g <用户组名> ] [ -p [ <设备> [,...] | ALL ] ]
[ <设备> [...] | ALL ]

sar 查看系统负载

  • sar -u 1 10 :每秒显示⼀次 CPU 使⽤情况,共显示 10 次。 Ctrl + C 退出。
  • sar -d 1 10 :每秒显示⼀次磁盘 I/O 使⽤情况,共显示 10 次。 Ctrl + C 退出。
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
[heibanbai@heibanbai01 ~]$ sar --help
用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ]
主要选项和报告(报告名以方括号分隔):
-B 分页状况 [A_PAGE]
-b I/O 和传输速率信息状况 [A_IO]
-d 块设备状况 [A_DISK]
-F [ MOUNT ]
文件系统统计信息 [A_FS]
-H 巨大页面利用率 [A_HUGE]
-I { <中断列表> | SUM | ALL }
中断信息状况 [A_IRQ]
-m { <关键字> [,...] | ALL }
电源管理统计信息 [A_PWR_...]
关键字:
CPU CPU 瞬时时钟频率
FAN 风扇速度
\t\tFREQ\tCPU 平均时钟频率
IN 输入电压
TEMP 设备温度
\t\tUSB\t连接的 USB 设备
-n { <关键字> [,...] | ALL }
网络统计信息 [A_NET_...]
关键字:
DEV 网络接口
EDEV 网络接口(错误)
NFS NFS 客户端
NFSD NFS 服务端
SOCK Sockets (v4)
IP IP 流 (v4)
EIP IP 流 (v4)(错误)
ICMP ICMP 流 (v4)
EICMP ICMP 流 (v4)(错误)
TCP TCP 流 (v4)
ETCP TCP 流 (v4) (错误)
UDP UDP 流 (v4)
SOCK6 Sockets (v6)
IP6 IP 流 (v6)
EIP6 IP 流 (v6)(错误)
ICMP6 ICMP 流 (v6)
EICMP6 ICMP 流 (v6) (错误)
UDP6 UDP 流 (v6)
FC Fibre channel HBAs
SOFT 基于软件的网络处理

-q 队列长度和平均负载统计信息 [A_QUEUE]
-r [ ALL ]
内存利用率信息 [A_MEMORY]
-S 交换空间利用率信息 [A_MEMORY]
-u [ ALL ]
CPU 利用率信息 [A_CPU]
-v 内核表统计信息 [A_KTABLES]
-W 交换信息 [A_SWAP]
-w 任务创建与系统切换信息 [A_PCSW]
-y TTY 设备信息 [A_SERIAL]

包管理

rpm -qa 列出所有已安装的软件包
rpm -qi package 显示软件包的详细信息
rpm -ql package 列出软件包的⽂件列表
rpm -qf /path/to/file 查找⽂件属于哪个软件包
rpm -Uvh package.rpm 升级软件包
rpm -e package 卸载软件包
yum list 列出所有可⽤的软件包
yum list installed 列出所有已安装的软件包
yum search keyword 搜索软件包
yum info package 显示软件包的详细信息
yum install package 安装软件包
yum update package 升级软件包
yum remove package 卸载软件包
yum clean all 清除缓存
apt list 列出所有可⽤的软件包
apt list –installed 列出所有已安装的软件包
apt search keyword 搜索软件包
apt show package 显示软件包的详细信息
apt install package 安装软件包
apt update 更新软件包列表
apt upgrade 升级软件包
apt remove package 卸载软件包
apt autoremove 卸载不再需要的软件包
apt clean 清除缓存

蚂蚁再小也是肉🥩!


Linux命令
http://heibanbai.com.cn/posts/82734d8/
作者
黑伴白
发布于
2021年5月1日
许可协议

“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付