Linux命令

Linux常用命令

Linux 文件管理命令

查看系統版本

查看系統的位数

1. ls – 列出目录内容

ls可能是每个Linux用户在其终端中键入的第一个命令。它允许您列出您想要的目录的内容(默认情况下是当前目录),包括文件和其他嵌套目录。

ls

它有很多选择,所以最好使用 --help 来获得一些帮助。此标志返回所有可以与 ls一起使用的flags参数。

语法:

ls [options] [directory]

最有用的 ls 选项包括

  • -l – 以长格式显示结果,显示每个文件和目录的权限、所有权、大小和修改日期等额外详细信息。
  • -a – 除非隐藏项目外,显示以.开头的隐藏文件和目录。
  • -R – 递归列出所有子目录内容,无限递归到子文件夹。
  • -S – 按文件大小排序,最大的优先。
  • -t – 按时间戳排序,最新的排在前面。

例如,要着色 ls 命令的输出,您可以使用以下命令:

ls --color=auto

ls着色命令

现在 ls 命令输出已着色,您可以欣赏目录和文件之间的区别。

但是,用彩色标志打字是低效的:这就是我们使用命令 lsalias 的原因。

2. cd – 更改目录

cd命令与ls都非常流行。它指的是“更改目录”,顾名思义,它会将您切换到您试图访问的目录。

当你单独运行 cd 命令时,它会返回到主目录。您也可以通过特定路径进行更改。例如

  • cd /usr/local – 更改到 /usr/local 目录。
  • cd .. – 上移一级至父级目录。
  • cd ~/pictures – 切换到主目录中的 pictures 文件夹。

语法:

cd [directory]

例如,如果您在Documents目录中,并且试图访问其名为Videos的子文件夹之一,则可以通过键入以下内容来输入:

cd Videos

您还可以提供文件夹的绝对路径:

cd /home/wbolt/Documents/Videos

在使用cd命令时,有一些技巧可以为您节省大量时间:

  1. 进入home文件夹
cd
  1. 向上移动一个级别
cd ..
  1. 返回上一个目录
cd -

3.mkdir – 创建新目录

要在shell中创建文件夹,可以使用mkdir命令。只需指定新文件夹的名称,确保它不存在,然后就可以开始了。

语法:

mkdir [options] 

这将在当前工作目录下创建一个名为 “newproject” 的目录。

一些有用的 mkdir 选项:

  • -p – 根据需要递归创建父目录。
  • -v – 显示已创建目录的详细输出。

例如,要创建一个保存所有图像的目录,只需键入:

mkdir images/

要使用简单命令创建子目录,请使用parent(-p)标志:

mkdir -p movies/2004/

4. rmdir – 删除目录

要删除空目录,请使用 rmdir 命令。请注意,rmdir 只能删除空目录,我们需要使用 rm 命令来删除非空目录。

语法:

rmdir [options] 

rmdir 的一些选项包括:

  • -v – 删除目录时的冗余输出。
  • -p – 根据需要递归删除父目录。

例如:

rmdir -v ~/project/code

这将删除 “project” 下的 “code” 子目录,同时显示详细输出。

5.touch – 创建新的空文件

touch命令允许您更新指定文件的访问和修改时间。

语法:

touch [options] filename

一些有用的 touch 选项包括

  • -c – 如果文件已经存在,则不创建该文件。这样可以避免意外覆盖现有文件。
  • -m – 更新现有文件的时间戳,而不是创建新文件。这可用于更改修改时间。

要将其修改日期更改为当前时间,我们需要使用-m标志:

touch -m old_file

尽管如此,大多数情况下,您不会使用touch来修改文件日期,而是创建新的空文件:

touch new_file_name

6. cp – 复制文件和目录

直接在Linux终端上复制文件和文件夹非常容易,有时它可以取代传统的文件管理器。

语法:

cp [options] source destination

一些有用的 cp 选项:

  • -r – 以递归方式复制目录,向下复制到子目录,同时复制其内容。复制目录时必须使用。
  • -i – 在覆盖目的地的任何现有文件前提示。它可以防止意外覆盖数据。
  • -v – 在复制过程中显示每个文件的详细内容。有助于确认到底复制了什么。

要使用cp命令,只需将其与源文件和目标文件一起键入即可:

cp file_to_copy.txt new_file.txt

还可以使用递归标志复制整个目录:

cp -r dir_to_copy/ new_copy_dir/

请记住,在Linux中,文件夹以正斜杠 (/)结尾。

7. mv – 移动或重命名文件和目录

您可以使用mv命令在文件系统中移动(或重命名)文件和目录。

语法:

mv [options] source destination

有用的 mv 选项:

  • -i – 在覆盖目标位置的任何现有文件前提示。这样可以防止意外覆盖数据。
  • -v – 在移动文件或目录时,生成显示每个文件或目录的详细输出。这有助于准确确认移动的内容。

若要使用此命令,请将其名称与源文件和目标文件一起键入:

mv source_file destination_folder/
mv command_list.txt commands/

要使用绝对路径,请使用:

mv /home/wbolt/BestMoviesOfAllTime ./

…where ./是您当前所在的目录。

您还可以使用mv重命名文件,同时将其保留在同一目录中:

mv old_file.txt new_named_file.txt

8. rm – 移除文件和目录

既然您已经知道了如何复制文件,那么了解如何删除它们将很有帮助。

您可以使用rm命令删除文件和目录。但在使用时要小心,因为用这种方法恢复删除的文件非常困难(但并非不可能)。

语法:

rm [options] name

有用的 rm 选项:

  • -r – 递归删除目录,包括目录中的所有内容。这在删除目录时很有必要。
  • -f – 删除文件。这是一条危险的命令,因为文件删除后无法恢复!
  • -i – 在删除每个文件或目录前提示确认,以防意外删除。

要删除常规文件,请键入:

rm file_to_copy.txt

如果要删除空目录,可以使用递归(-r)标志:

rm -r dir_to_remove/

另一方面,要删除包含内容的目录,需要使用force(-f)和recursive标志:

rm -rf dir_with_content_to_remove/

警告:误用这两个标志,你可能会抹掉一整天的工作!

9. find – 在目录层次结构中搜索文件

find 命令会递归搜索目录中符合给定条件的文件。

语法:

find [path] [criteria]

一些有用的 find 标准选项包括

  • -type f – 仅搜索普通文件,省略目录。
  • -mtime +30 – 搜索 30 天前修改的文件。
  • -user jane – 搜索属于用户 “jane” 的文件。

例子:

find . -type f -mtime +30

这将查找当前目录(用圆点表示)下所有超过 30 天的常规文件。

查找命令允许根据各种高级条件搜索文件,如名称、大小、权限、时间戳、所有权等。

10. du – 估算文件空间使用情况

du 命令用于测量指定目录的文件空间使用情况。在不带选项的情况下,它会显示当前工作目录的磁盘使用情况。

语法:

du [options] [path]

实用的 du 选项:

  • -h – 以人类可读格式显示文件大小,如 K 表示千字节,而不是字节数。这样更容易解析。
  • -s – 只显示目录的总大小,而不是列出每个子目录和文件。适合汇总。
  • -a – 除显示总数外,还显示单个文件的大小。有助于识别大文件。

例子:

du -sh pictures

这将打印出 “pictures” 目录的总大小,可供用户阅读。

du 命令有助于分析目录树的磁盘使用情况,并找出占用过多空间的文件。

Linux 搜索和过滤命令

现在,让我们来探索一下能让你在 Linux 命令行中直接搜索、过滤和处理文本的命令。

11. grep 命令 – 使用条件匹配搜索文本

Grep是处理文本文件的最强大的工具之一。

语法:

grep [options] pattern [files]

一些有用的 grep 选项:

  • -i – 忽略条件中的大小写区别
  • -R – 递归搜索子目录
  • -c – 只打印匹配行数
  • -v – 反转匹配,打印不匹配的行

它搜索与正则表达式匹配的行并打印它们,例如下面命令将搜索 long.txt 文件中的 “linux”一词,忽略大小写敏感性。

grep "linux" long.txt

您可以使用-c标志计算与给定条件匹配的次数:

grep -c "linux" long.txt
# 2

12. awk – 条件扫描和处理语言

awk 命令允许根据指定的条件和操作进行更高级的文本处理。它逐行操作,将每行分割成字段。

语法:

awk 'pattern { action }' input-file

例子:

awk '/error/ {print $1}' /var/log/syslog

这将打印任何包含 “error” 的行的第一个字段。awk 还可以使用 NR (记录数)和 NF (字段数)等内置变量。

awk 高级功能包括:

  • 字段数学计算
  • 条件语句
  • 用于处理字符串、数字和日期的内置函数
  • 输出格式控制

awk 的功能非常强大,因为它是一种独立的编程语言,作为 Linux 命令,它可以给你很多控制权。

13. sed – 用于过滤和转换文本的流编辑器

sed 命令允许过滤和转换文本。它可以执行搜索/替换、删除、移位等操作。不过,与 awk 不同的是,sed 是为按指令逐行编辑而设计的。

语法:

sed options 'commands' input-file

例子:

sed 's/foo/bar/' file.txt

这会将 file.txt 中的 “foo” 替换为 “bar”。

一些有用的 sed 命令:

  • s – 搜索和替换文本
  • /pattern/d – 删除与模式匹配的行
  • 10,20d – 删除第 10-20 行
  • 1,3!d – 删除除 1-3 行以外的所有行

sed 非常适合批量查找/替换、选择性删除行和其他文本流编辑操作。

14. sort – 对文本文件行进行排序

当你处理大量文本或数据,甚至是从其他命令输出的大量内容时,排序是使事情易于管理的好方法。sort 命令将按字母或数字对文本文件的行进行排序。

语法:

sort [options] [file]

有用的 sort 选项:

  • -n – 按数字而不是字母排序
  • -r – 反转排序顺序
  • -k – 根据特定字段或列排序

例子:

sort -n grades.txt

这将对 grades.txt 中的内容进行数字排序。排序便于对文件内容进行排序,使输出或分析更具可读性。

15. uniq – 报告或省略重复行

uniq 命令可从输入中过滤重复的相邻行。该命令通常与排序命令一起使用。

语法:

uniq [options] [input]

选项:

  • -c – 以出现次数作为唯一行的前缀。
  • -d – 只显示重复行,不显示唯一行。

例子:

sort data.txt | uniq

这将删除排序后 data.txt 中的任何重复行。uniq 可让你控制重复文本的过滤。

16. diff – 逐行比较文件

diff 命令逐行比较两个文件并打印差异。它通常用于显示文件版本之间的变化。语法

语法:

diff [options] file1 file2

选项:

  • -b – 忽略空白处的更改。
  • -B – 在行内显示差异,高亮显示更改。
  • -u – 用三行上下文输出差异。

例子:

diff original.txt updated.txt

这将输出 original.txt 和 updated.txt 之间的不同行。 diff 对于比较文本文件和源代码的修订版本非常有用。

17. wc – 打印行数、字数和字节数

wc (字数统计)命令打印文件中的行数、字数和字节数。

语法:

wc [options] [file]

选项:

  • -l – 只打印行计数。
  • -w – 只打印单词数。
  • -c – 仅打印字节数。

例子:

wc report.txt

该命令将打印 report.txt 中的行数、字数和字节数。

Linux重定向命令

重定向命令用于控制 Linux 中的输入和输出源,让你可以向文件发送和追加输出流、从文件获取输入、连接多个命令以及将输出分割到多个目的地。

18. > – 重定向标准输出

重定向操作符 > 将命令的标准输出流重定向到文件,而不是打印到终端。文件中的任何现有内容都将被覆盖。

例子:

ls -l /home > homelist.txt

这将执行 ls -l ,列出 /home 目录的内容。

然后,” > “符号将捕获标准输出并写入 homelist.txt,覆盖现有文件内容,而不是将输出打印到终端。

重定向标准输出有助于将命令结果保存到文件中,以便存储、调试或将命令串联起来。

19. >> – 追加标准输出

>> 操作符将命令的标准输出追加到文件中,而不覆盖现有内容。

例子:

tail /var/log/syslog >> logfile.txt

这将把 syslog 日志文件的最后 10 行追加到 logfile.txt 的末尾。与 > 不同, >> 添加输出时不会擦除当前 logfile.txt 的内容。

追加有助于将命令输出收集到一处,而不会丢失现有数据。

20. < – 重定向标准输入

< 重定向操作符将文件内容作为标准输入送入命令,而不是从键盘输入。

例子:

wc -l < myfile.txt

该命令将 myfile.txt 的内容作为输入发送给 wc 命令,wc 命令将计算该文件的行数,而不是等待键盘输入。

重定向输入对于批量处理文件和自动化工作流程非常有用。

21. | – 管道输出到另一条命令

管道 | 操作符将一条命令的输出作为输入发送到另一条命令,将它们串联起来。

例子:

ls -l | less

该命令将 ls -l 的输出导入 less 命令,从而可以滚动浏览文件列表。

管道通常用于将命令串联起来,其中一个命令的输出为另一个命令的输入提供信息。这样就能从较小的单用途程序中构建出复杂的操作。

22. tee – 从标准输入读取并写入标准输出和文件

tee 命令将标准输入分为两个流。

它将输入写入标准输出(显示主命令的输出),同时将副本保存到文件中。

例子:

cat file.txt | tee copy.txt

这将向终端显示 file.txt 的内容,同时将其写入 copy.txt。

tee 与重定向不同,在重定向时,只有打开输出重定向到的文件才能看到输出。

Linux 归档命令

归档命令允许你将多个文件和目录捆绑到压缩归档文件中,以方便移植和存储。Linux 中常见的压缩包格式包括 .tar、.gz 和 .zip。

23. tar – 从归档文件中存储和提取文件

tar 命令可帮助你处理磁带归档文件(.tar)。它可以帮助你将多个文件和目录捆绑到一个压缩的 .tar 文件中。

语法:

tar [options] filename

有用的 tar 选项:

  • -c – 创建一个新的 .tar 压缩文件。
  • -x – 解压, 从 .tar 压缩文件中提取文件。
  • -f – 要创建的文件,或者要解压的文件,-f选项必须在所有选项中位置处于最后一个。
  • -v – 显示归档文件的详细输出。
  • -z – 使用 gzip 压缩或解压缩压缩包,-z选项一般处于选项的第一位。
  • -C – 选择解压的目的地,用于解压模式。

压缩示例

tar -cvf test.tar 1.txt 2.txt 3.txt 
tar -zcvf images.tar.gz /home/user/images
  • 不使用-z后缀不需要加上.gz

解压示例

tar -xvf test.tar
tar -zxvf test.tar.gz
tar -zxvf test.tar.gz -C test
  • -C:指定解压目的地

24. gzip – 压缩或扩展文件

gzip 命令使用 LZ77 编码压缩文件,以减小存储或传输文件的大小。使用 gzip,你可以处理 .gz 文件。

语法:

gzip [options] filename

有用的 gzip 选项:

  • -c – 将输出写入 stdout,而不是文件。
  • -d – 解压缩文件,而不是压缩文件。
  • -r – 对文件夹进行递归压缩。

例子:

gzip -cr documents/

上述命令递归压缩 documents 文件夹并输出到 stdout。

25. gunzip – 解压缩文件

gunzip 命令用于解压缩 .gz 文件。

语法:

gunzip filename.gz

例子:

gunzip documents.tar.gz

上述命令将提取 documents.tar.gz 未压缩的原始内容。

26. zip – 打包和压缩文件

zip 命令用于创建包含压缩文件内容的 .zip 归档文件。

语法:

zip [options] archive.zip filenames

有用的 zip 选项:

  • -r – 递归压缩一个文件夹。
  • -e – 使用密码加密内容。

例子:

zip -r test.zip test 1.txt 2.txt

将图片文件夹加密并压缩为 images.zip。

27. unzip – 从 ZIP 档案中提取文件

gunzip 类似, unzip 命令可从 .zip 压缩文件中提取和解压缩文件。

unzip命令允许您从终端提取.zip文件的内容。同样,默认情况下可能不会安装此软件包,因此请确保使用package管理器安装它。

语法:

unzip archive.zip 

有用的 unzip 选项:

  • -d:指定解压的目的地

例子:

unzip test.zip -d test

上述示例命令提取了当前目录下 images.zip 中的所有文件。

Linux 文件传输命令

文件传输命令允许你通过网络在系统间移动文件。这对于将文件复制到远程服务器或从互联网下载内容非常有用。

28. scp – 在主机间安全复制文件

scp (安全复制)命令通过 SSH 连接在主机间复制文件。所有数据传输都经过加密,以确保安全。

scp 语法可将文件从源路径复制到定义为 user@host 的目的地:

scp -r 参数1 参数2
  • -r:用于复制文件夹使用
  • 参数1:本机路径或者远程目标路径
  • 参数2:远程目标路径或者本机路径

例子:

scp -r /export/server/jdk root@node2:/export/server/

这样就能以 user 身份将 image.jpg 复制到 node2 上的 /export/server/文件夹。

或者

scp -r node2:/export/server/jdk /export/server/

将远程目标文件复制到本机

scp 的工作原理与 cp 命令类似,但用于远程文件传输。它利用 SSH(Secure Shell)进行数据传输,提供加密功能,确保不会在网络上泄露密码等敏感数据。身份验证通常使用 SSH 密钥,但也可以使用密码。文件既可以复制到远程主机,也可以从远程主机复制。

29. rsync – 在主机间同步文件

rsync 工具可在两个位置之间同步文件,同时使用 delta 编码尽量减少数据传输。这使得同步大型目录树的速度更快。

rsync 语法同步源文件到目标文件:

rsync [options] source destination

例子:

rsync -ahv ~/documents user@server:/backups/

上述示例命令将 documents 文件夹递归同步到 server:/backups/,并显示冗长的、人类可读的输出。

有用的 rsync 选项:

  • -a – 归档模式递归同步并保留权限、时间等。
  • -h – 人类可读输出。
  • -v – 冗余输出。

rsync 是将文件和文件夹同步到远程系统并保持分散备份和安全的理想工具。

30. sftp – 安全文件传输程序

sftp 程序通过 SSH 提供交互式文件传输,与普通 FTP 类似,但已加密。它可以在远程系统之间传输文件。

sftp 连接到主机,然后接受以下命令:

sftp user@host
get remotefile localfile
put localfile remotefile

这样就能从服务器上获取 remotefile ,并将 localfile 复制到远程主机上。

sftp 有一个交互式 shell,用于浏览远程文件系统、传输文件和目录以及管理权限和属性。

31. wget命令 – 从网上检索文件

wget(World Wide Web get)是从互联网检索内容的实用工具。它拥有最大的flags之一。

有用的 wget 选项:

  • -c – 恢复中断的下载。
  • -r – 递归下载。
  • -O – 保存到特定文件名。

wget 是编写自动下载脚本和镜像网站的理想工具。

以下是您如何从GitHub获取一个Python文件:

wget https://raw.githubusercontent.com/DaniDiazTech/Object-Oriented-Programming-in-Python/main/object_oriented_programming/cookies.py

32. curl – 从服务器传输数据或向服务器传输数据

curl 命令可使用支持的协议与网络服务器之间传输数据。这包括 REST、HTTP、FTP 等。

语法

curl -o url
  • -o :用于下载文件,当url是下载链接时 可以使用此选项保存文件

例子:

curl -L https://example.com

上述命令从 HTTPS URL 获取数据并输出。

有用的 curl 选项:

  • -o – 将输出写入文件。
  • -I – 仅显示响应头。
  • -L – 跟踪重定向。

curl 旨在以编程方式跨网络传输数据。

Linux 文件权限命令

文件权限命令允许你修改用户的访问权限。这包括设置读/写/执行权限、更改所有权和默认文件模式。

33. chmod 命令 – 更改文件模式或访问权限

chmod命令允许您快速更改文件的模式(权限)。它有很多可用的选项。

文件的基本权限包括:

  • r (只读)
  • w (写入)
  • x (执行) 即是否可以cd进去

有三组权限–用户、组和公共。权限使用 0 至 7 的数字模式设置:

  • 7 – 读取、写入和执行。
  • 6 – 读和写。
  • 4 – 只读。
  • 0 – 无权限。

这将所有者权限设为 7 (rwx),组权限设为 5 (r-x),公共权限设为 5 (r-x)。也可以用符号引用用户和组:

chmod 751 file.txt

g+w 语法为文件添加组写入权限。

设置适当的文件和目录权限对于 Linux 安全和控制访问至关重要。

-R命令可以将文件夹和文件夹中的文件的权限全部修改

chmod -R 751 text.txt

您可以使用它使脚本可执行,从而允许您使用./ 符号直接运行它们。

34. chown – 更改文件所有者和组

chown 命令可更改文件或目录的所有权。所有权包括两个部分–所有者用户和所属组。

语法

chown -R 用户:用户组 文件或者文件夹
  • -R对文件夹内全部内容应用相同规则
  • 用户 修改所属用户
  • 用户组 修改所属用户组
  • : 用于分隔用户和用户组

例如:

chown 用户:用户组 文件或文件夹
chown root:root 1.txt 
chown -R root:root test 

只有 root 超级用户账户才能使用 chown 更改文件所有者。它可以根据需要修改所有者和组来解决权限问题。

35. umask – 设置默认文件权限

umask 命令控制给新创建文件的默认权限。它将八进制掩码作为输入,文件从 666 减去,目录从 777 减去。

例子:

umask 007

新文件的默认权限为 750,而不是 666;新目录的默认权限为 700,而不是 777。

设置 umask 可以让你配置默认文件权限,而不是依赖系统默认值。umask 命令对于限制新文件的权限非常有用,而不需要别人手动添加限制。

Linux 进程管理命令

这些命令允许你查看、监视和控制 Linux 系统上运行的进程。这对确定资源使用情况和停止行为不端的程序非常有用。

36. ps – 报告当前进程概览

使用ps,您可以查看当前shell会话正在运行的进程。它打印有关正在运行的程序的有用信息,如进程ID、TTY(电传打字机)、时间和命令名。

语法

ps -e -f
  • -e:显示全部进程
  • -f:以完全格式化的形式展示全部信息
  • 一般的固定用法是 ps -ef列出全部进程的全部信息

显示的信息分为8类

  • UID:进程所属的用户ID
  • PID:进程的进程号ID
  • PPID:进程的父ID(启动此进程的其他进程)
  • C:此进程的CPU占用率(百分比)
  • STIME:进程的启动时间
  • TTY:启动此进程的终端序号,如果显示,表示非终端启动
  • TIME:进程占用CPU的时间
  • CMD:进程对应的名称或启动命令或是启动的路径

例子:

ps -ef

这将显示以所有用户身份运行的每个进程,以及 CPU 和内存使用情况等其他详细信息。

一些有用的 ps 选项:

  • aux – 显示所有用户的进程
  • --forest – 显示父进程/子进程树

ps 可以让你了解系统上当前正在运行的进程。

如果您想要更具交互性的内容,可以使用htop

37. top – 显示 Linux 进程

top 命令显示实时 Linux 进程信息,包括 PID、用户、CPU %、内存使用率、运行时间等。与 ps 不同的是,它会动态更新显示内容,以反映当前的使用情况。

语法

top -选项 进程名(可选)
  • -p:只显示某个进程的信息
  • -d:设置刷新时间默认为5s
  • -n:指定刷新次数,比如top -n 3,即刷新输出3次后退出
  • -c:显示产生进程的完整命令,默认是进程名
  • -b:以非交互非全屏模式运行
  • -i :不显示任何闲置(idle)或者无用(zombie)的进程
  • -u:查找特定用户启动的进程

例子:

top -u mysql

上述命令只监控 “mysql” 用户的进程。它对识别资源密集型程序很有帮助。

38. htop – 交互式进程浏览器

htop是一种交互式流程查看器,可让您直接从终端管理计算机的资源。在大多数情况下,默认情况下它并没有安装,所以请确保在下载页面上阅读更多关于它的信息

htop

只需在命令行中输入 htop,即可查看进程。

top 相比, htop 的用户界面元素得到了增强,增加了颜色、滚动和鼠标支持,导航更加方便。非常适合调查进程。

39. kill – 向进程发送信号

当一个程序没有响应,并且你不能用任何方法关闭它时,这是很烦人的。幸运的是,kill命令解决了这类问题。

简单地说,kill向终止它的进程发送一个TERM或kill信号。

您可以通过输入PID(进程ID)或程序的二进制名称来终止进程:

语法

kill -9 进程ID
  • -9:表示强转关闭进程

示例:

kill -9 12345

上述命令发送 SIGTERM (-9) 信号,以优雅地停止 PID 为 12345 的进程。

使用此命令时要小心-使用kill时,可能会意外删除您正在执行的工作。

40. pkill – 根据名称向进程发送信号

pkill 命令通过名称而不是 PID 来杀死进程。这比先找到 PID 更容易。

例子:

pkill -9 firefox

这将强制停止所有带有 SIGKILL (9) 的 Firefox 进程。pkill 通过匹配名称、用户和其他条件而非 PID 来锁定进程。

41. nohup – 运行不受挂起影响的命令

nohup 命令可运行不受挂起影响的进程,因此即使注销或断开连接,它们也能继续运行。

例子:

nohup python script.py &

上述示例命令将在后台启动分离的 script.py,并且不会被挂起。 nohup 通常用于启动持久的后台守护进程和服务。

Linux 性能监控命令

这些命令提供了宝贵的系统性能统计数据,有助于分析资源利用率、识别瓶颈和优化效率。

42. vmstat – 报告虚拟内存统计数据

vmstat 命令可打印有关内存、交换、I/O 和 CPU 活动的详细报告。其中包括已用/可用内存、交换入/出、磁盘块读/写和 CPU 进程/闲置时间等指标。

例子:

vmstat 5

其他有用的 vmstat 选项:

  • -a – 显示活动和非活动内存
  • -s – 显示事件计数器和内存统计信息
  • -S – 以 KB 而不是块为单位输出
  • 5 – 每 5 秒刷新一次输出。

上面的示例每 5 秒输出一次内存和 CPU 数据,直到中断为止,这对监控实时系统性能非常有用。

43. iostat – 报告 CPU 和 I/O 统计数据

iostat 命令监控并显示 CPU 利用率和磁盘 I/O 指标。其中包括 CPU 负载、IOPS、读/写吞吐量等。

语法

iostat -x num1 num2
  • -x:显示更多的信息
  • num1:刷新次数
  • num2:刷新间隔

例子:

iostat -x 2 3

一些 iostat 选项:

  • -c – 显示 CPU 使用率信息
  • -t – 为每份报告打印时间戳
  • -x – 显示服务时间和等待计数等扩展统计信息
  • -d – 显示每个磁盘/分区的详细统计信息,而不是合计总数
  • -p – 显示特定磁盘设备的统计信息

下面每 5 秒钟显示一次 sda 每个设备的详细 I/O 统计信息。

iostat 可帮助分析磁盘子系统的性能,找出硬件瓶颈。

44. free – 显示可用和已用内存量

free 命令显示系统中物理内存和交换内存的总量、已用量和空闲量。这将提供可用内存的总体情况。

例子:

free -h

free 命令的一些选项:

  • -b – 以字节为单位显示输出
  • -k – 以 KB(而非默认字节)为单位显示输出结果
  • -m – 以 MB 为单位显示输出,而不是以字节为单位
  • -h – 以 GB、MB 等人类可读格式打印统计数据,而不是字节。

以人类可读格式(GB、MB 等)打印内存统计数据。当你想快速了解内存容量时,它非常有用。

45. df – 报告文件系统磁盘空间使用情况

df 命令显示文件系统的磁盘空间使用情况。它会显示文件系统名称、总/已用/可用空间和容量。

例子:

df -h

上述命令将以人类可读的格式打印磁盘利用率。也可以不带参数运行该命令,以块大小获得相同的数据。

46. sar – 收集和报告系统活动

sar 工具收集并记录一段时间内 CPU、内存、I/O、网络等系统活动信息。通过分析这些数据,可以发现性能问题。

语法

sar -n DEV num1 num2
  • -n:查看网络
  • DEV:查看网络接口
  • num1:刷新间隔
  • num2:查看次数

例子:

sar -u 5 60

每 5 秒采样一次 CPU 使用情况,持续 60 次。

sar 提供了实时工具无法提供的详细历史系统性能数据。

Linux 用户管理命令

在使用多用户系统时,你可能需要一些命令来帮助你管理用户和组,以控制访问权限。下面我们就来介绍一下这些命令。

47. useradd – 创建新用户

useradd 命令用于创建新用户账户和主目录。它会设置新用户的 UID、组、shell 和其他默认值。

例子:

useradd 用户名 -g 组名称 -d 指定home路径 
useradd test2 -g tomato -d /home/test22

useradd 实用选项:

  • -m – 创建用户的主目录。
  • -d –指定用户HOME路径,不指定默认在:/home/用户名
  • -g – 指定主组,而不是默认组。
  • -s – 设置用户的登录 shell。

上述命令将创建一个新用户 “john”,用户名和主目录均为 /home/john。

48. usermod – 修改用户账户

usermod 命令可修改现有用户账户的设置。这可以更改用户名、主目录、shell、组、有效期等。

例子:

usermod -aG tomato test2

通过这条命令,你可以将用户 test2 添加组-“tomato”。-a 会追加到用户添加到的现有组列表中。

49. userdel – 删除用户账户

userdel 命令用于删除用户账户、主目录和邮件 spool。

例子:

userdel -rf john

userdel 有用选项:

  • -r – 删除用户的主目录和邮件线轴。
  • -f – 即使用户仍在登录,也强制删除。

这将强制删除用户 “john”,并删除相关文件。

userdel 中指定 -r-f 等选项可确保完全删除用户账户,即使该用户仍在登录或有活动进程。

50. groupadd – 添加一个用户组

以下命令需要root用户执行

groupadd 命令用于创建一个新的用户组。就权限而言,组代表团队或角色。

例子:

都需要进去root用户之后才能操作

创建用户组

groupadd 用户组名

删除用户组

groudel 用户组名

有用的 groupadd 选项:

  • -r – 创建用于核心系统功能的系统组。
  • -g – 指定新组的 GID,而不是使用下一个可用的 GID。

上述命令创建了一个具有系统权限的新 “sysadmin” 组。创建新组时, -r-g 有助于正确设置。

51. passwd – 更新用户的身份验证令牌

passwd 允许您更改用户帐户的密码。首先,它会提示您输入当前密码,然后要求您输入新密码并确认。

它类似于您在其他地方看到的任何其他密码更改,但在本例中,它直接在您的终端中:

passwd

例子:

passwd john

这会提示用户 “john” 以交互方式输入新密码。如果你丢失了某个账户的密码,可以用 sudo 或 su 权限登录 Linux,然后用同样的方法修改密码。

使用时要小心-一不小心可能会混肴用户密码!

Linux 网络命令

这些命令用于监控连接、排除网络故障、路由选择、DNS 查询和接口配置。

52. ping – 向网络主机发送 ICMP ECHO_REQUEST

ping 是用于测试网络连接的最流行的网络终端工具。ping 有很多选项,但在大多数情况下,您将使用它来请求域或IP地址:

ping google.com
PING google.com (142.251.42.78): 56 data bytes
64 bytes from 142.251.42.78: icmp_seq=0 ttl=112 time=8.590 ms
64 bytes from 142.251.42.78: icmp_seq=1 ttl=112 time=12.486 ms
64 bytes from 142.251.42.78: icmp_seq=2 ttl=112 time=12.085 ms
64 bytes from 142.251.42.78: icmp_seq=3 ttl=112 time=10.866 ms
--- google.com ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 8.590/11.007/12.486/1.518 ms

有用的 ping 选项:

  • -c [count] – 限制发送的数据包。
  • -i [interval] – ping 之间的等待间隔秒数。

使用上述命令,你可以 ping http://google.com,并输出显示连接性和延迟的往返统计信息。一般来说, ping 命令用于检查你试图连接的系统是否存在并已连接到网络。

53. ifconfig – 配置网络接口

ifconfig 命令显示并配置网络接口设置,包括 IP 地址、网络掩码、广播、MTU 和硬件 MAC 地址。

例子:

ifconfig
eth0: flags=4163  mtu 1500
inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
inet6 fe80::a00:27ff:fe1e:ef1d  prefixlen 64  scopeid 0x20
ether 08:00:27:1e:ef:1d  txqueuelen 1000  (Ethernet)
RX packets 23955654  bytes 16426961213 (15.3 GiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 12432322  bytes 8710937057 (8.1 GiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

在没有其他参数的情况下运行 ifconfig ,将显示所有可用网络接口的列表,以及 IP 和其他网络信息。ifconfig 还可用于设置地址、启用/禁用接口以及更改选项。

54. netstat – 网络统计

netstat 查看指定端口的占用情况

语法

netstat -anp|grep 端口号

例子:

netstat -pt tcp

该命令将输出所有活动的 TCP 连接和使用这些连接的进程。

55. ss – 套接字统计

ss 命令将转储与 netstat 类似的套接字统计信息。它可以显示打开的 TCP 和 UDP 套接字、发送/接收缓冲区大小等。

例子:

ss -t -a

打印所有打开的 TCP 套接字。比 netstat 更有效。

56. traceroute – 追踪到主机的路由

traceroute 命令打印数据包到网络主机的路径,显示沿途的每一跳和传输时间。对网络调试很有用。

例子:

traceroute google.com

跟踪到达 http://google.com 的路径,并输出每个网络跳转。

57. dig – DNS 查找

dig 命令执行 DNS 查找并返回域的 DNS 记录信息。

例子:

dig google.com
; <<>> DiG 9.10.6 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60290
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 220 IN A 142.251.42.78
;; Query time: 6 msec
;; SERVER: 2405:201:2:e17b::c0a8:1d01#53(2405:201:2:e17b::c0a8:1d01)
;; WHEN: Wed Nov 15 01:36:16 IST 2023
;; MSG SIZE  rcvd: 55 

它会查询 DNS 服务器中与 http://google.com 相关的记录,并打印详细信息。

58. nslookup – 交互式查询 DNS 服务器

nslookup 命令以交互方式查询 DNS 服务器,以执行名称解析查询或显示 DNS 记录。

它进入一个交互式 shell,允许你手动查询主机名、反向 IP 地址、查找 DNS 记录类型等。

例如,一些常见的 nslookup 使用方法。在命令行中键入 nslookup:

nslookup

接下来,我们将设置 Google 8.8.8.8 DNS 服务器用于查询。

> server 8.8.8.8

现在,让我们查询 http://stackoverflow.com 的 A 记录,找到它的 IP 地址。

> set type=A
> stackoverflow.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: stackoverflow.com
Address: 104.18.32.7
Name: stackoverflow.com
Address: 172.64.155.249

现在,让我们查找 http://github.com 的 MX 记录,查看其邮件服务器。

> set type=MX
> github.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
github.com mail exchanger = 1 aspmx.l.google.com.
github.com mail exchanger = 5 alt1.aspmx.l.google.com.
github.com mail exchanger = 5 alt2.aspmx.l.google.com.
github.com mail exchanger = 10 alt3.aspmx.l.google.com.
github.com mail exchanger = 10 alt4.aspmx.l.google.com.

交互式查询使 nslookup 对探索 DNS 和排除名称解析问题非常有用。

59. iptables – IPv4 数据包过滤和 NAT

使用 iptables 命令可以配置 Linux netfilter 防火墙规则,以过滤和处理网络数据包。它为系统如何处理不同类型的入站和出站连接及流量设置了策略和规则。

例子:

iptables -A INPUT -s 192.168.1.10 -j DROP

上述命令将阻止来自 IP 192.168.1.10 的所有输入。

iptables 为 Linux 内核防火墙提供了强大的控制功能,可以处理路由、NAT、数据包过滤和其他流量控制。它是确保 Linux 服务器安全的重要工具。

60. ip – 管理网络设备和路由

使用 ip 命令可以管理和监控各种与网络设备相关的活动,如分配 IP 地址、设置子网、显示链接详情和配置路由选项。

例子:

ip link show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0:  mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:8a:5c:04 brd ff:ff:ff:ff:ff:ff

上述命令显示了所有网络接口、它们的状态和其他信息。

该命令旨在用更现代的 Linux 网络管理功能取代 ifconfig。 ip 可以控制网络设备、路由表和其他网络协议栈设置。

软件包管理器允许在 Linux 发行版上轻松安装、更新和删除软件。常用的软件包管理器包括 APT、YUM、DNF、Pacman 和 Zypper。

61. apt – Debian/Ubuntu 软件包管理器

apt 命令使用 APT 软件库管理 Debian/Ubuntu 系统上的软件包。它允许安装、更新和删除软件包。

例子:

apt update

该命令从软件仓库获取最新的软件包版本和元数据。

apt install nginx

使用上述命令可以从配置的 APT 软件源安装 nginx 软件包。

apt upgrade

该命令将软件包和依赖关系升级到更新版本。

apt 通过从软件源获取软件包,让安装软件变得更简单。

62. pacman – Arch Linux 软件包管理器

pacman 管理 Arch Linux 上来自 Arch 用户资源库的软件包。它可以安装、升级和删除软件包。

例子:

pacman -S nmap

从配置的软件源安装 nmap 软件包。

pacman -Syu 

与软件源同步并升级所有软件包。

pacman 使 Arch Linux 保持最新,并可轻松管理软件包。

63. dnf – Fedora 软件包管理器

dnf 使用 RPM 软件包在 Fedora Linux 发行版上安装、更新和删除软件包。它取代 Yum 成为新一代软件包管理器。

例子:

dnf install util-linux

安装 util-linux 软件包。

dnf upgrade

将所有已安装的软件包升级到最新版本。

dnf 使 Fedora 软件包管理快速高效。

64. yum – Red Hat 软件包管理器

yum 使用 RPM 软件包管理 RHEL 和 CentOS Linux 发行版上的软件包。它从 Yum 软件库中获取软件包进行安装和更新。

例子:

yum update

将所有已安装的软件包更新到最新版本。

yum install httpd

上述命令安装 Apache httpd 软件包。yum 是保持 Red Hat 发行版更新的主要软件包管理器。

65. zypper – OpenSUSE 软件包管理器

zypper 在 SUSE/openSUSE Linux 上管理软件包。它可以添加软件源、搜索、安装和升级软件包。

例子:

zypper refresh 

zypper 的刷新命令会刷新已添加软件源的软件源元数据。

zypper install python

该命令从配置的软件源中安装 Python 软件包。 zypper 让 SUSE/openSUSE 系统上的软件包管理变得轻松自如。

66. flatpak – Flatpak 应用程序软件包管理器

flatpak 命令可帮助你管理 Flatpak 应用程序和运行时。 flatpak 允许在 Linux 上发布沙盒桌面应用程序。

例子:

flatpak install flathub org.libreoffice.LibreOffice

例如,上述命令将从 Flathub 软件源安装 LibreOffice。

flatpak run org.libreoffice.LibreOffice

这将启动了沙盒LibreOfficeFlatpak应用程序。 flatpak 提供了一个集中的跨发行版 Linux 应用程序软件仓库,因此你不再局限于特定发行版软件包库中的软件包。

67. appimage – AppImage 应用程序软件包管理器

AppImage 软件包是独立的应用程序,可在大多数 Linux 发行版上运行。appimage 命令可运行现有的 AppImage。

例子:

chmod +x myapp.AppImage
./myapp.AppImage

这样就可以直接运行 AppImage 二进制文件。

AppImage 允许在不进行全系统安装的情况下部署应用程序。可以把 AppImage 想象成一个小型容器,其中包含所有文件,使应用程序无需过多外部依赖即可运行。

68. snap – Snappy 应用程序软件包管理器

snap 命令管理 Snaps 封装的软件包。Snaps 与 Flatpak 类似,能自动更新并跨 Linux 发行版运行。

例子:

snap install vlc

这条简单的命令会安装 VLC 媒体播放器快照。

snap run vlc

安装完成后,你可以使用上述命令运行通过 snap 安装的软件包。快照将应用程序从基本系统中分离出来,以实现可移植性,并允许更简洁的安装。

Linux 系统信息命令

通过这些命令可以查看 Linux 系统硬件、内核、发行版、主机名、正常运行时间等详细信息。

69. uname – 打印系统信息

uname 命令可打印 Linux 系统内核、硬件架构、主机名和操作系统的详细信息。其中包括版本号和机器信息。

uname(Unix name的缩写)打印可操作的系统信息,当您知道当前的Linux版本时,这些信息很方便。

大多数情况下,您将使用-a(–all)标志,因为默认输出没有那么有用:

uname 
# Linux 
uname -a 
# Linux wboltmanjaro 5.4.138-1-MANJARO #1 SMP PREEMPT Thu Aug 5 12:15:21 UTC 2021 x86_64 GNU/Linux

例子:

uname -a
Linux hostname 5.4.0-48-generic x86_64 GNU/Linux

uname 对于查询这些核心系统详细信息非常有用。一些选项包括:

  • -a – 打印所有可用的系统信息
  • -r – 只打印内核版本号

上述命令打印了扩展系统信息,包括内核名称/版本、硬件架构、主机名和操作系统。

uname -r 

这将只打印内核版本号。 uname 命令显示 Linux 系统核心组件的详细信息。

70. hostname – 显示或设置系统主机名

hostname 命令将打印或设置网络中 Linux 系统的主机名标识符。在没有参数的情况下,它会显示当前的主机名。传递名称将更新主机名。

例子:

hostname
linuxserver

将显示配置的系统主机名 linuxserver。

hostname UbuntuServer

修改主机名

hostnamectl set-hostname 需要修改的主机名

hostnames 标识网络上的系统。 hostname 获取或配置网络上系统的标识名称。第二条命令可以帮助你将本地主机名更改为 UbuntuServer。

71. uptime – 系统运行了多久

uptime 命令显示 Linux 系统自上次重启以来已经运行了多长时间。它会打印出运行时间和当前时间。

只需运行以下命令即可获取系统运行时间数据:

uptime
23:51:26 up 2 days, 4:12, 1 user, load average: 0.00, 0.01, 0.05

这将打印系统正常运行时间,显示系统自上次启动以来的运行时间。

72. whoami – 打印有效用户 ID

whoami 命令将打印当前登录系统用户的有效用户名。它还会显示您的操作权限级别。

该命令(who am I的缩写)显示当前使用的whoami用户名:

whoami
# wbolt

使用echo和环境变量$USER可以得到相同的结果:

echo $USER
# wbolt

在终端中键入该命令以获取 ID:

whoami
john

这将打印当前用户登录和操作的有效用户名,在脚本或诊断中非常有用,可用于识别正在执行操作的用户账户。

73. id – 打印真实有效的用户和组 ID

id 命令打印有关当前用户有效 ID 和名称的详细用户和组信息。其中包括

  • 真实用户 ID 和名称。
  • 有效用户 ID 和名称。
  • 真实组 ID 和名称。
  • 有效组 ID 和名称。

要使用 id 命令,只需键入:

id
uid=1000(john) gid=1000(john) groups=1000(john),10(wheel),998(developers)

id 命令将打印当前用户的真实有效用户 ID 和组 ID。id 显示的用户和组详细信息对确定文件访问权限非常有用。

74. lscpu – 显示 CPU 架构信息

lscpu 命令显示详细的 CPU 架构信息,包括

  • CPU 内核数
  • 接口数量
  • 型号名称
  • 缓存大小
  • CPU 频率
  • 地址大小

要使用 lscpu 命令,只需键入:

lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              16
On-line CPU(s) list: 0-15

lscpu 详细列出 CPU 架构,如内核数、插口、型号名称、缓存等。

75. lsblk – 列出块设备

lsblk 命令列出所有可用块设备的信息,包括本地磁盘、分区和逻辑卷。输出包括设备名称、标签、大小和挂载点。

lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda       8:0    0   1.8T  0 disk
|-sda1    8:1    0   512M  0 part  /boot
|-sda2    8:2    0    16M  0 part
`-sda5    8:5    0   1.8T  0 part
`-lvm1 254:0    0   1.8T  0 lvm   /

lsblk 列出所有块设备,包括磁盘、分区和逻辑卷。提供存储设备概览。

76. lsmod – 显示 Linux 内核模块的状态

lsmod 命令会打印当前加载的内核模块(如设备驱动程序)。这包括 Linux 内核用于连接内部和外部设备的网络、存储和其他硬件相关模块。

lsmod
Module                  Size  Used by
ipv6                  406206  27
evdev                   17700  0
crct10dif_pclmul       16384  1
crc32_pclmul           16384  0
ghash_clmulni_intel    16384  0
aesni_intel           399871  0
aes_x86_64             20274  1 aesni_intel

可以看到,它列出了当前加载的内核模块(如设备驱动程序)。在本例中,它显示了网络、输入、加密和加密模块的使用情况。

77. dmesg – 打印或控制内核环缓冲区

dmesg 命令从内核环形缓冲区转储信息。其中包括内核在启动和运行过程中记录的重要系统事件。

dmesg | grep -i error
[   12.345678] Error receiving batched read response: -110
[   23.456789] tplink_mdio 0000:03:00.0: Direct firmware load for tplink-mdio/leap_p8_v1_0.bin failed with error -2
[   40.567890] iwlwifi 0000:09:00.0: Direct firmware load for iwlwifi-ty-a0-gf-a0-59.ucode failed with error -2

搜索 “错误” 会显示加载特定固件时出现的问题。这将打印缓冲的内核日志信息,包括启动、错误、警告等系统事件。

Linux 系统管理命令

系统管理员命令可帮助你以其他用户身份运行程序、关闭或重启系统,以及管理 init 系统和服务。

78. sudo – 以其他用户身份执行命令

sudo 命令允许你以另一个用户(通常是超级用户)的身份运行命令。输入 sudo 命令后,系统会提示您输入密码进行身份验证。

为普通用户配置sudo认证

  • 1.切换到root用户,执行cisudo命令,会自动通过vi编辑器打开:/etc/sudoers

  • 2.在文件的最后添加

    需要认证的用户名 ALL=(ALL)    NOPASSWD:ALL
    
    • NOPASSWD:ALL表示使用sudo命令无需输入密码
  • 3.最后通过:wq保存

  • 4.切换回普通用户,执行的命令均以root运行

这为安装软件包、编辑系统文件、管理服务等任务提供了高级访问权限。

此命令代表“超级用户do”,它允许您在运行特定命令时充当超级用户或根用户。这就是Linux如何保护自己,防止用户意外修改机器的文件系统或安装不合适的软件包。

Sudo通常用于安装软件或编辑用户主目录以外的文件:

sudo apt install gimp
sudo cd /root/

在运行您键入的命令之前,它会要求您输入管理员密码。

又如:

sudo adduser bob
[sudo] password for john:

系统已添加用户 “bob”。

这将使用 sudo 创建新用户 “bob”。如果没有 sudo,普通用户通常无法添加用户。

79. su– 更改用户 ID 或成为超级用户使用

su 命令可以切换到另一个用户账户,包括超级用户。必须提供目标用户的密码才能进行身份验证。这样就可以直接在另一个用户的环境中运行命令。

例子:

su - bob
Password:
bob@linux:~$

输入 bob 的密码后,该命令会将当前用户切换为用户 “bob”。shell 提示符将反映新用户。

  • exit 或者ctrl + d退出切换的用户 回到之前用户

80. shutdown – 关闭或重启 Linux

shutdown 命令用于在指定计时器后或立即关闭、停止或重启系统。要安全地重启或关闭多用户 Linux 系统,需要使用该命令。

正如您可能猜到的,shutdown命令允许您关闭机器电源。但是,它也可以用来停止和重新启动它。

要立即关闭计算机电源(默认为一分钟),请键入:

shutdown now

您还可以计划以24小时格式关闭系统:

shutdown 20:40

要取消以前的shutdown调用,可以使用-c标志:

shutdown -c

又如:

shutdown -r now
Broadcast message from root@linux Fri 2023-01-20 18:12:37 CST:
The system is going down for reboot NOW!

这会立即重启系统,并向用户发出警告。

81. reboot – 重启或重新启动系统

reboot 命令可重启 Linux 操作系统,注销所有用户并安全地重启系统。它会同步磁盘,并在重启前干净利落地关闭系统。

例子:

reboot
Restarting system.

reboot 是 shutdown -r 的简单替代方案。

82. systemctl – 控制 systemd 系统和服务管理器

systemctl 命令允许你管理 systemd 服务,如启动、停止、重启或重新加载它们。 systemd 是大多数现代 Linux 发行版使用的新启动系统,取代了 SysV init。

例子:

systemctl start apache2
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to start 'apache2.service'.
Authenticating as: User Name
Password:
==== AUTHENTICATION COMPLETE ===

验证完成后,将启动 apache2 服务。

83. service – 运行 System V 初始化脚本

service 命令运行用于控制服务的 System V 初始脚本。这允许启动、停止、重启和重新加载在传统 SysV init 下管理的服务。

例子:

service iptables start
[ ok ] Starting iptables (via systemctl): iptables.service.

上述命令使用 SysV init 脚本启动了 iptables 防火墙服务。

更多 Linux 命令

84.mount – 将硬盘安装或 “连接 “到系统上。

85.umount – 从系统中卸载或 “移除” 硬盘。

86.xargs – 生成并执行通过标准输入提供的命令。

87.alias – 为冗长或复杂的命令创建快捷方式。

alias命令允许您在shell会话中定义临时别名。创建别名时,您指示shell用一系列命令替换单词。例如,要设置 ls 为颜色而不每次键入标志 --color,您将使用:

alias ls="ls --color=auto"

正如你所看到的,alias命令需要一个关键值对参数:alias NAME="VALUE" .请注意,该值必须是使用引号。
如果你想列出你的shell会话中所有的别名,你可不使用argument运行命令alias

alias

88.jobs – 列出当前在后台运行任务的程序。

89.bg – 恢复已停止或暂停的后台进程。

90.killall – 通过程序名称而不是 PID 终止进程。

91.history – 显示当前终端会话中以前使用过的命令。

如果你正在努力记住一个命令,history就会派上用场。此命令显示一个枚举列表,其中包含您过去使用过的命令:

history

92.man – 直接在终端中访问命令的帮助手册。

另一个重要的Linux命令是man。它显示任何其他命令的手册页面(只要有)。要查看mkdir命令的手册页,请键入:

man mkdir

您甚至可以查看 man 命令手册页面:

man man

93.screen – 从一个窗口管理多个终端会话。

94.ssh – 建立与远程服务器的安全加密连接。

95.tcpdump – 根据特定标准捕获网络流量。

96.watch – 每隔一段时间重复一次命令,并突出显示输出差异。

97.tmux – 用于持续会话和分割的终端多路复用器。

98.nc – 打开 TCP 或 UDP 连接,进行测试和数据传输。

99.nmap – 主机发现、端口扫描和操作系统指纹。

语法

nmap 被查看的ip地址

示例

nmap 127.0.0.1

100.strace – 通过跟踪操作系统信号和调用来调试进程。

101.unalias– 顾名思义,unalias命令旨在从已定义的别名中删除alias

要删除以前的ls别名,可以使用:

unalias ls

102. pwd– 代表“打印工作目录”,它输出您所在目录的绝对路径。

例如,如果您的用户名是“john”,并且您位于文档目录中,则其绝对路径将是 /home/john/Documents.要使用它,只需在终端中键入pwd

pwd
# My result: /home/wbolt/Documents/linux-commands

103../ – 也许 ./ 符号本身不是命令,但在这个列表中值得一提。

它允许shell直接从终端运行可执行文件,并在系统中安装任何解释器。不再双击图形文件管理器中的文件!例如,使用此命令,您可以运行Python脚本或仅以.run格式提供的程序,如XAMPP。运行可执行文件时,请确保它具有可执行(x)权限,您可以使用chmod命令修改该权限。下面是一个简单的Python脚本,以及如何使用 ./ 符号运行它:

#! /usr/bin/python3
# filename: script
for i in range(20):
print(f"This is a cool script {i}")

下面是我们如何将脚本转换为可执行文件并运行它:

chmod +x script
./script

104. exit– 自动关闭正在使用的终端。

exit命令完全按照其名称执行:使用它,您可以结束shell会话,并且在大多数情况下,可以自动关闭正在使用的终端:

exit

105. apt, yum, pacman 命令

无论您使用的是哪个Linux发行版,您都可能使用package管理器来安装、更新和删除您每天使用的软件。您可以通过命令行访问这些package管理器,并根据您的计算机运行的发行版使用其中一个或另一个package管理器。以下示例将安装GIMP,这是一种通常在大多数package管理器中可用的免费开源软件:

1. Debian-based (Ubuntu, Linux Mint)

sudo apt install gimp

2. Red Hat-based (Fedora, CentOS)

sudo yum install gimp

3. Arch-based (Manjaro, Arco Linux)

sudo pacman -S gimp

106. echo– 在终端中显示定义的文本。

echo命令在终端中显示定义的文本-就这么简单:

echo "Cool message"

它的主要用途是在这些消息中打印环境变量:

echo "Hey $USER"
# Hey wbolt

107. cat– 用于直接从终端创建、查看和连接文件。

cat 是“concatenate”的缩写,用于直接从终端创建、查看和连接文件。它主要用于在不打开图形文本编辑器的情况下预览文件:

cat long_text_file.txt

108. vim– 使用高效的键绑定编辑纯文本文件。

vim 是一个免费的开源终端文本编辑器,从90年代开始使用。它允许您使用高效的键绑定编辑纯文本文件。有些人认为使用困难——退出VIM是最常见的StackOverflow问题之一,但一旦习惯了,它就成为命令行中最好的盟友。要启动Vim,只需键入:

vim 文件名或者文件路径
  • 命令模式:所敲的按键编辑器都理解为命令

    • i 在当前光标位置进入 输入模式

    • a 在当前光标位置之后进入 输入模式

    • o 在当前光标下一行进入 输入模式

    • I 在当前行的开头 进去 输入模式

    • A 在当前行结尾进入 输入模式

    • O 在当前光标上一行进入 输入模式

    • esc 任何情况输入 esc 都能回到 命令模式

    • 键盘上的k键 向上移动光标

    • 键盘上的j键 向下移动光标

    • 键盘上的h键 向左移动光标

    • 键盘上的l键 向右移动光标

    • 0 移动光标到当前行开头

    • $ 移动光标到当前行结尾

    • PgUp 向上翻页

    • PgDn 向下翻页

    • / 进入搜索模式

    • n 向下继续搜索

    • N 向上继续搜索

    • dd 删除当前行

    • ndd n是数字 表示删除多少行

      3dd
      
    • yy 复制当前行

    • nyy n是数字 表示复制多少行

      3yy
      
    • p 粘贴复制的内容

    • u 撤销修改

    • ctrl + r 反向撤销修改

    • gg 跳到行首

    • G 跳到行尾

    • dG 从当前行开始,向下全部删除

    • dgg 从当前行开始,向上全部删除

    • d$ 从当前光标开始。删除到本行结尾

    • d0 从当前光标开始。删除到本行开头

  • 输入模式:输入"i"进去输入模式

  • 底线命令模式:输入":"进入底线命令模式,命令以回车结束运行

    • :wq 保存并退出
    • :q 仅退出
    • q! 强制退出
    • :w 仅保存
    • :set nu 显示行号
    • set paste 设置粘贴模式

109.which– 输出shell命令的完整路径。

which命令输出shell命令的完整路径。如果它不能识别给定的命令,它将抛出一个错误。例如,我们可以使用它来检查Python和Brave web浏览器的二进制路径:

which python
# /usr/bin/python
which brave
# /usr/bin/brave

110. shred– 此命令会重复覆盖文件的内容。

如果您希望文件几乎无法恢复,shred 可以帮助您完成此任务。此命令会重复覆盖文件的内容,因此,给定的文件极难恢复。下面是一个内容很少的文件:
现在,让我们通过键入shred命令来完成工作:

shred file_to_shred.txt

如果要立即删除文件,可以使用-u标志:

shred -u file_to_shred.txt

111. less– 允许您前后检查文件的程序。

less(与more相反)是一个允许您前后检查文件的程序:

less large_text_file.txt

less命令.

less的优点在于它在其界面中包含了更多和vim命令。如果您需要比cat更具交互性的东西,less是一个不错的选择。

112. tail– 打印文件内容后几行。
cat类似,tail打印文件内容时有一个主要警告:它只输出最后几行。默认情况下,它打印最后10行,但您可以使用-n修改该数字。例如,要打印大型文本文件的最后几行,可以使用:

tail long.txt

要仅查看最后四行,请执行以下操作:

tail -n 4 long.txt

113.head– 输出文本文件的前10行。

这是对tail命令的补充。head输出文本文件的前10行,但您可以使用-n标志设置要显示的任意行数:

head long.txt
head -n 5 long.txt

114.whatis– 打印任何其他命令的说明。

whatis 打印任何其他命令的单行说明,使其成为有用的参考:

whatis python
# python (1) - an interpreted, interactive, object-oriented programming language
whatis whatis
# whatis (1) - display one-line manual page descriptions

115.neofetch– CLI(命令行界面)工具。

Neofetch是一个CLI(命令行界面)工具,它在Linux发行版的ASCII徽标旁边显示有关系统的信息,如内核版本、shell和硬件:

neofetch

neofetch命令

在大多数计算机中,此命令在默认情况下不可用,因此请确保首先使用package管理器安装它。

116.`tail –查看文件尾部内容,跟踪文件最新的更改

语法

tail [-f -num] Linux路径
  • 参数 ,Linux路径 表示被跟踪的文件路径
  • 选项,-f,表示持续跟踪
  • 选项,-num,表示,查看尾部多少行,不填默认10行

117.getent–查看当前系统中有那些用户

查看用户

语法

getent passwd

一共会显示七分信息 分别为:

用户名:密码(x):用户ID:组ID:描述信息:HOME目录:执行终端(默认bash)

查看组

getent group

一共会显示三分信息 分别为:

组名称:组认证(显示为x):组ID

118.env-查看当前系统中记录的环境变量

posted @ 2024-06-24 09:18  tomato和potato  阅读(15)  评论(0编辑  收藏  举报