当前位置: 首页 > news >正文

Linux常用命令整理

本文将分享一些常用的Linux命令。根据功能的不同,大概分为以下几个方面,一是文件相关命令,二是进程相关命令,三是网络相关命令,四是磁盘相关命令,五是用户管理相关命令,六是系统命令。

1. 文件相关命令

ls:用于列出当前目录下文件和目录。

ls [选项] [文件/目录]
选项: 可用于控制 ls 命令的显示方式。
文件/目录: 指定要列出的文件或目录。常见选项:
-l: 长列表模式,显示详细的文件信息,包括权限、大小、修改时间、所有者等。
-a: 显示所有文件,包括隐藏文件(以 . 开头的)。
-h: 以人类可读的大小单位显示文件大小(如 KB、MB、GB)。
-r: 反转文件顺序。
-t: 按修改时间排序。比如列出当前目录下所有文件,包括隐藏文件:
ls -a

cd:用于改变当前工作目录。

cd ..: 切换到上级目录
cd /: 切换到根目录
切换到当前用户的 home 目录:cd ~
更改多个目录:cd Documents/Projects

mkdir:用于创建新目录。

创建单个目录:
mkdir 新目录创建多个目录:
mkdir 目录1 目录2 使用绝对路径创建目录:
mkdir /home/user/Documents/新文件夹-p: 创建目录的父级目录。
mkdir -p /home/user/Documents/新文件夹/子文件夹
这会创建 /home/user/Documents/新文件夹/子文件夹 所有必要父级目录。

rmdir:用于删除空目录.。

删除单个空目录:
rmdir 空目录-p:递归删除目录及所有子目录。使用 -p 选项时,需要确保要删除的目录是空目录,否则会产生错误。
递归删除 "project" 目录及其所有子目录
rmdir -p project

rm:用于删除文件和目录。

删除单个文件:
rm 文件名删除多个文件:
rm 文件1 文件2 文件3删除目录 (该目录为空):
rm 目录名选项:
-f: 强制删除文件,不询问确认。
-r: 递归删除目录和子文件/目录。使用 -r 选项会永久删除指定目录及其所有内容。
-i: 删除前询问确认。删除名为 "myfile.txt" 的文件:
rm myfile.txt递归删除 "project" 目录及其所有内容:
rm -r project

tourch:用于创建新文件,或更新已有文件的最后修改时间。

touch [选项] 文件名
选项:
-a 或 --atime: 仅更新文件的访问时间。
-m 或 --mtime: 只更新文件的修改时间。
-c 或 --no-create: 如果目标文件已存在,则不创建新文件,直接退出。
-t 时间戳: 设置文件的最后修改时间为指定的时间戳。时间戳的格式通常为 YYYYMMDDHHMMSS。创建名为 "newfile.txt" 的新空文件:
touch newfile.txt更新名为 "file.pdf" 的文件的访问时间和修改时间:
touch -a -m file.pdftouch 命令无法创建目录。
若指定的文件已存在,则执行 touch 命令不会改变文件内容,只会更新其最后修改时间。
如果使用 touch -t 设置文件的最后修改时间为未来时间,则系统会显示错误。

cp:


cp [选项] 源文件/目录 目标文件/目录
选项:
-i 或 --: 复制文件之前询问确认。
-f 或 --force: 如果目标文件已存在,则覆盖其,不询问确认。
-r 或 --recursive: 递归复制目录和子文件/目录。必要选项用于复制目录。
-p 或 --preserve: 保留源文件/目录的属性 (权限、所有者、时间戳等)。复制名为 "image.jpg" 的文件到桌面:
cp image.jpg ~/Desktop/复制名为 "project" 的目录及其所有内容到 "backup" 目录:
cp -r project backup/cp 命令不会创建父目录。如果目标目录不存在,则需要先创建。
当复制多个文件时,您可以将它们列出,或者使用通配符 (例如 *.txt ) 指定要复制的文件。

mv:用于移动或者重命名文件和目录。


mv [选项] 源文件/目录 目标文件/目录
选项:
-i 或 --: 移动文件之前询问确认。
-f 或 --force: 如果目标文件已存在,则覆盖它,不询问确认。
-n 或 --no-clobber: 如果目标文件已存在,则不覆盖它,会退出。移动文件:
mv sourcefile targetdirectory重命名文件:
mv sourcefile newfilename移动目录 (包含子目录和文件) :
mv source_directory targetdirectory比如:
移动名为 "report.docx" 的文件到 "documents" 目录:
mv report.docx documents/重命名名为 "file.txt" 的文件为 "newfile.txt":
mv file.txt newfile.txt移动名为 "music" 的目录到 "home" 目录:
mv music home/musicmv 命令不能直接创建父目录。
当移动文件到已经存在的目录时,如果目标filename 已经存在,并且没有使用 -f 选项,系统会提示您是否覆盖。

cat:用于连接并显示文件内容。

cat [选项] 文件名
选项:
-n: 在每一行末尾显示行号。
-b: 在每一行首显示空白字符对应的十进制编号。
-s: 合并连续的空白行。
-A: 显示所有非打印字符,包括空格、制表符、回车符等,并使用 ASCII 码表示。
-E: 显示所有非打印字符,包括空格、制表符、回车符等,并使用 ASCII 码表示。显示文件 "notes.txt" 内容并显示行号:
cat -n notes.txt连接文件 "data1.txt","data2.txt" 和 "data3.txt" 并输出到终端:
cat data1.txt data2.txt data3.txt > output.txt 将文件 "README.md" 的内容写入到另一个文件 "file.txt":
cat README.md > file.txt cat 命令会直接读取文件内容并输出,无法进行文件的修改。

more:用于分页显示文件内容。

more [选项] 文件名 
选项:
-n num: 每页显示 num 行。
-c: 显示目录符号。
-f: 忽略文件名的提示信息。
-r: 以 RAW 模式读取文件内容,不进行转义处理。
-d: 只显示文件名,不显示内容。交互模式:
空格键: 滚动下一屏内容。
回车键: 滚动下一屏内容。
上箭头键: 返回上一屏内容。
下箭头键: 前进下一屏内容。
** 数字:** 向前或向后跳到指定行。
q键: 退出 more 命令。
** /pattern:** 从当前位置开始搜索指定的模式,并跳转到匹配行。
?pattern: 从当前位置开始搜索反模式匹配的行。分页显示文件 "file.txt" 内容:
more file.txt分页显示文件 "log.txt" 内容,每页显示 10 行:
more -n 10 log.txt直接退出 more 命令,不显示内容
more -d file.txt搜索文件 "config.ini" 中包含 "port" 的所有行
more /config.ini /port
注意:more 命令只能一次显示一屏内容,以便于阅读和浏览大型文件。

less:用于分页显示文件内容,但它比more功能更加强大。

基本语法

less [选项] 文件名
选项:
-n num: 每页显示 num 行。
-r: 以 RAW 模式读取文件内容,不进行转义处理。
-s: 忽略文件名的提示信息。
-G: 忽略末尾空白行。交互模式:
空格键: 滚动下一屏内容。
回车键: 滚动下一屏内容。
上箭头键: 返回上一屏内容。
下箭头键: 前进下一屏内容。
** 数字:** 向前或向后跳到指定行。
** /pattern:** 从当前位置开始搜索指定的模式,并跳转到匹配行。
** ?pattern:** 从当前位置开始搜索反模式匹配的行。
=: 在当前行显示行号。
p 或 P: 显示当前行前/后的行。
b: 显示文件开头。
e: 显示文件结尾。
q: 退出 less 命令。分页显示文件 "log.txt" 内容,每页显示 20 行:
less -n 20 log.txt搜索文件 "config.ini" 中包含 "port" 的所有行
less /config.ini /port 在 less 命令中显示当前行的行号
less file.txt
=less 命令比 more 命令更强大,因为它支持搜索、标记、书签等更多功能。

head:用于显示文件开头部分的内容。

head [选项] 文件名
选项:
-n num: 显示文件的前 num 行。
-c num: 显示文件的前 num 字节。显示文件 "file.txt" 的前 10 行:
head -n 10 file.txt显示文件 "log.txt" 的前 5 行:
head -5 log.txt查看文件 "index.html" 的标题行:
head -n 1 index.html查看文件 "data.csv" 的前 100 字节:
head -c 100 data.csv

tail:用于显示文件末尾部分的内容。

tail [选项] 文件名
选项:
-n num: 显示文件的后 num 行。
-c num: 显示文件的后 num 字节。交互模式:
-f: 实时跟踪文件,当文件添加新内容时会滚动并显示。
-s num: 合并重复的行数之前的行数为 num。
-q: 静默模式,不显示文件名的提示信息。显示文件 "file.txt" 的最后 10 行:
tail -n 10 file.txt显示文件 "log.txt" 的最后 50 行:
tail -n 50 log.txt实时监控日志文件 "server.log" 的最新内容:
tail -f server.log

vi/vim: 文本编辑器。

Vim主要分为两种模式:命令模式和插入模式。命令模式:用于执行编辑操作,需要使用命令来控制编辑器的行为。
插入模式:用于输入文本内容。vim filename:打开名为 "filename" 的文件。如果文件不存在,vim将创建新文件。打开一个文件后,默认处于命令模式。按下 i 键进入插入模式按下 Esc 键返回命令模式。:w 键保存文件
:wq 键保存文件并退出
:q! 键强制退出,不保存文件退出编辑器:
:q! 关闭文件不保存
:q 保存文件后退出移动光标:
h:左移一格
j:下移一格
k:上移一格
l:右移一格
0:移动到行首
$:移动到行尾
gg:移动到文件开头
G:移动到文件末尾删除文字:
x:删除光标所在字符
dw:删除光标所在词
dd:删除整行搜索:
/pattern:向前搜索 "pattern"
?pattern:向后搜索 "pattern"注释:
在每一行开头添加尖号 ( # ),实现注释

find:用于查找文件和目录。

find 路径 参数
常用参数:
路径:指定查找的起始路径。如果不指定路径,默认从当前目录开始查找。
参数:用来指定查找的条件和操作。
. 表示当前目录按文件名查找:
find . -name "*.txt"
这条命令在当前目录及其所有子目录中查找所有以 .txt 结尾的文件,并打印它们的路径。按文件类型查找:
find . -type f
这条命令查找当前目录及其所有子目录中的所有普通文件,并打印它们的路径。-type d 可以查找目录。按文件大小查找:
find . -size +1M
这条命令查找当前目录及其所有子目录中大小大于1MB的文件,并打印它们的路径。-size -1M 可以查找小于1MB的文件。按文件权限查找:
find . -perm 644
这条命令查找当前目录及其所有子目录中文件权限为 644 的文件,并打印它们的路径。按时间戳查找:
find . -mtime -7
这条命令查找当前目录及其所有子目录中最近7天内修改过的文件,并打印它们的路径。-mtime +7 则可以查找7天前修改过的文件。打印文件路径:
find . -name "*.log" -print
这条命令查找当前目录及其所有子目录中所有以 .log 结尾的文件,并逐行打印它们的路径。查找当前目录及其所有子目录中的所有普通文件,并将它们的权限修改为 644。
find . -type f -exec chmod 644 {} \;
或者
find . -type f -exec chmod 644 {} +
上述写法会将 find 找到的文件一次性传递给 chmod 命令,而不是每找到一个文件就执行一次 chmod。这种方式可以在性能上稍微优化,特别是在处理大量文件时。find . -name "*.jpg" -exec cp {} /backup \;
这条命令查找当前目录及其所有子目录中所有以 .jpg 结尾的文件,并将它们复制到 /backup 目录。

grep:用于在文件中搜索指定文本。

grep 选项 模式 文件名
常用选项:
-i: 忽略大小写。
-r 或 -R: 递归地在目录中搜索文件。
-n: 显示匹配行及其行号。
-v: 显示不匹配的行。
-E: 使用扩展正则表达式。
-F: 使用固定字符串(Fixed Strings)。
-o: 只显示匹配的部分。
-w: 匹配整个单词。
-c: 统计匹配的行数。
-l: 列出包含匹配的文件名。
-L: 列出不包含匹配的文件名。在文件中查找特定文本:
grep "pattern" file.txt
这条命令会在 file.txt 中查找包含 pattern 的所有行,并将它们打印出来。忽略大小写进行搜索:
grep -i "pattern" file.txt
使用 -i 选项可以忽略大小写,例如查找 Pattern、PATTERN、pattern 等都会匹配。递归地在目录中搜索文件:
grep -r "pattern" directory/
使用 -r 选项可以递归地在指定目录 directory/ 及其子目录中搜索包含 pattern 的所有文件。显示匹配行及其行号:
grep -n "pattern" file.txt
使用 -n 选项可以显示匹配行及其行号,方便定位匹配的具体位置。仅显示匹配的部分:
grep -o "pattern" file.txt
使用 -o 选项可以仅显示匹配的部分,而不是整行内容。统计匹配的行数:
grep -c "pattern" file.txt
使用 -c 选项可以统计匹配的行数而不显示具体匹配内容。显示不匹配的行:
grep -v "pattern" file.txt
使用 -v 选项可以显示不包含 pattern 的所有行。匹配整个单词:
grep -w "word" file.txt
使用 -w 选项可以确保只匹配整个单词 word,而不是单词的一部分。列出包含匹配的文件名:
grep -l "pattern" *.txt
使用 -l 选项可以列出所有包含 pattern 的文件名,而不显示具体匹配内容。查找 file.txt 中完全匹配 "exact string" 的行。
grep -F "exact string" file.txt

(tar,gzip):用于打包和解压文件。

归档文件通常是一个或多个文件的集合,它们可能被压缩以节省空间。归档文件通常使用.tar扩展名,可能还会附带其他压缩方法,如.gz(代表gzip)或.bz2(代表bzip2)。例如:
file.tar 是一个未压缩的归档文件。
file.tar.gz 是一个使用gzip压缩的归档文件。
file.tar.bz2 是一个使用bzip2压缩的归档文件。tar命令用法1.创建归档文件
tar -cvf archive.tar file1 file2 ... 
-c:创建一个新的归档文件。
-v:显示详细的操作过程(verbose),可以查看哪些文件被添加到归档中。
-f archive.tar:指定归档文件的名称。创建一个名为 backup.tar 的归档文件,包含当前目录下所有文件和子目录:
tar -cvf backup.tar .创建一个名为 documents.tar 的归档文件,仅包含当前目录下的 docs 文件夹:
tar -cvf documents.tar docs2. 查看归档文件内容
tar -tvf archive.tar 
-t:显示归档文件中包含的文件列表。查看 backup.tar 中包含的文件列表:
tar -tvf backup.tar3. 解压归档文件
tar -xvf archive.tar  
-x:解压归档文件中的内容。解压 backup.tar 中的文件到当前目录:
tar -xvf backup.tar4. 添加文件到已存在的归档文件
tar -rvf archive.tar newfile.txt  
-r:在已存在的归档文件末尾添加文件。向 backup.tar 中添加新文件 important.txt:
tar -rvf backup.tar important.txt5. 从归档文件中删除文件
tar --delete -f archive.tar file_to_delete.txt  
--delete:从归档文件中删除指定的文件。从 backup.tar 中删除 oldfile.txt:
tar --delete -f backup.tar oldfile.txt6. 其他常用选项
-z:通过 gzip 压缩归档文件(通常用 .tar.gz 扩展名)。
-j:通过 bzip2 压缩归档文件(通常用 .tar.bz2 或 .tbz 扩展名)。
-C:切换到指定目录后执行操作。gzip命令用法1.基本用法
压缩文件,生成 filename.gz
gzip filename gzip example.txt
这将生成一个名为 example.txt.gz 的压缩文件,并删除原始的 example.txt 文件。2. 解压缩文件
解压缩文件 filename.gz
gzip -d filename.gz  解压缩 example.txt.gz 文件:
gzip -d example.txt.gz3. 查看压缩比和文件信息gzip -l filename.gz 
显示压缩文件的信息查看 example.txt.gz 的压缩信息:
gzip -l example.txt.gz4. 压缩选项
gzip 命令本身并不提供太多复杂的选项,它主要用于简单的压缩和解压缩操作。
以下是一些常见的压缩选项:
-f:强制压缩,即使文件已经存在或者已经压缩过。
-k:保留原始文件,即不删除原始文件,而是保留压缩后的文件副本。强制压缩 example.txt,即使已经存在 example.txt.gz:
gzip -f example.txt保留原始文件 example.txt,并且生成 example.txt.gz:
gzip -k example.txt默认情况下,gzip 在压缩文件时会删除原始文件,并生成 .gz 后缀的压缩文件。使用 -k 选项可以保留原始文件。
gzip 不支持直接压缩多个文件或目录。如果需要压缩多个文件,通常会结合 tar 命令来先打包成 .tar 文件,然后再用 gzip 进行压缩。

chmod:用于更改文件或目录的权限(权限控制)。

chmod [选项] 模式 文件名
常用选项:
-R:递归地应用权限更改到目录及其子目录和文件。
-v:显示详细的权限更改信息。
-c:仅在发生更改时显示操作信息。chmod 命令的模式可以使用两种方法来指定权限:
1. 符号模式:
符号模式允许你通过符号来指定权限的增加或减少。它的基本语法如下:
chmod [ugoa...][[+-=][rwxXstugo...]...][文件名]
u:所有者(user)权限。
g:所属组(group)权限。
o:其他用户(others)权限。
a:所有用户(相当于 ugo 的组合)。权限符号包括:
+:增加权限。
-:减少权限。
=:设置权限。权限标志:
r:读权限。
w:写权限。
x:执行权限。给文件的所有者增加执行权限。
chmod u+x filename2. 数字模式:
数字模式使用数字来指定权限,每个权限用数字表示如下:
4:读权限(r)。
2:写权限(w)。
1:执行权限(x)。将这些数字按照权限组合起来,每个组合的总和就是权限的数字表示。例如:
7:rwx(读、写、执行权限)。
6:rw-(读、写权限)。
5:r-x(读、执行权限)。
4:r--(只读权限)。给文件设置如下权限:所有者(user)具有读、写、执行权限(7),所属组(group)和其他用户(others)具有读、执行权限(5)。
chmod 755 filename给文件添加执行权限:
chmod +x filename递归更改目录及其子目录的权限:
chmod -R 755 directoryname显示详细的权限更改信息:
chmod -v 644 filename仅在发生更改时显示操作信息:
chmod -c 600 filename

chown:用于更改文件或目录的所有者。

chown [选项] 新所有者 文件或目录
常用选项:
-R:递归地更改指定目录及其所有子目录和文件的所有者。
-v:显示详细的操作信息。
-c:仅在更改了文件所有者时显示操作信息。参数说明:
新所有者:可以是用户名、用户ID、用户:组合的形式(将文件所有者更改为指定用户和组合)或者直接是组名。如果只提供用户名或用户ID,文件的所属组不会更改。
文件或目录:要更改所有者的文件名或目录名。将 filename 文件的所有者更改为 user1:
chown user1 filename递归地将 directoryname 目录及其所有子目录和文件的所有者更改为 user2,同时将所属组更改为 group2:
chown -R user2:group2 directoryname将 filename 文件的所属组更改为 group3,而文件所有者不变:
chown :group3 filename将文件 filename 的所有者和所属组都更改为用户ID为 1001 的用户,组ID也为 1001 的组:
chown 1001:1001 filename递归地将 directoryname 目录及其所有子目录和文件的所有者更改为 user3,但所属组不会更改:
chown -R user3 directoryname只有超级用户(root)才能更改其他用户的文件所有者。一般用户只能更改自己拥有的文件或目录的所有者。

chgrp:用于更改文件或目录的所属组。

chgrp [选项] 新组名 文件或目录
常用选项:
-R:递归地更改指定目录及其所有子目录和文件的所属组。
-v:显示详细的操作信息。
-c:仅在更改了文件所属组时显示操作信息。参数说明:
新组名:可以是组名或者组ID。
文件或目录:要更改所属组的文件名或目录名。将文件的所属组更改为指定组:
chgrp group1 filename
这个命令将 filename 文件的所属组更改为 group1。递归地更改目录及其内容的所属组:
chgrp -R group2 directoryname
这个命令将递归地将 directoryname 目录及其所有子目录和文件的所属组更改为 group2。使用组ID来更改文件的所属组:
chgrp 1002 filename
这个命令将文件 filename 的所属组更改为组ID为 1002 的组。chown 命令可以同时更改文件的所有者和所属组,而 chgrp 命令只能更改所属组。

pwd:用于显示当前工作目录的路径

echo:用于打印输出文本或变量内容到标准输出

2. 进程相关命令

ps:用于显示进程状态。

ps [options]
常用选项:
-e: 显示所有进程,包括其他用户的进程。
-f: 显示完整格式,包括父进程 ID (PPID)、CPU 使用情况等。
-l: 长格式显示,显示更多的信息,如进程状态、执行时间等。
-u user: 显示特定用户的进程信息。
-p pid: 显示指定进程 ID (PID) 的信息。
-o format: 自定义输出格式。
-a: 显示所有终端(包括与终端无关的)的进程。
-x: 显示没有控制终端的进程。显示当前所有进程:
ps
这会显示当前终端下运行的所有进程的简要信息,如进程 ID (PID) 和命令名。显示所有进程的详细信息:
ps -ef
这会显示系统中所有进程的详细信息,包括进程的所有者、PID、父进程 ID (PPID)、CPU 使用率、内存占用等。显示特定用户的进程:
ps -u username
这会显示特定用户 username 运行的所有进程的信息。可以用于查看某个用户的进程状态。查找特定进程 ID (PID) 的信息:
ps -p pid
这会显示指定 PID 的进程信息,例如 ps -p 1234 将显示 PID 为 1234 的进程详细信息。显示所有进程的全格式信息:
ps -efl
这会以长格式显示所有进程的详细信息,包括更多的字段如进程状态、启动时间、CPU 时间等。查看系统中所有进程的树形结构:
ps -e --forest
这会以树形结构显示所有进程的关系,包括父子进程的层级关系,有助于理解进程之间的衍生关系。显示没有控制终端的进程:
ps -x
这会显示所有没有控制终端的进程,这些进程通常是守护进程或者后台任务。自定义输出格式:
ps -o pid,ppid,user,%cpu,%mem,cmd
这会自定义输出字段,仅显示指定的字段如 PID、PPID、用户、CPU 使用率、内存使用率和命令名。进程状态字段可以包括 R(运行)、S(睡眠)、D(不可中断睡眠)、Z(僵尸)、T(停止)等

top和htop:动态显示系统中的进程和资源使用情况。

top
输入 top 命令即可启动 top,默认情况下会按照 CPU 使用率进行排序并显示进程列表。常用交互命令:
q:退出 top。
h:显示帮助信息。
k:终止选中的进程。
1:显示各 CPU 核心的详细信息。
f:添加或移除显示的字段。选项:
-u username:只显示特定用户的进程。
-p PID:显示指定 PID 的进程信息。
-o field1,field2,...:自定义输出字段。htop
输入 htop 命令启动 htop,它是 top 的增强版本,提供了更丰富的功能和更直观的界面。htop 使用彩色显示,区分不同的进程状态和资源使用情况,使信息更直观。并且提供了更多的交互命令和操作选项,可以通过函数键进行快捷操作。常用交互命令:
F1:显示帮助信息。
F4:筛选进程,按名称或其它条件过滤。
F5:刷新显示。
F9:选择进程操作,如终止进程、优先级调整等。
F10:退出 htop。选项:
-u username:只显示特定用户的进程。
-p PID:显示指定 PID 的进程信息。
-d seconds:指定刷新间隔时间。top vs htop:
top 是最基本的进程查看工具,可用性强。
htop 提供了更加交互化和信息丰富的界面,适合需要更详细信息和更好用户体验的场景。

kill:用于终止进程。

kill [options] PID
PID 是要终止的进程的进程号(Process ID)。
options 是可选的参数,用于指定不同的信号或调整 kill 命令的行为。常用信号:
SIGTERM (15):默认信号,请求终止进程。通常会允许进程做清理工作,然后自行退出。
SIGKILL (9):强制终止进程。该信号会立即终止进程,不允许进程做清理操作。
SIGHUP (1):挂起信号。通常用于重新启动进程,如重新加载配置文件等。选项
-signal 或 -s signal:指定要发送的信号类型。例如,-9 或 -SIGKILL 都是发送 SIGKILL 信号。
-l:显示支持的所有信号列表。
-a:不实际发送信号,仅检查进程是否存在并可以发送信号。终止进程号为 12345 的进程:
kill 12345使用 SIGKILL 强制终止进程:
kill -9 12345重新启动进程:
kill -1 12345显示支持的所有信号列表:
kill -l

nice 和 renice: 用于调整进程优先级。

nice 命令用于启动新进程时设置其优先级。nice [options] command [arguments]
command 是要执行的命令或程序。
arguments 是命令的参数。优先级调整
nice 命令通过调整进程的优先级来控制 CPU 分配。优先级范围从 -20(最高优先级)到 19(最低优先级),默认值是 0。增加优先级:较高的优先级值意味着进程更容易获取 CPU 时间。
nice -n <priority> command
其中 <priority> 是一个数值,在 -20 到 19 之间。例如,nice -n 10 command 会以较高的优先级运行 command。降低优先级:较低的优先级值使得进程更少获取 CPU 时间。
nice -n -<priority> command
例如,nice -n -10 command 会以较低的优先级运行 command。以较高优先级运行 gzip 压缩文件:
nice -n 10 gzip filename以较低优先级运行长时间运行的任务:
nice -n -10 ./long_running_task.shrenice 命令用于修改已经运行的进程的优先级。与 nice 不同,renice 可以调整已经运行中的进程的优先级。renice [options] priority [[-p] pid | [-g] pgrp | [-u] user]
priority 是要设置的新优先级。
-p pid:根据进程号 (PID) 修改优先级。
-g pgrp:根据进程组号 (Process Group ID) 修改优先级。
-u user:根据用户名修改优先级。提高进程号为 12345 的进程优先级:
renice +10 -p 12345降低进程组号为 54321 的所有进程优先级:
renice -5 -g 54321

3. 网络相关命令

ifconfig:用于配置和显示网络信息

ifcopnfig命令用法显示所有网络接口信息:
ifconfig
这会列出所有网络接口的详细信息,包括接口名称、IP地址、MAC地址、子网掩码、广播地址等。显示特定网络接口信息:
ifconfig eth0
这将显示 eth0 接口的详细配置信息。配置网络接口:
设置IP地址和子网掩码:
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
这条命令将 eth0 接口配置为IP地址 192.168.1.100,子网掩码 255.255.255.0。启用接口:
sudo ifconfig eth0 up
这会启用 eth0 接口,使其可以开始进行网络通信。禁用接口:
sudo ifconfig eth0 down
这会禁用 eth0 接口,停止其进行网络通信。指定广播地址:
可以使用 broadcast 参数来指定接口的广播地址:
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255显示所有接口信息:
如果要显示所有接口(包括未激活的),可以使用 -a 参数:
ifconfig -aifconfig 命令所做的修改通常是临时的,系统重启后会重置。要永久修改网络配置,需要编辑相应的配置文件。/etc/network/interfaces(Debian/Ubuntu)或 /etc/sysconfig/network-scripts/ifcfg-eth0(CentOS/RHEL)。

ip:用于管理网络接口、路由表、地址等。

显示当前网络接口信息:
ip address
这会列出所有网络接口的配置信息,包括激活和未激活的接口。显示路由表:
使用 ip route 命令可以查看当前系统的路由表,显示系统如何决定发送数据包的目标地址:
ip route
这会列出所有的路由表项,包括目标网络、网关、接口等信息。显示链接状态:
ip link
使用 ip link 命令可以显示网络接口的链接状态,包括接口名称、状态(UP或DOWN)、MAC地址等设置IP地址和子网掩码:
sudo ip address add 192.168.1.100/24 dev eth0
这会将 eth0 接口配置为IP地址 192.168.1.100,子网掩码为 255.255.255.0。使用 ip link 命令可以启用或禁用网络接口:
sudo ip link set dev eth0 up
这会启用 eth0 接口,使其可以开始进行网络通信。
sudo ip link set dev eth0 down
这会禁用 eth0 接口,停止其进行网络通信。修改MAC地址:
使用 ip link 命令可以修改网络接口的MAC地址
sudo ip link set dev eth0 address 00:11:22:33:44:55
这会将 eth0 接口的MAC地址修改为 00:11:22:33:44:55。添加路由:
使用 ip route add 命令可以手动添加路由
sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
这条命令添加了一个到 192.168.2.0/24 子网的路由,使用 192.168.1.1 作为网关,通过 eth0 接口。删除路由:
使用 ip route del 命令可以删除路由
sudo ip route del 192.168.2.0/24
这条命令将删除路由表中到 192.168.2.0/24 子网的路由。修改路由:
使用 ip route change 命令可以修改现有路由的参数,例如修改下一跳的地址或出接口。

netstat:用于显示网络状态。

使用 netstat 命令可以显示当前系统上所有的网络连接信息,包括TCP、UDP、UNIX域套接字等:
netstat显示特定类型的连接:
可以使用 -t(TCP)、-u(UDP)、-n(数字格式)、-p(显示进程)等选项来筛选显示特定类型的连接,例如:
netstat -t           # 显示所有TCP连接
netstat -u           # 显示所有UDP连接
netstat -n           # 显示数字格式(IP地址而非域名)
netstat -p           # 显示与连接关联的进程
可以结合使用这些选项,例如 netstat -tunp 将显示所有TCP和UDP连接,并且显示与连接相关联的进程。显示网络接口信息
显示网络接口统计信息:
使用 -i 选项可以显示网络接口的统计信息,包括接口名称、接收和发送的数据包数量、错误等:
netstat -i显示路由表信息:
使用 -r 选项可以显示系统的路由表信息,包括目标网络、网关、接口等:
netstat -r显示UNIX域套接字:
使用 -x 选项可以显示所有UNIX域套接字(本地套接字)的信息:
netstat -x

ping:用于测试与目标主机的网络连接

基本用法:
ping target_address
其中 target_address 可以是主机名(例如 example.com)或者IP地址(例如 192.168.1.1)。持续 ping 测试:
使用 -c 选项可以指定发送 ICMP 请求的次数。例如,要发送5个 ICMP 请求:
ping -c 5 target_address
这将会发送5个 ICMP 请求到目标主机,并显示每次请求的回应情况。连续 ping 测试:
使用 -i 选项可以设置 ICMP 请求之间的时间间隔(单位为秒)。例如,设置每隔1秒发送一个 ICMP 请求:ping -i 1 target_address
这将持续发送 ICMP 请求,直到手动中断(Ctrl+C)。指定包大小:
使用 -s 选项可以指定 ICMP 数据包的大小(字节)。例如,发送一个大小为100字节的 ICMP 请求:
ping -s 100 target_address
这在测试网络连通性时可以测试不同大小的数据包对网络的影响。显示时间戳:
使用 -D 选项可以在每行输出中显示时间戳,以便更精确地测量延迟:
ping -D target_address设置超时时间:
使用 -W 选项可以设置等待目标主机响应的超时时间(单位为秒)。例如,设置超时时间为2秒:
ping -W 2 target_address
如果目标主机在2秒内未响应,则视为超时。使用特定网络接口:
使用 -I 选项可以指定使用特定的网络接口发送 ICMP 请求。例如,使用 eth0 接口发送 ICMP 请求:
ping -I eth0 target_addressping 命令的输出通常显示每个 ICMP 回显应答的统计信息,例如:
每个包的回应时间(RTT,Round-Trip Time)。
丢包率(如果有的话)。
发送的字节数和接收的字节数。

traceroute:用于追踪数据包从本地主机到目标主机的网络路径

基本的 traceroute 追踪:
traceroute target_address
其中 target_address 可以是主机名(例如 example.com)或者IP地址(例如 192.168.1.1)。指定使用的协议:
使用 -I 选项可以指定使用 ICMP 协议进行 traceroute:
traceroute -I target_address
使用 -U 选项可以指定使用 UDP 协议进行 traceroute:
traceroute -U target_address
默认情况下,traceroute 使用 UDP 协议。指定端口号:
使用 -p 选项可以指定发送的 UDP 数据包的目标端口号。这对于避开某些防火墙规则或特定的路由器过滤规则可能有用:
traceroute -p port_number target_address设置最大跃点数:
使用 -m 选项可以指定 traceroute 搜索路由路径的最大跃点数(默认为30):
traceroute -m max_hops target_address
这对于控制 traceroute 的最大深度和减少不必要的跟踪尝试很有用。显示延迟:
使用 -q 选项可以指定每个 TTL 值发送的查询数(默认为3),从而显示每个路由器的平均延迟:
traceroute -q queries target_address显示IP地址:
使用 -n 选项可以以数字形式显示IP地址,而不是尝试进行反向域名解析:
traceroute -n target_addresstraceroute 命令的输出通常显示每个路由器(每一跳)的IP地址、每一跳的延迟(RTT,Round-Trip Time)、跳数(TTL)等信息。在每一跳的行中,通常会显示如下信息:
序号:显示当前跃点数。
IP地址:显示当前路由器的IP地址。
延迟:显示到达当前路由器的往返时间。

route: 显示和操作 IP 路由表

显示当前路由表:
route
这将列出系统当前所有的路由信息,包括目标网络、网关、掩码、接口和标志等。显示详细信息:
使用 -n 选项可以以数字格式显示IP地址,而不是尝试进行反向域名解析:
route -n
这对于查看路由表时,避免等待反向域名解析的延迟很有帮助。添加路由:
使用 add 子命令可以添加一个新的路由。
将网络 192.168.10.0/24 通过网关 192.168.1.1 添加到接口 eth0:
sudo route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0
add:添加路由。
-net:指定目标网络。
netmask:指定子网掩码。
gw:指定网关。
dev:指定接口。删除路由:
使用 del 子命令可以删除一个现有的路由。
删除到网络 192.168.10.0/24 的路由:
sudo route del -net 192.168.10.0 netmask 255.255.255.0修改路由:
使用 change 子命令可以修改一个现有的路由。
将网关修改为 192.168.1.2:
sudo route change -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.1.2查看特定目标的路由信息:
使用 -n 选项加上目标IP地址可以查看特定目标的路由信息。
查看到主机 192.168.1.100 的路由:
route -n | grep 192.168.1.100route 命令的输出通常会列出每条路由的详细信息,包括目标网络、网关、掩码、接口和标志等。例如:
目标:显示目标网络或主机的IP地址。
网关:显示用于到达目标的下一跳路由器的IP地址。
掩码:显示目标网络的子网掩码。
接口:显示路由器的出口接口。
标志:显示路由的标志,例如 UG 表示此路由是默认网关。

wget:用于从网络下载文件。

下载单个文件:
wget URL
其中 URL 是要下载的文件的地址,可以是 HTTP、HTTPS 或 FTP 协议的链接。保存文件到指定位置:
使用 -O 选项可以指定保存下载文件的路径和文件名:
wget -O /path/to/save/file URL
这将把下载的文件保存到指定的路径和文件名。递归下载整个网站:
使用 -r 选项可以递归下载整个网站。这对于下载一个完整的静态网站非常有用:
wget -r URL
注意:递归下载可能会下载整个网站的所有链接,包括子链接,因此要谨慎使用,以免下载大量不必要的文件。限制递归深度:
使用 -l 选项可以限制递归的深度,即下载的链接层级:
wget -r -l depth URL
这将限制下载到指定的深度层级。断点续传:
使用 -c 选项可以启用断点续传功能。如果下载中断,可以继续下载未完成的部分而不是重新开始:
wget -c URL后台下载:
使用 -b 选项可以在后台运行 wget,允许你继续执行其他命令:
wget -b URL
下载的进度和日志会保存在 wget-log 文件中。限制下载速度:
使用 --limit-rate 选项可以限制下载速度,以避免占用过多带宽:
wget --limit-rate=100k URL
这将限制下载速度为每秒100KB。其他常用选项
-q:静默模式,减少输出。
-nv:非详细模式,减少详细输出。
-np:不递归上级目录。
-U:指定用户代理,模拟不同的浏览器访问。

curl:用于发送和接收数据

下载文件:
curl URL -o filename
这会将从 URL 下载的文件保存为 filename。显示下载进度:
使用 -# 选项可以显示下载进度条:
curl -# URL -o filename
这样会在下载过程中显示进度条。发送 GET 请求:
curl -X GET URL发送 POST 请求,并使用 -d 选项传递数据:
curl -X POST -d 'data' URL
这会将 data 作为 POST 请求的数据发送给 URL。使用 -H 选项可以设置请求头:
curl -H 'Content-Type: application/json' URL
这会将 Content-Type 设置为 application/json。使用 -o 或 -O 选项可以将响应保存到文件:
curl URL -o filename
-o 用于指定保存的文件名,-O 用于使用从 URL 中推断出的文件名保存。使用 -F 选项可以上传文件:
curl -F 'file=@localfile.txt' URL
这会将 localfile.txt 上传到 URL。HTTPS 请求:
curl 默认支持 HTTPS,不需要额外选项。使用 -u 选项可以进行基本的 HTTP 认证:
curl -u username:password URL
这会使用 username 和 password 进行 HTTP 基本认证。其他常用选项
-s:静默模式,减少输出。
-v:详细模式,显示详细的请求和响应信息。
-L:跟随重定向。
--cookie:发送和接收 cookies。
--header:添加自定义头部信息。

ssh:用于访问和管理远程计算机

连接到远程主机:
ssh username@hostname
其中 username 是远程主机的用户名,hostname 是远程主机的 IP 地址或域名。指定端口连接:
如果远程主机的 ssh 服务监听在非默认的端口(默认为 22),可以使用 -p 选项指定端口号:
ssh -p port username@hostname
其中 port 是 ssh 服务监听的端口号。使用 SSH 密钥对进行认证可以更安全地连接到远程主机,而不需要输入密码:
ssh -i path/to/private_key username@hostname
path/to/private_key 是本地的私钥文件路径。在 ssh 命令后面指定要在远程主机上执行的命令:
ssh username@hostname 'command'
这会连接到远程主机并执行 command。其他常用选项
-C:请求压缩所有数据以提高性能。
-v:详细模式,显示 ssh 的调试信息。

scp:用于在本地主机和远程主机之间传输文件,通过 SSH 协议进行加密传输

使用 scp 将本地文件传输到远程主机上:
scp /path/to/local/file username@hostname:/path/to/remote/location
/path/to/local/file 是本地文件的路径。
username 是远程主机的用户名。
hostname 是远程主机的 IP 地址或域名。
/path/to/remote/location 是远程主机上文件存放的路径。使用 scp 从远程主机获取文件到本地:
scp username@hostname:/path/to/remote/file /path/to/local/location
username 是远程主机的用户名。
hostname 是远程主机的 IP 地址或域名。
/path/to/remote/file 是远程主机上要获取的文件路径。
/path/to/local/location 是本地文件存放的路径。指定端口连接:
如果 ssh 服务监听在非默认的端口(默认为 22),可以使用 -P 选项指定端口号:
scp -P port /path/to/local/file username@hostname:/path/to/remote/location使用 SSH 密钥对进行认证:
可以使用 -i 选项指定私钥文件路径,以使用 SSH 密钥对进行认证:
scp -i /path/to/private_key /path/to/local/file username@hostname:/path/to/remote/location递归复制目录:
scp -r /path/to/local/directory username@hostname:/path/to/remote/location
-r 选项可以递归地复制整个目录及其内容。传输文件夹及其内容:
scp -r username@hostname:/path/to/remote/directory /path/to/local/location
-r 选项同样适用于传输整个文件夹及其内容。其他常用选项
-v:详细模式,显示详细的调试信息。
-C:请求压缩传输的数据以提高性能。
-p:保持文件的修改时间和访问时间。
-l:限制传输速率,以避免网络拥塞。确保远程主机的 SSH 服务和配置是安全的。
建议使用 SSH 密钥对进行认证,而不是在命令行中使用明文密码。
避免在不可信的网络环境中使用 scp,尤其是在未加密或不安全的网络中。

nslookup:用于查询 DNS信息

查询域名对应的 IP 地址:
nslookup example.com
这会输出 example.com 的 IP 地址记录,以及 DNS 解析过程中的相关信息。反向查询 IP 地址对应的域名:
使用 -type=PTR 选项可以进行反向查询,即查询 IP 地址对应的域名:
nslookup -type=PTR 8.8.8.8
这会输出 IP 地址 8.8.8.8 对应的域名。指定特定 DNS 服务器:
默认情况下,nslookup 使用操作系统配置的 DNS 服务器。可以使用 -querytype 选项指定查询的类型,以及 -server 选项指定特定的 DNS 服务器。
nslookup -querytype=MX example.com 8.8.8.8
这会查询 example.com 的邮件服务器记录(MX 记录),并使用 Google 的 DNS 服务器 8.8.8.8 进行查询。设置递归查询:
使用 -recurse 选项可以强制 nslookup 执行递归查询,即继续向上级 DNS 服务器查询,直至找到结果。
nslookup -recurse example.com显示详细信息:
使用 -debug 选项可以显示更详细的调试信息,包括 DNS 查询过程中的通信细节。
nslookup -debug example.com其他常用选项
-timeout:设置查询超时时间,单位为秒。
-queryclass:设置查询的类别(通常使用默认值 IN)。
-port:指定要连接的远程 DNS 服务器的端口号。A 记录(Address Record):
用途:将域名解析为 IPv4 地址。
示例:example.com 的 A 记录可以指定为 192.0.2.1,这样访问 example.com 就会被解析为 192.0.2.1。
AAAA 记录(IPv6 Address Record):
用途:将域名解析为 IPv6 地址。
示例:example.com 的 AAAA 记录可以指定为 2001:db8::1,这样访问 example.com 就会被解析为 2001:db8::1。MX 记录(Mail Exchange Record):
用途:指定邮件服务器的优先级和域名。
示例:example.com 的 MX 记录可以指定为 10 mail.example.com,这表示邮件应该发送到 mail.example.com,优先级为 10。NS 记录(Name Server Record):
用途:指定域名服务器(Name Server),负责解析特定域名的查询。
示例:example.com 的 NS 记录可以指定为 ns1.example.com 和 ns2.example.com,这些记录告诉其他 DNS 服务器去查询 ns1.example.com 和 ns2.example.com 来获取 example.com 的解析信息。CNAME 记录(Canonical Name Record):
用途:创建域名的别名,实现域名的重定向。
示例:www.example.com 的 CNAME 记录可以指定为 example.com,这样访问 www.example.com 就会被重定向到 example.com。

4. 磁盘相关命令

df:用于查看磁盘空间使用情况

显示当前系统上所有已挂载文件系统的磁盘空间使用情况:
df
一般包括下列输出信息:
Filesystem: 文件系统名称,比如 /dev/sda1。
Size: 文件系统总大小,以 GB 为单位。
Used: 文件系统当前已使用空间大小,以 GB 为单位。
Avail: 文件系统当前剩余空间大小,以 GB 为单位。
Use%: 文件系统使用率,以百分比表示。
Mounted on: 文件系统挂载点,即在文件系统中访问它的路径,比如 / 或 /mnt/data。显示特定文件系统的详细情况:
df /dev/sda1
这会显示 /dev/sda1 文件系统的。显示不同单位的存储空间:
df -m
-h 表示使用人类可读的单位(KB,MB,GB),-m 表示使用兆字节(MB)为单位。显示所有挂载点:
df -a 
这会显示所有已挂载的、隐藏的以及没有被其它命令挂载的块设备。只显示已使用的空间:
df --total
这会展示一个总计行的统计信息,包括总存储空间,已使用的存储空间,以及空闲存储空间。定制输出格式:
下列选项来定制输出格式。
df -T显示文件系统的类型
df -x type排除特定类型的文件系统排除man df 可以获取更多关于 df 命令的详细文档和用法说明。

du:用来显示文件和目录的空间信息。

du [选项] 文件/目录
常用选项:
-h: 以人类可读的单位(如 KB, MB, GB)显示文件大小,而非原始的块大小。
-a: 显示所有子目录的大小,不仅仅是直接子目录。
-c: 在最后显示总大小。
-d: 指定要显示指定深度(可选:0-N)的目录结构信息。
-s: 只显示目录的总大小,而不显示其子目录内的大小。
-b:显示文件和目录的大小,以字节为单位。显示当前目录下所有文件和目录的大小(以GB为单位):
du -sh *显示当前目录下所有文件和子目录的大小 (以MB单位) :
du -hm *仅显示单个目录的大小:
du -sb /home/user/Documents 显示指定目录下所有子目录的大小 (以KB为单位,显示):
du -a /opt/data只显示指定目录的总大小而不显示子目录的大小:
du -s /var/logdu 命令会将文件大小展示为整体的占用空间。

lsblk:用于列出系统的块设备信息。

sudo lsblk [选项]常用选项:
-f : 显示文件系统。
-o : 指定要显示的输出格式 ( --print --version 查看可用格式)。
-h : 以更易读的单位显示设备大小 (KB、MB、GB...)一般包括下列输出信息:
NAME: 是该块设备的名称,例如 /dev/sda 。
MAJ:MIN: 是主设备号和次设备号。
RM: 表示删除标记,0 表示未删除,1 表示已删除。
SIZE: 显示设备的大小。
RO: 表示只读标记,0 表示可读写,1 表示只读。
TYPE: 显示设备类型,例如 disk(硬盘),part(分区),loop(虚拟磁盘等)。
MOUNTPOINT: 显示挂载点,即该设备被挂载到的目录。查看所有块设备信息:
sudo lsblk查看指定设备的信息:
sudo lsblk /dev/sdb查看指定类型设备的信息 (例如分区):
sudo lsblk -o NAME,SIZE,TYPE,MOUNTPOINT | grep 'part'

fdisk:用于管理磁盘分区 

fdisk [选项] 设备文件
设备文件: 通常是 /dev/sda 类似的形式,表示要操作的分区磁盘。常用选项:
-l : 列出磁盘分区表。
-n : 在创建分区时提供交互式帮助提示。
-C : 列出设备的默认分区表类型 (例如,msdos)。显示磁盘分区表:
sudo fdisk -l
这会列出系统中所有已连接的磁盘及其分区信息。进入fdisk交互式模式:
sudo fdisk /dev/sda
你会在 fdisk 交互式模式下看到各种操作命令。创建新分区:
在fdisk模式下,输入 n 创建新分区。设置分区类型:
在fdisk模式下,输入 t 可以设置分区类型。退出fdisk模式:
进入fdisk模式后,输入 w 保存更改并退出。fdisk 操作可能会导致数据丢失,确保备份重要数据。
在使用 fdisk 之前,请使用 lsblk 或 df 命令确认正在操作的磁盘和分区是正确的。

5. 用户管理相关命令

id:用于显示当前用户或指定用户的用户身份信息

id [选项] [用户名]
常用选项:
-u : 显示用户的 UID(用户标识号)。
-g : 显示用户所属的基本组的 GID(组标识号)。
-G : 显示用户所属的所有附加组的 GID(组标识号),多个 GID 之间用逗号分隔。
-n : 显示用户名而不是 UID。
-r : 显示实际的 UID/GID,而不是有效的(可能是映射后的)。
-Z : 显示安全上下文。显示当前用户的 UID 和 GID:
id显示特定用户的 UID 和 GID:
id 用户名显示用户名而不是 UID:
id -n 用户名显示用户所属的所有附加组的 GID:
id -G 用户名

useradd:用于创建新的用户账户

sudo useradd [选项] 用户名常用选项:
-c "用户描述" : 设置用户描述(comment)。
-d 目录 : 设置用户主目录(home directory)。
-g 组名称 : 设置用户所属的用户组。
-G 组名称1,组名称2, ... : 给用户添加多个用户组。
-s /bin/bash : 设置用户的默认 shell,默认为/bin/bash。
-m : 自动创建用户的主目录。
-U : 没有密码的用户 (必须指定密码后再使用该用户)。创建一个新的用户:
sudo useradd -c "系统管理员" -m 新用户
这将创建名为 "新用户" 的用户,并设置其描述为 "系统管理员", 同时自动创建用户的 /home/新用户 主目录。设置用户密码:
sudo passwd 新用户
系统会提示您输入新密码。添加用户到特定组:
sudo useradd -g admin -G wwwdata 用户名
这会将名为 "用户名" 的用户添加至 "admin" 组,并同时添加至 "wwwdata" 组

userdel:用于删除用户账户及其相关配置和文件

sudo userdel [选项] 用户名
常用选项:
-r : 删除用户的主目录及其内容。
-f : 强制删除用户,即使用户当前登录或拥有进程。
-Z : 删除用户的 SELinux 用户。
-h : 显示帮助信息和选项。删除用户(保留主目录):
sudo userdel 用户名
这会删除名为 "用户名" 的用户账户,但会保留其主目录及其内容。删除用户及其主目录:
sudo userdel -r 用户名
这会删除名为 "用户名" 的用户账户,并同时删除其主目录及其内容。强制删除用户(即使用户当前登录):
sudo userdel -f 用户名
这会强制删除名为 "用户名" 的用户账户,即使该用户当前已登录或有运行中的进程。

passwd:用于更改用户的密码

passwd [选项] [用户名]
常用选项:
-l : 锁定用户账户,使其无法登录。
-u : 解锁用户账户,允许其登录。
-d : 使用户密码无效(删除密码),但用户仍然可以登录。
-e : 强制用户在下次登录时更改密码。更改当前用户的密码:
passwd更改其他用户的密码(需要管理员权限):
sudo passwd 用户名锁定用户账户:
sudo passwd -l 用户名
这会禁用指定用户账户的登录,用户将无法使用该账户登录系统。解锁用户账户:
sudo passwd -u 用户名
如果之前使用 -l 锁定了用户账户,这个命令可以解锁账户,使其恢复登录权限。删除用户密码(用户仍然可以登录但没有密码):
sudo passwd -d 用户名
这将删除指定用户的密码,但仍允许用户使用其他身份验证方法登录系统。强制用户下次登录时更改密码:
sudo passwd -e 用户名
这会将用户标记为需要强制更改密码。用户在下次登录时将被提示输入新密码。

chage:用于更改用户账户的过期信息

chage [选项] 用户名
常用选项:
-l : 显示用户的当前密码和账户过期信息。
-M : 设置密码过期后的最大天数。
-m : 设置密码过期前的最小天数。
-E : 设置账户过期的绝对日期,格式为 YYYY-MM-DD。
-I : 设置账户过期后的不活动期限,单位为天数。
-d : 设置账户的上次修改密码的日期,格式为 YYYY-MM-DD。显示用户的当前密码和账户过期信息:
chage -l 用户名
这将显示用户的密码过期信息和账户过期信息,包括密码过期的最后修改日期和账户过期日期等。设置密码过期后的最大天数(例如 90 天):
sudo chage -M 90 用户名
这会将指定用户的密码过期后最大允许使用天数设置为 90 天。超过这个天数后,用户将被提示修改密码。设置密码过期前的最小天数(例如 7 天):
sudo chage -m 7 用户名
这会设置用户需要在密码过期前至少在 7 天内修改密码。这可以防止用户在密码过期当天才修改密码。设置账户过期的绝对日期(例如 2026-01-01):
sudo chage -E 2026-01-01 用户名
这将设置用户账户的过期日期为 2026 年 1 月 1 日,过期后用户将无法登录系统。设置账户过期后的不活动期限(例如 30 天):
sudo chage -I 30 用户名
如果用户在这段不活动期限内没有登录系统,账户将被视为过期。设置账户的上次修改密码的日期(例如 2023-01-01):
sudo chage -d 2023-01-01 用户名
这会设置用户账户的上次修改密码的日期为 2023 年 1 月 1 日,这对于某些安全策略和审计目的可能是有用的。

groupadd:用于创建新的用户组

groupadd [选项] 组名
常用选项:
-g GID : 指定新用户组的数值标识符(GID)。默认情况下,系统会自动分配下一个可用的 GID。
-r : 创建一个系统用户组。系统用户组的 GID 通常较小且保留给系统服务使用。
-f : 强制创建用户组。如果组名已存在,使用此选项将强制创建。创建一个名为 developers 的新用户组:
sudo groupadd developers
这会在系统中创建一个名为 developers 的新用户组。默认情况下,groupadd 命令会自动分配一个未使用的 GID 给该组。创建一个名为 sysadmin 的系统用户组,指定 GID 为 2001:
sudo groupadd -r -g 2001 sysadmin
这会创建一个名为 sysadmin 的系统用户组,其 GID 为 2001。系统用户组通常用于服务账户或需要特殊权限的系统组件。强制创建一个名为 developers 的用户组,即使它已经存在:
sudo groupadd -f developers
这会强制创建一个名为 developers 的用户组。如果该组名已存在,则会先删除原有组,然后重新创建。

groupdel:删除现有的用户组

基本用法
groupdel 组名删除一个名为 developers 的用户组:
sudo groupdel developers
这会从系统中删除名为 developers 的用户组。如果该组还有成员,系统会提示确认是否删除。

groupmod:用于修改 用户组的属性

groupmod [选项] 组名
常用选项:
-g GID : 修改用户组的数值标识符(GID)。
-n 新组名 : 修改用户组的名称。
-o : 允许使用非唯一的 GID。通常与 -g 选项一起使用,用于允许将 GID 设置为非唯一值。
-R : 为指定的用户组设置 GID 范围。修改用户组 developers 的 GID 为 1500:
sudo groupmod -g 1500 developers
这会将用户组 developers 的 GID 修改为 1500。GID 是用于系统内部标识用户组的数值。将用户组 team 的名称修改为 team1:
sudo groupmod -n team1 team
这会将用户组 team 的名称修改为 team1。修改名称可以使用户组更符合当前组织结构或命名约定。将用户组 developers 的 GID 设置为一个非唯一值(与现有的其他组共享同一 GID):
sudo groupmod -g 1500 -o developers
使用 -o 选项可以允许将 GID 设置为非唯一值,适用于特定需求下需要共享 GID 的情况。修改用户组的 GID 可能会影响与该组相关联的文件和目录的访问权限。

6. 系统命令

uname:用于显示当前操作系统的信息

uname [选项]
常用选项:
-a, --all : 显示所有信息。
-s, --kernel-name : 显示内核名称。
-n, --nodename : 显示网络节点主机名。
-r, --kernel-release : 显示内核版本。
-v, --kernel-version : 显示内核版本详细信息。
-m, --machine : 显示系统硬件架构。
-p, --processor : 显示处理器类型。
-i, --hardware-platform : 显示硬件平台。
-o, --operating-system : 显示操作系统类型。显示操作系统名称:
uname -s
输出可能是 Linux、Darwin(Mac OS X)、FreeBSD 等,取决于当前操作系统。显示当前系统的内核版本:
uname -r
输出如 5.4.0-77-generic,这是 Linux 内核的版本号。显示系统硬件架构:
uname -m
输出可能是 x86_64(64 位)、i686(32 位)等,指示当前系统的处理器架构。显示所有信息:
uname -a
这会显示包括内核名称、版本、处理器类型等所有详细信息。

hostname:用于显示或设置当前系统的主机名

hostname [选项]
常用选项:
-a, --alias : 显示主机别名。
-d, --domain : 显示 DNS 域名。
-f, --fqdn, --long : 显示完全限定域名 (FQDN)。
-i, --ip-address : 显示主机的 IP 地址。
-s, --short : 显示短主机名(不包含域名部分)。显示当前主机名:
hostname
这会简单地输出当前系统的主机名。显示完全限定域名 (FQDN):
hostname -f
如果主机名是 myhost,而域名是 example.com,则输出可能是 myhost.example.com。显示主机的 IP 地址:
hostname -i
这会显示主机当前使用的 IP 地址。显示主机的短名称:
hostname -s
如果主机名是 myhost.example.com,则输出是 myhost。

hostnamectl:用来查看和修改主机名

hostnamectl [选项] [命令]
常用选项:
status : 显示当前主机名和相关状态信息。
set-hostname NAME : 设置主机名为指定的 NAME。显示当前主机名和状态信息:
hostnamectl status
这会显示当前主机名、静态主机名、图标名、架构、操作系统、内核版本、虚拟化类型等信息。设置主机名:
sudo hostnamectl set-hostname newhostname
这会将主机名设置为 newhostname。注意,这个操作需要管理员权限。设置静态主机名:
静态主机名是永久性的主机名,会存储在 /etc/hostname 文件中。使用以下命令设置静态主机名:
sudo hostnamectl set-hostname --static newhostname
这会设置静态主机名为 newhostname,并更新 /etc/hostname 文件。显示所有可用信息:
hostnamectl
这会显示所有可用的主机信息,包括静态主机名、图标名、内核版本、架构、虚拟化类型等。使用 hostnamectl 命令可以比较方便地管理主机名,特别是在使用 systemd 管理的 Linux 系统上。
修改主机名可能需要重启服务或重新登录才能生效,具体取决于系统配置。

相关文章:

Linux常用命令整理

本文将分享一些常用的Linux命令。根据功能的不同&#xff0c;大概分为以下几个方面&#xff0c;一是文件相关命令&#xff0c;二是进程相关命令&#xff0c;三是网络相关命令&#xff0c;四是磁盘相关命令&#xff0c;五是用户管理相关命令&#xff0c;六是系统命令。 1. 文件…...

python 闭包、装饰器

一、闭包&#xff1a; 1. 外部函数嵌套内部函数 2. 外部函数返回内部函数 3.内部函数可以访问外部函数局部变量 闭包&#xff08;Closure&#xff09;是指在一个函数内部定义的函数&#xff0c;并且内部函数可以访问外部函数的局部变量&#xff0c;即使外部函数已经执行…...

[pycharm]解决pycharm运行程序出现卡住scanning files to index索引的问题

有时候会出现索引问题&#xff0c;显示scanning files to index 解决方法&#xff1a; in pycharm, go to the "File" on the left top, then select "invalidate caches/restart...", and press "invalidate and restart". 然后等它自己重启…...

python每日学习11:numpy库的用法(下)

python每日学习11&#xff1a;numpy库的用法(下) 数组的拼接 名方法称说明concatenate连接沿现有轴的数组序列hstack水平堆叠序列中的数组&#xff08;列方向&#xff09;vstack竖直堆叠序列中的数组&#xff08;行方向&#xff09;concatenate函数用于沿指定轴连接相同形状的两…...

【Emacs有什么优点,用Emacs写程序真的比IDE更方便吗?】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…...

6、基于Fabirc 2.X 通用电子存证系统部署

evidence 将GOPATH设置为/root/go,拉取项目&#xff1a; cd $GOPATH/src && git clone https://gitee.com/henan-minghua_0/evidence.git 在/etc/hosts中添加&#xff1a; 127.0.0.1 orderer.example.com 127.0.0.1 peer0.org1.example.com 127.0.0.1 peer1.org…...

Linux Vim 由浅入深的教程

引言 原文链接 Vim是Linux系统中非常强大的文本编辑器&#xff0c;因其强大的功能和灵活的操作而受到广泛使用。尤其是在服务器管理和开发环境中&#xff0c;Vim几乎是必备工具。本教程将以CentOS 7为例&#xff0c;详细讲解Vim的安装、基本操作以及一些高级技巧&#xff0c;…...

MIT6.824(6.5840) Lab1笔记+源码

文章目录 其他人的内容&#xff0c;笔记写的更好&#xff0c;思路可以去看他们的MapReduceworkermapreduce coordinatorrpc纠错 源码worker.gocoordinator.gorpc.go 原本有可借鉴的部分 mrsequential.go&#xff0c;多看几遍源码 其他人的内容&#xff0c;笔记写的更好&#xf…...

【目录】8051汇编与C语言系列教程

8051汇编与C语言系列教程 作者将狼才鲸创建日期2024-07-23 CSDN文章地址&#xff1a;【目录】8051汇编与C语言系列教程本Gitee仓库原始地址&#xff1a;才鲸嵌入式/8051_c51_单片机从汇编到C_从Boot到应用实践教程 一、本教程目录 序号教程名称简述教程链接1点亮LCD灯通过IO…...

群管机器人官网源码

一款非常好看的群管机器人html官网源码 搭建教程&#xff1a; 域名解析绑定 源码文件上传解压 访问域名即可 演示图片&#xff1a; 群管机器人官网源码下载&#xff1a;客户端下载 - 红客网络编程与渗透技术 原文链接&#xff1a; 群管机器人官网源码...

整合EasyExcel实现灵活的导入导出java

引入pom依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId></dependency>实现功能 结合Vue前端&#xff0c;实现浏览器页面直接导出日志文件实现文件的灵活导入文件导出 3. 实体类 实体类里有自定义转…...

springSecurity学习之springSecurity web如何取得用户信息

web如何取得用户信息 之前说过SecurityContextHolder默认使用的是ThreadLocal来进行存储的&#xff0c;而且每次都会清除&#xff0c;但是web每次请求都会验证用户权限&#xff0c;这是如何做到的呢&#xff1f; 这是通过SecurityContextPersistenceFilter来实现的&#xff0…...

eclipse中的classbean导入外部class文件,clean项目后删除问题

最近被eclipse搞得头疼&#xff0c;下午终于解决 eclipse创建的java项目中&#xff0c;类的输出目录是classbean。由于项目需要&#xff0c;classbean目录下已经导入了外部的类&#xff0c;但每次clean项目时&#xff0c;会把class删掉。 广泛查询&#xff0c;eclipse不清空c…...

OBD诊断(ISO15031) 0A服务

文章目录 功能简介ISO 15765-4的诊断服务定义1、请求具有永久状态的排放相关故障诊断码2、请求具有永久状态的排放相关故障诊断码3、示例报文 功能简介 0A服务&#xff0c;即 Request emission-related diagnostic trouble code with permanent status&#xff08;请求排放相关…...

ForCloud全栈安全体验,一站式云安全托管试用 开启全能高效攻防

对于正处于业务快速发展阶段的企业&#xff0c;特别是大型央国企而言&#xff0c;日常的安全部署和运营管理往往横跨多家子公司&#xff0c;所面临的挑战不言而喻。尤其是在面对当前常态化的大型攻防演练任务时&#xff0c;难度更是呈“几何级数”上升&#xff1a; 合规难 众…...

Java——————接口(interface) <详解>

1.1 接口的概念 在现实生活中&#xff0c;接口的例子比比皆是&#xff0c;比如&#xff1a;笔记本电脑上的USB接口&#xff0c;电源插座等。 电脑的USB口上&#xff0c;可以插&#xff1a;U盘、鼠标、键盘...所有符合USB协议的设备 电源插座插孔上&#xff0c;可以插&#xff…...

【C++】【继承】【子对象】【构造函数】含子对象的派生类的构造函数写法

&#xff08;1&#xff09;子对象的概念&#xff1a;若派生类A1的数据成员中包含基类A的对象a&#xff0c;则a为派生类A1的子对象 &#xff08;2&#xff09;含子对象的派生类的构造函数的执行顺序是&#xff1a; ①调用基类构造函数&#xff0c;对基类数据成员初始化 ②调用子…...

golang语言 .go文件版本条件编译,xxx.go文件指定go的编译版本必须大于等于xxx才生效的方法, 同一个项目多个go版本文件共存方法

在go语言中&#xff0c;我们不关是可以在编译时指定版本&#xff0c; 在我们的xxx.go文件中也可以指定go的运行版本&#xff0c;即 忽略go.mod中的版本&#xff0c;而是当当前的go运行版本达到指定条件后才生效的xxx.go文件。 方法如下&#xff1a; 我们通过在xxx.go文件的头部…...

深入浅出mediasoup—通信框架

libuv 是一个跨平台的异步事件驱动库&#xff0c;用于构建高性能和可扩展的网络应用程序。mediasoup 基于 libuv 构建了包括管道、信号和 socket 在内的一整套通信框架&#xff0c;具有单线程、事件驱动和异步的典型特征&#xff0c;是构建高性能 WebRTC 流媒体服务器的重要基础…...

每日一题 LeetCode03 无重复字符的最长字串

1.题目描述 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的最长字串的长度。 2 思路 可以用两个指针, 滑动窗口的思想来做这道题,即定义两个指针.一个left和一个right 并且用一个set容器,一个length , 一个maxlength来记录, 让right往右走,并且用一个set容器来…...

栈和队列(C语言)

栈的定义 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈&#xff1a;…...

swagger-ui.html报错404

问题1&#xff1a;权限受限无法访问 由于采用的Shiro安全框架&#xff0c;需要在配置类ShiroConfig下的Shiro 的过滤器链放行该页面&#xff1a;【添加&#xff1a;filterChainDefinitionMap.put("/swagger-ui.html", "anon");】 public ShiroFilterFact…...

Milvus 核心组件(3)--- MinIO详解

目录 背景 MinIO 安装 docker desktop 安装 Ubuntu UI 在 docker 中的安装 Minio 下载及安装 启动minio docker image 保存 启动 minio web 网页 下一次启动 MinIO基本概念 基本概述 主要特性 应用场景 MinIO 使用 连接server 创建bucket 查询bucket 上传文件…...

[数据集][目标检测]婴儿车检测数据集VOC+YOLO格式1073张5类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1073 标注数量(xml文件个数)&#xff1a;1073 标注数量(txt文件个数)&#xff1a;1073 标注…...

JAVASE进阶day14(网络编程续TCP,日志)

TCP 三次握手 四次挥手 package com.lu.day14.tcp;import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket;public class Client {public static void main(String[] args) {try(Socket socket new Socket("192.…...

机器学习(五) -- 无监督学习(1) --聚类1

系列文章目录及链接 上篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;7&#xff09; --SVM2 下篇&#xff1a;机器学习&#xff08;五&#xff09; -- 无监督学习&#xff08;1&#xff09; --聚类2 前言 tips&#xff1a;标题前有“***”的内容…...

leetcode 116. 填充每个节点的下一个右侧节点指针

leetcode 116. 填充每个节点的下一个右侧节点指针 题目 给定一个 完美二叉树 &#xff0c;其所有叶子节点都在同一层&#xff0c;每个父节点都有两个子节点。二叉树定义如下&#xff1a; struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next …...

[C++]优先级队列

1 .了解优先级队列 优先级队列是一种容器适配器&#xff0c;根据一些严格的弱排序标准&#xff0c;专门设计使其第一个元素始终是它所包含的元素中最大的元素。 此上下文类似于堆&#xff0c;其中可以随时插入元素&#xff0c;并且只能检索最大堆元素&#xff08;优先级队列中顶…...

学习大数据DAY22 Linux 基 本 指 令 3与 在 Linux 系 统 中 配 置MySQL 和 Oracle

目录 网络配置类 ps 显示系统执行的进程 kill systemctl 服务管理 配置静态 ip 常见错误---虚拟机重启网卡失败或者网卡丢失 mysql 操作 上机练习 6---安装 mysql---参考《mysql 安装》文档 解锁 scott 重启后的步骤 上机练习 7---安装 oracle---参考《oracle 安装》…...

scp 服务器复制命令

步骤如下&#xff1a; 终端执行如下命令 #ssh-keygen -t rsa 2. 密钥生成后会在 /root/.ssh/ 文件夹下产生两个文件 id_rsa id_rsa.pub 将 id_rsa.pub 文件复制到 152.136.121.24 执行如下命令 scp /root/.ssh/id_rsa.pub root152.136.121.24:/root/.ssh/authorized_keys…...

PyQt5学习路线

后续会根据该文章的路线逐步发布对应的教程&#xff0c;订阅专栏不迷路&#x1f970; 本专栏纯干货&#x1f929; 学习Python的PyQt5库&#xff0c;可以遵循以下的学习路线&#xff1a; 1. Python基础 掌握Python语法&#xff1a;确保你熟悉Python的基本语法&#xff0c;包括…...

2024论文精读:利用大语言模型(GPT)增强上下文学习去做关系抽取任务

文章目录 1. 前置知识2. 文章通过什么来引出他要解决的问题3. 作者通过什么提出RE任务存在上面所提出的那几个问题3.1 问题一&#xff1a;ICL检索到的**示范**中实体个关系的相关性很低。3.2 问题二&#xff1a;示范中缺乏解释输入-标签映射导致ICL效果不佳。 4. 作者为了解决上…...

WEB 手柄 http通信,mcu端解析代码 2024/7/23 日志

WEB 手柄 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>WEB遥控器</title> </head> &l…...

cmake中的正则表达式

以下字符或者字符组合在cmake的正则表达式中的特殊含义&#xff1a; ^ 匹配输入的开始 $ 匹配输入的结束 . 匹配任意一个字符 \<char> 匹配一个字符&#xff0c;如.匹配字符.&#xff0c;\匹配字符\&#xff0c;\a匹配字符a [ ] 匹配在括号里面的任意字符&#xff0…...

05. Java 三大范式

1. 前言 在面向对象语言中涉及到诸多的设计模式&#xff0c;例如单例模式、适配器模式&#xff0c;设计模式的存在是为了让系统中的代码逻辑更加清晰&#xff0c;帮助开发者建立更加健壮的系统&#xff0c;同时满足易修改特性和易扩展特性。数据库设计时也存在类似设计模式的通…...

opencv 按键开启连续截图,并加载提示图片

背景图小图 键盘监听使用的是pynput 库 保存图片时使用了年月日时分秒命名 原图&#xff1a; from pynput import keyboard import cv2 import time# 键盘监听 def on_press(key):global jieglobal guanif key.char a:jie Trueelif key.char d:jie Falseelif key.char…...

Android-- 集成谷歌地图

引言 项目需求需要在谷歌地图&#xff1a; 地图展示&#xff0c;设备点聚合&#xff0c;设备站点&#xff0c;绘制点和区域等功能。 我只针对我涉及到的技术做一下总结&#xff0c;希望能帮到开始接触谷歌地图的伙伴们。 集成步骤 1、在项目的modle的build.gradle中添加依赖如…...

Jvm是如何处理异常的

异常抛出 当Java程序运行时遇到无法处理的情况时,会抛出一个异常(比如在一个方法中如果发生异常),这时会创建一个异常对象,并转交给JVM,该异常对象包含异常名称,异常描述以及异常发生时应用程序的状态。创建异常对象并转交给JVM的过程称为抛出异常。 异常捕捉 当JVM检测…...

recursion depth exceeded” error

有些时候不可以用jax.jit装饰器 参考资料&#xff1a;使用 JAX 后端在 Keras 3 中训练 GAN |由 Khawaja Abaid |中等 (medium.com)...

虚拟现实和增强现实技术系列—Expressive Talking Avatars

文章目录 1. 概述2. 背景介绍3. 数据集3.1 设计标准3.2 数据采集 4. 方法4.1 概述4.2 架构4.3 目标函数 5. 实验评测5.1 用户研究5.2 我们方法的结果5.3 比较与消融研究 1. 概述 支持远程协作者之间的交互和沟通。然而&#xff0c;明确的表达是出了名的难以创建&#xff0c;主…...

网站验证:确保网络安全与信任的重要步骤

网站验证&#xff1a;确保网络安全与信任的重要步骤 引言 在数字时代&#xff0c;网站验证是确保网络安全和建立用户信任的关键措施。随着网络诈骗和恶意软件的日益增多&#xff0c;验证网站的真实性和安全性变得尤为重要。本文将探讨网站验证的重要性、常见的验证方法以及如…...

C语言——字符串比较函数strcmp和strncmp

目录 strcmp 函数原型如下&#xff1a; 示例 注意事项 strcmp自实现代码&#xff1a; strncmp 函数 函数原型&#xff1a; 参数&#xff1a; 返回值&#xff1a; 特点&#xff1a; 两者之间的区别和联系 strcmp strcmp 是 C 语言标准库中的一个函数&#xff0c;用于…...

redis的集群模式

目录 1. 为什么使用redis集群 2. 主从模式 2.1修改配置文件 2.2 开启三台redis服务 2.3配置主从关系 3. 哨兵模式 3.1 监控功能 3.2 选举的机制 3.3 准备条件 4. 去中心化模式 4.1 准备三主三从 4.2 启动redis 4.3 分配槽以及主从关系 4.4 命令行的客户端 redis提供…...

基于微信小程序+SpringBoot+Vue的青少年科普教学系统平台(带1w+文档)

基于微信小程序SpringBootVue的青少年科普教学系统平台(带1w文档) 基于微信小程序SpringBootVue的青少年科普教学系统平台(带1w文档) 这个工具就是解决上述问题的最好的解决方案。它不仅可以实时完成信息处理&#xff0c;还缩短高校教师成果信息管理流程&#xff0c;使其系统化…...

智能听觉:从任务特定的机器学习到基础模型

关键词&#xff1a;计算机听觉、音频基础模型、多模态学习、声音事件检测 声音无处不在&#xff0c;弥漫于我们生活的每一个角落。鸟儿向伴侣倾诉心意的歌声&#xff0c;浓缩咖啡机中蒸汽的嘶嘶作响&#xff0c;午后阳光下昆虫振翅的嗡嗡声&#xff0c;金属屋顶上雨滴跳跃的滴答…...

14、如何⽤DDD设计微服务代码模型

在完成领域模型设计后&#xff0c;接下来我们就可以开始微服务的设计和 落地了。在微服务落地前&#xff0c;⾸先要确定微服务的代码结构&#xff0c;也就是我 下⾯要讲的微服务代码模型。 只有建⽴了标准的微服务代码模型和代码规范后&#xff0c;我们才可以将 领域对象映射到…...

ArcGIS Pro SDK (九)几何 12 多面体

ArcGIS Pro SDK &#xff08;九&#xff09;几何 12 多面体 文章目录 ArcGIS Pro SDK &#xff08;九&#xff09;几何 12 多面体1 通过拉伸多边形或折线构建多面体2 多面体属性3 构建多面体4 通过MultipatchBuilderEx构建多面体5 从另一个多面体构建多面体6 从 3D 模型文件构建…...

二次元手游《交错战线》游戏拆解

交错战线游戏拆解案 游戏亮点即核心趣味 一、关键词&#xff1a; 回合制游戏、二次元、机甲、横板、剧情、养成、异星探索。 二、游戏亮点&#xff1a; 符合目标群体审美的原画。 三、核心趣味&#xff1a; 抽卡、肝或者氪金解锁新皮肤。 核心玩法及系统规则 核心玩法&…...

【BUG】已解决:Downgrade the protobuf package to 3.20.x or lower.

Downgrade the protobuf package to 3.20.x or lower. 目录 Downgrade the protobuf package to 3.20.x or lower. 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身…...

Java开发之Redis

1、非关系型数据库、快、高并发、功能强大 2、为什么快&#xff1f;内存单线程 非阻塞的IO多路复用有效的数据类型/结构 3、应用&#xff1a;支持缓存、支持事务、持久化、发布订阅模型、Lua脚本 4、数据类型&#xff1a; 5 种基础数据类型&#xff1a;String&#xff08;字…...