当前位置:   article > 正文

Linux常用命令整理

Linux常用命令整理

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

1. 文件相关命令

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

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

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

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

mkdir:用于创建新目录。

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

rmdir:用于删除空目录.。

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

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

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

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

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

cp:用于复制文件或目录。

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

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

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

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

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

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

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

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

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

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

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

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

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

vi/vim: 文本编辑器。

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

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

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

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

  1. grep 选项 模式 文件名
  2. 常用选项:
  3. -i: 忽略大小写。
  4. -r 或 -R: 递归地在目录中搜索文件。
  5. -n: 显示匹配行及其行号。
  6. -v: 显示不匹配的行。
  7. -E: 使用扩展正则表达式。
  8. -F: 使用固定字符串(Fixed Strings)。
  9. -o: 只显示匹配的部分。
  10. -w: 匹配整个单词。
  11. -c: 统计匹配的行数。
  12. -l: 列出包含匹配的文件名。
  13. -L: 列出不包含匹配的文件名。
  14. 在文件中查找特定文本:
  15. grep "pattern" file.txt
  16. 这条命令会在 file.txt 中查找包含 pattern 的所有行,并将它们打印出来。
  17. 忽略大小写进行搜索:
  18. grep -i "pattern" file.txt
  19. 使用 -i 选项可以忽略大小写,例如查找 Pattern、PATTERN、pattern 等都会匹配。
  20. 递归地在目录中搜索文件:
  21. grep -r "pattern" directory/
  22. 使用 -r 选项可以递归地在指定目录 directory/ 及其子目录中搜索包含 pattern 的所有文件。
  23. 显示匹配行及其行号:
  24. grep -n "pattern" file.txt
  25. 使用 -n 选项可以显示匹配行及其行号,方便定位匹配的具体位置。
  26. 仅显示匹配的部分:
  27. grep -o "pattern" file.txt
  28. 使用 -o 选项可以仅显示匹配的部分,而不是整行内容。
  29. 统计匹配的行数:
  30. grep -c "pattern" file.txt
  31. 使用 -c 选项可以统计匹配的行数而不显示具体匹配内容。
  32. 显示不匹配的行:
  33. grep -v "pattern" file.txt
  34. 使用 -v 选项可以显示不包含 pattern 的所有行。
  35. 匹配整个单词:
  36. grep -w "word" file.txt
  37. 使用 -w 选项可以确保只匹配整个单词 word,而不是单词的一部分。
  38. 列出包含匹配的文件名:
  39. grep -l "pattern" *.txt
  40. 使用 -l 选项可以列出所有包含 pattern 的文件名,而不显示具体匹配内容。
  41. 查找 file.txt 中完全匹配 "exact string" 的行。
  42. grep -F "exact string" file.txt

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

  1. 归档文件通常是一个或多个文件的集合,它们可能被压缩以节省空间。归档文件通常使用.tar扩展名,可能还会附带其他压缩方法,如.gz(代表gzip)或.bz2(代表bzip2)。
  2. 例如:
  3. file.tar 是一个未压缩的归档文件。
  4. file.tar.gz 是一个使用gzip压缩的归档文件。
  5. file.tar.bz2 是一个使用bzip2压缩的归档文件。
  6. tar命令用法
  7. 1.创建归档文件
  8. tar -cvf archive.tar file1 file2 ...
  9. -c:创建一个新的归档文件。
  10. -v:显示详细的操作过程(verbose),可以查看哪些文件被添加到归档中。
  11. -f archive.tar:指定归档文件的名称。
  12. 创建一个名为 backup.tar 的归档文件,包含当前目录下所有文件和子目录:
  13. tar -cvf backup.tar .
  14. 创建一个名为 documents.tar 的归档文件,仅包含当前目录下的 docs 文件夹:
  15. tar -cvf documents.tar docs
  16. 2. 查看归档文件内容
  17. tar -tvf archive.tar
  18. -t:显示归档文件中包含的文件列表。
  19. 查看 backup.tar 中包含的文件列表:
  20. tar -tvf backup.tar
  21. 3. 解压归档文件
  22. tar -xvf archive.tar
  23. -x:解压归档文件中的内容。
  24. 解压 backup.tar 中的文件到当前目录:
  25. tar -xvf backup.tar
  26. 4. 添加文件到已存在的归档文件
  27. tar -rvf archive.tar newfile.txt
  28. -r:在已存在的归档文件末尾添加文件。
  29. 向 backup.tar 中添加新文件 important.txt:
  30. tar -rvf backup.tar important.txt
  31. 5. 从归档文件中删除文件
  32. tar --delete -f archive.tar file_to_delete.txt
  33. --delete:从归档文件中删除指定的文件。
  34. 从 backup.tar 中删除 oldfile.txt:
  35. tar --delete -f backup.tar oldfile.txt
  36. 6. 其他常用选项
  37. -z:通过 gzip 压缩归档文件(通常用 .tar.gz 扩展名)。
  38. -j:通过 bzip2 压缩归档文件(通常用 .tar.bz2 或 .tbz 扩展名)。
  39. -C:切换到指定目录后执行操作。
  40. gzip命令用法
  41. 1.基本用法
  42. 压缩文件,生成 filename.gz
  43. gzip filename
  44. gzip example.txt
  45. 这将生成一个名为 example.txt.gz 的压缩文件,并删除原始的 example.txt 文件。
  46. 2. 解压缩文件
  47. 解压缩文件 filename.gz
  48. gzip -d filename.gz
  49. 解压缩 example.txt.gz 文件:
  50. gzip -d example.txt.gz
  51. 3. 查看压缩比和文件信息
  52. gzip -l filename.gz
  53. 显示压缩文件的信息
  54. 查看 example.txt.gz 的压缩信息:
  55. gzip -l example.txt.gz
  56. 4. 压缩选项
  57. gzip 命令本身并不提供太多复杂的选项,它主要用于简单的压缩和解压缩操作。
  58. 以下是一些常见的压缩选项:
  59. -f:强制压缩,即使文件已经存在或者已经压缩过。
  60. -k:保留原始文件,即不删除原始文件,而是保留压缩后的文件副本。
  61. 强制压缩 example.txt,即使已经存在 example.txt.gz:
  62. gzip -f example.txt
  63. 保留原始文件 example.txt,并且生成 example.txt.gz:
  64. gzip -k example.txt
  65. 默认情况下,gzip 在压缩文件时会删除原始文件,并生成 .gz 后缀的压缩文件。使用 -k 选项可以保留原始文件。
  66. gzip 不支持直接压缩多个文件或目录。如果需要压缩多个文件,通常会结合 tar 命令来先打包成 .tar 文件,然后再用 gzip 进行压缩。

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

  1. chmod [选项] 模式 文件名
  2. 常用选项:
  3. -R:递归地应用权限更改到目录及其子目录和文件。
  4. -v:显示详细的权限更改信息。
  5. -c:仅在发生更改时显示操作信息。
  6. chmod 命令的模式可以使用两种方法来指定权限:
  7. 1. 符号模式:
  8. 符号模式允许你通过符号来指定权限的增加或减少。它的基本语法如下:
  9. chmod [ugoa...][[+-=][rwxXstugo...]...][文件名]
  10. u:所有者(user)权限。
  11. g:所属组(group)权限。
  12. o:其他用户(others)权限。
  13. a:所有用户(相当于 ugo 的组合)。
  14. 权限符号包括:
  15. +:增加权限。
  16. -:减少权限。
  17. =:设置权限。
  18. 权限标志:
  19. r:读权限。
  20. w:写权限。
  21. x:执行权限。
  22. 给文件的所有者增加执行权限。
  23. chmod u+x filename
  24. 2. 数字模式:
  25. 数字模式使用数字来指定权限,每个权限用数字表示如下:
  26. 4:读权限(r)。
  27. 2:写权限(w)。
  28. 1:执行权限(x)。
  29. 将这些数字按照权限组合起来,每个组合的总和就是权限的数字表示。例如:
  30. 7:rwx(读、写、执行权限)。
  31. 6:rw-(读、写权限)。
  32. 5:r-x(读、执行权限)。
  33. 4:r--(只读权限)。
  34. 给文件设置如下权限:所有者(user)具有读、写、执行权限(7),所属组(group)和其他用户(others)具有读、执行权限(5)。
  35. chmod 755 filename
  36. 给文件添加执行权限:
  37. chmod +x filename
  38. 递归更改目录及其子目录的权限:
  39. chmod -R 755 directoryname
  40. 显示详细的权限更改信息:
  41. chmod -v 644 filename
  42. 仅在发生更改时显示操作信息:
  43. chmod -c 600 filename

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

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

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

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

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

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

2. 进程相关命令

ps:用于显示进程状态。

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

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

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

kill:用于终止进程。

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

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

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

3. 网络相关命令

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

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

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

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

netstat:用于显示网络状态。

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

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

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

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

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

route: 显示和操作 IP 路由表。

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

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

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

curl:用于发送和接收数据。

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

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

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

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

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

nslookup:用于查询 DNS信息。

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

4. 磁盘相关命令

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

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

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

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

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

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

fdisk:用于管理磁盘分区 。

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

5. 用户管理相关命令

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

  1. id [选项] [用户名]
  2. 常用选项:
  3. -u : 显示用户的 UID(用户标识号)。
  4. -g : 显示用户所属的基本组的 GID(组标识号)。
  5. -G : 显示用户所属的所有附加组的 GID(组标识号),多个 GID 之间用逗号分隔。
  6. -n : 显示用户名而不是 UID。
  7. -r : 显示实际的 UID/GID,而不是有效的(可能是映射后的)。
  8. -Z : 显示安全上下文。
  9. 显示当前用户的 UID 和 GID:
  10. id
  11. 显示特定用户的 UID 和 GID:
  12. id 用户名
  13. 显示用户名而不是 UID:
  14. id -n 用户名
  15. 显示用户所属的所有附加组的 GID:
  16. id -G 用户名

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

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

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

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

passwd:用于更改用户的密码。

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

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

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

groupadd:用于创建新的用户组。

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

groupdel:删除现有的用户组。

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

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

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

6. 系统命令

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

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

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

  1. hostname [选项]
  2. 常用选项:
  3. -a, --alias : 显示主机别名。
  4. -d, --domain : 显示 DNS 域名。
  5. -f, --fqdn, --long : 显示完全限定域名 (FQDN)。
  6. -i, --ip-address : 显示主机的 IP 地址。
  7. -s, --short : 显示短主机名(不包含域名部分)。
  8. 显示当前主机名:
  9. hostname
  10. 这会简单地输出当前系统的主机名。
  11. 显示完全限定域名 (FQDN):
  12. hostname -f
  13. 如果主机名是 myhost,而域名是 example.com,则输出可能是 myhost.example.com。
  14. 显示主机的 IP 地址:
  15. hostname -i
  16. 这会显示主机当前使用的 IP 地址。
  17. 显示主机的短名称:
  18. hostname -s
  19. 如果主机名是 myhost.example.com,则输出是 myhost。

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

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

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号