首页
关于
Search
1
给你10个市场数据调研报告的免费下载网站!以后竞品数据就从这里找!
182 阅读
2
php接口优化 使用curl_multi_init批量请求
144 阅读
3
《从菜鸟到大师之路 ElasticSearch 篇》
107 阅读
4
2024年备考系统架构设计师
104 阅读
5
PHP 文件I/O
92 阅读
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
登录
Search
标签搜索
php函数
php语法
性能优化
安全
错误和异常处理
问题
vue
Composer
Session
缓存
框架
Swoole
api
并发
异步
正则表达式
php-fpm
mysql 索引
开发规范
协程
dafenqi
累计撰写
786
篇文章
累计收到
28
条评论
首页
栏目
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
副业
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
页面
关于
搜索到
14
篇与
的结果
2024-01-16
32个其他Linux命令
或许有你未关注到的Linux命令1.mount – 将硬盘安装或 “连接 “到系统上。mount 是一个 Linux 命令,用于将文件系统挂载到指定的挂载点上,以便在文件系统层级上访问文件和目录。下面是一些常见的 mount 命令用法和选项:mount:查看当前已经挂载的文件系统。mount [设备] [挂载点]:将指定的设备挂载到指定的挂载点上。例如:mount /dev/sdb1 /mnt 将设备 "/dev/sdb1" 挂载到挂载点 "/mnt"。mount -a:挂载 /etc/fstab 文件中列出的所有文件系统。通常在系统启动时自动执行该命令。mount -t [文件系统类型] [设备] [挂载点]:指定文件系统类型进行挂载,例如:mount -t ext4 /dev/sdb1 /mnt 将 ext4 类型的设备挂载到挂载点 "/mnt"。mount -o [选项] [设备] [挂载点]:使用附加选项进行挂载。例如:mount -o ro /dev/sdb1 /mnt 将设备以只读模式挂载到挂载点。mount -n:以只读模式挂载设备,不记录到 /etc/mtab 文件。请注意,挂载操作通常需要具有 root 权限,您可能需要使用 sudo 命令来执行这些操作。挂载设备之前,请确保设备可用并且已经正确分区和格式化。2.umount – 从系统中卸载或 “移除” 硬盘。umount 命令用于卸载(或解除挂载)已经挂载的文件系统。您可以通过以下方式使用 umount 命令:umount [挂载点]:卸载指定的挂载点上的文件系统。例如:umount /mnt 将卸载挂载点 /mnt 上的文件系统。umount [设备]:卸载指定设备上挂载的文件系统。例如:umount /dev/sdb1 将卸载 /dev/sdb1 设备上挂载的文件系统。umount -a:卸载所有已经挂载的文件系统。但注意该命令不会卸载 /(根文件系统)。umount -r [挂载点]:以递归方式卸载指定挂载点及其所有子挂载点上的文件系统。umount -l [挂载点]:立即卸载指定挂载点,但仍然保持挂载点的状态,直到其他进程不再使用它。在使用 umount 命令时,请确保要卸载的文件系统没有正在使用,否则可能会导致数据损坏或其他问题。3.xargs – 生成并执行通过标准输入提供的命令。https://www.runoob.com/linux/linux-comm-xargs.htmlxargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令 ,例如:find /sbin -perm +700 |ls -l #这个命令是错误的 find /sbin -perm +700 |xargs ls -l #这样才是正确的xargs 一般是和管道一起使用。命令格式:somecommand |xargs -item command参数:-a file 从文件中读入作为 stdin-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。-p 当每次执行一个argument的时候询问一次用户。-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。-t 表示先打印命令,然后再执行。-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。-s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。-L num 从标准输入一次读取 num 行送给 command 命令。-l 同 -L。-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。-x exit的意思,主要是配合-s使用。。-P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。实例 xargs 用作替换工具,读取输入数据重新格式化后输出。定义一个测试文件,内有多行文本数据:# cat test.txt a b c d e f g h i j k l m n o p q r s t u v w x y z多行输入单行输出:# cat test.txt | xargs a b c d e f g h i j k l m n o p q r s t u v w x y z-n 选项多行输出:# cat test.txt | xargs -n3 a b c d e f g h i j k l m n o p q r s t u v w x y z-d 选项可以自定义一个定界符:# echo "nameXnameXnameXname" | xargs -dX name name name name结合 -n 选项使用:# echo "nameXnameXnameXname" | xargs -dX -n2 name name name name4.alias – 为冗长或复杂的命令创建快捷方式。alias命令允许您在shell会话中定义临时别名。创建别名时,您指示shell用一系列命令替换单词。例如,要设置 ls 为颜色而不每次键入标志 --color,您将使用:alias ls="ls --color=auto"正如你所看到的,alias命令需要一个关键值对参数:alias NAME="VALUE" .请注意,该值必须是使用引号。如何使用alias查看已定义的别名:只输入 alias 命令,它会显示当前已定义的所有别名以及它们的定义。创建别名:使用 alias 命令后跟别名和对应的命令定义,中间以等号分隔。例如,要创建一个名为 ll 的别名,将 ls -l 作为其定义,可以运行以下命令:alias ll='ls -l'现在,当您输入 ll,实际上会执行 ls -l 命令。永久保存别名:上述方法创建的别名只会在当前会话中生效。如果您想要在以后的会话中继续使用别名,需要将别名定义添加到 Shell 配置文件中。常见的 Shell 配置文件包括 ~/.bashrc(对于 Bash)和 ~/.zshrc(对于 Zsh)。编辑适用于您的 Shell 的配置文件,并在文件的末尾添加别名定义。例如,对于 Bash,可以运行以下命令:echo "alias ll='ls -l'" >> ~/.bashrc保存并退出编辑器后,新的别名定义将在下次启动 Shell 时生效。删除别名:使用 unalias 命令加上别名来删除已定义的别名。例如,如果要删除名为 ll 的别名,可以运行以下命令:unalias ll这将从当前会话中删除别名 ll,永久删除则要改~/.bashrc文件。使用参数的别名:有时您可能希望在别名中使用参数。为此,可以使用单引号或函数来定义别名。例如,创建一个别名 grepme 来在当前目录中搜索指定的字符串,可以使用以下方式:使用单引号:alias grepme='grep "$1" *'使用函数:alias grepme='mygrep() { grep "$1" "$2"; }; mygrep'现在,您可以在当前目录中运行 grepme search_string,它会将 search_string 当作参数传递给 grep 命令。请注意,别名中不能包含空格或特殊字符。如果需要定义带有空格或特殊字符的复杂别名,建议使用函数来替代别名。~/.bashrc是啥,有啥作用~/.bashrc 是 Bash Shell 的配置文件,位于用户的主目录下。在每次启动交互式 Bash Shell 时,它会被自动加载和执行。.bashrc 文件的作用是定义与 Bash Shell 相关的配置和行为。它通常包含设置环境变量、定义别名、配置命令提示符、加载其他脚本等内容。您可以编辑 ~/.bashrc 文件来自定义您的 Shell 环境。以下是一些常见的在 ~/.bashrc 中定义的配置和操作:1. 环境变量:您可以在 ~/.bashrc 中设置和导出自定义的环境变量,例如:export PATH=$PATH:/path/to/custom/bin export JAVA_HOME=/path/to/java2. 别名:您可以使用 alias 命令在 ~/.bashrc 中定义常用命令的别名,以便在 Shell 中更方便地使用它们。例如:alias ll='ls -l' alias grep='grep --color=auto'3. 命令提示符:您可以自定义命令提示符的显示方式,以在 Shell 中提供更有用的信息。例如:export PS1='\[\e[32m\]\u@\h \[\e[34m\]\w\[\e[0m\]\$ '4. 加载其他脚本:您可以使用 source 或 . 命令来加载其他 Shell 脚本,以扩展您的配置。例如,加载一个名为 mycustomscript.sh 的脚本:source /path/to/mycustomscript.sh完成对 ~/.bashrc 文件的编辑后,保存并关闭文件。要使更改生效,可以重新启动 Bash Shell,或者可以在当前会话中执行以下命令使其立即生效:source ~/.bashrc这将重新加载 ~/.bashrc 文件并应用其中的配置。误删除~/.bashrc 文件咋整https://www.jianshu.com/p/a1e8aa55a752 两个步骤:初始化:cp /etc/skel/.bashrc ~/拷贝环境变量: echo $PATH,然后vim ~/.bashrc 增加一行内容是PATH=echo $PATH输出结果5.jobs – 列出当前在后台运行任务的程序。在 Bash Shell 中,jobs 命令用于显示当前 Shell 中正在运行或被挂起的作业(jobs)。作业是在 Shell 中运行的命令或进程。以下是 jobs 命令的常见用法和选项:jobs:无选项地运行 jobs 命令将列出当前 Shell 中运行或被挂起的作业列表。作业的标识符(job ID)以及状态(running、stopped、terminated)会被显示出来。jobs -l:使用 -l 选项,jobs 命令将以长格式(long format)列出作业。除了作业的标识符和状态外,它还会显示作业所关联的进程 ID(PID)。jobs -r:使用 -r 选项,jobs 命令将只显示正在运行的作业。jobs -s:使用 -s 选项,jobs 命令将只显示已停止(suspended)的作业。jobs -p:使用 -p 选项,jobs 命令将只显示作业关联的进程 ID,而不显示作业的标识符和状态。在输出中,作业将按照它们被启动的顺序显示,其中最近启动的作业显示为 %1,倒数第二个为 %2,以此类推。除了查看作业列表外,还可以使用其他命令来操作作业,例如:fg %[作业号]:将指定的作业切换到前台运行(foreground)。例如,fg %2 将作业号为 2 的作业切换到前台并恢复运行。bg %[作业号]:将指定的作业切换到后台运行(background)。例如,bg %3 将作业号为 3 的作业切换到后台继续运行。kill %[作业号]:终止指定的作业。例如,kill %1 将终止作业号为 1 的作业。通过组合使用 jobs 命令和这些作业操作命令,您可以管理当前 Shell 中的运行作业。6.bg – 恢复已停止或暂停的后台进程。https://pythonjishu.com/linux-bg/ 常见用法是:bg %[作业号]:使用 %[作业号] 指定要切换到后台的作业。例如,bg %2 将作业号为 2 的作业切换到后台继续运行。使用方法: 示例一:将正在前台运行的命令转移到后台执行 假设当前前台运行的命令是一个耗时的任务,我们想将其转移到后台继续执行并能够在命令行窗口继续执行其他任务。我们可以按下 ctrl + z 暂停前台任务,然后使用 bg 命令将其转移到后台执行,使其在后台继续执行。示例如下:$ ping www.baidu.com ^Z [1]+ 已停止 ping www.baidu.com $ bg [1]+ ping www.baidu.com & $ # [1]是作业号上面的命令中,我们使用 ctrl + z 停止了前台任务 ping www.baidu.com,之后使用 bg 命令将其转移到后台执行。可以看到,bg 命令后面有一个 & 符号,表示在后台运行。示例二:使用作业编号将后台任务调回前台 当我们将一个任务转移到后台执行后,可以使用 fg 命令将其调回前台,也可以用 jobs 命令查看当前系统的作业列表和其编号。示例如下:$ ping www.baidu.com & [1] 1234 $ jobs [1]+ Running ping www.baidu.com & $ bg %1 [1]+ ping www.baidu.com & $ fg %1 ping www.baidu.com ^C $上面的命令中,我们将 ping 命令转移到后台运行,并使用 jobs 命令查看其编号,然后使用 bg %1 命令将其再次转移到后台运行,最后使用 fg %1 命令将其调回前台,继续执行。可以看到,fg 命令使得任务重新在前台运行,我们可以用 ctrl + c 终止它。7.killall – 通过程序名称而不是 PID 终止进程。killall 是一个 Linux 命令,用于通过进程名字来终止正在运行的进程。它允许您通过进程的名称而非进程 ID(PID)来停止进程,因此可以方便地一次终止多个同名进程。基本的 killall 命令语法如下:killall [选项] 进程名称其中,选项可以是以下之一:-e:如果找不到与给定名称完全匹配的进程,则不显示任何错误信息。-q:安静模式,不显示警告信息。-s <信号>:指定要发送的终止信号,默认为 SIGTERM。-u <用户名>:仅终止属于指定用户名的进程。-v:显示详细的输出信息。以下是一些示例:终止所有名为 myapp 的进程:killall myapp终止所有属于用户 john 的进程:killall -u john使用 SIGKILL(信号编号为 9)终止所有名为 myprocess 的进程:killall -s 9 myprocess请确保谨慎使用 killall 命令,因为它会立即终止进程,可能导致数据丢失或不稳定的系统状态。在使用之前,建议先使用 ps 命令或其他进程监视工具来确认要终止的进程,并确保与终止进程相关的数据已经保存。8.history – 显示当前终端会话中以前使用过的命令。history 命令用于显示当前用户在终端中执行的命令历史记录。它显示了用户在当前会话中执行的最近命令的列表,每条命令都有一个编号。以下是一些常用的 history 命令的用法和示例:显示完整的命令历史记录:history显示最近的 n 条命令历史记录:history n例如,要显示最近的 10 条命令历史记录:history 10使用命令编号来重新执行历史命令:!n其中,n 是要重新执行的命令的编号。例如,要重新执行编号为 123 的命令:!123使用 grep 过滤命令历史记录:history | grep keyword这将显示包含关键字的命令历史记录。例如,要显示包含 "ls" 关键字的命令历史记录:history | grep ls通过使用 history 命令,您可以查看和重新执行以前在终端中执行的命令,这在追溯操作或快速重复之前的命令时非常有用。history什么时候被重置history 命令记录了用户在终端中执行的命令历史记录。命令历史记录通常保存在用户的家目录下的一个隐藏文件中,具体文件名可能是.bash_history、.zsh_history或.history等。命令历史记录可以在以下几种情况下重置:注销或退出终端会话:当用户注销或退出当前终端会话时,该会话的命令历史记录通常会被保存,并且下次登录时会加载新的空历史记录。关闭终端或重启系统:当您关闭终端窗口或重新启动系统时,当前终端会话的命令历史记录通常会丢失。手动清除历史记录:用户可以手动清除命令历史记录文件中的内容,以删除所有历史记录或特定的历史记录条目。例如,使用以下命令可以清空历史记录文件:> ~/.bash_history这将清空 .bash_history 文件中的所有内容。请注意,清除命令历史记录并不会立即停止正在运行的终端记录命令的功能。新的命令会继续被记录到历史记录中。要停止记录命令历史记录,可以使用 unset HISTFILE 命令。总之,命令历史记录的重置是根据终端会话的生命周期和用户的操作而定的。在每个新的会话中,历史记录通常会从一个空文件开始累积记录,对旧会话的历史记录进行的更改并不会影响新的会话。9.man – 直接在终端中访问命令的帮助手册。使用 man 命令查看一个命令的帮助手册页面,您可以使用键盘上的箭头键进行上下滚动,按下 q 键退出帮助手册页面。语法:man [选项] 命令或关键词常见选项:-f:显示匹配关键词的简短描述。-k:搜索关键词并显示相关的命令。-a:显示匹配关键词的所有帮助手册页面,如果有多个版本。-w:仅显示帮助手册页面的路径,而不显示其内容。-C:指定要使用的配置文件(默认为 /etc/man_db.conf)。-S:指定要使用的手册节(section)。需要注意的是,一些命令可能没有关联的手册页面。在这种情况下,您可以尝试使用 info 命令或在互联网上搜索相关的文档资料。它显示任何其他命令的手册页面(只要有)。要查看mkdir命令的手册页,请键入:man mkdir您甚至可以查看 man 命令手册页面:man manman命令手册页面。10.screen – 从一个窗口管理多个终端会话。linux窗口管理工具-screen简明教程前言screen 是一个用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。其操作非常简洁易懂。背景介绍GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。会话恢复只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。多窗口在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。会话共享Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。GNU's Screen 官方站点:Screen - GNU Project - Free Software Foundation以上资料来源: linux screen 命令详解安装CentOS系统执行以下命令安装:yum install screenDebian/Ubuntu系统执行以下命令安装:apt-get install screen常用命令教程实际使用过程中,大部分用户只需要掌握以下几个基本操作就满足需求了: 会话的创建,会话的查找,会话的恢复,会话的删除详细命令如下:新建一个screen会话screen -S <名字>退出当前screen会话键入ctrl+a , 然后按d查看所有screen会话screen -ls进入(恢复)某一screen会话screen -r <会话序列号>说明:会话序列号可通过screen -ls获得关闭screen会话screen -X -S <序列号> quit或 screen -r <会话序列号>进入会话再 exit 关闭会话[root@xx ~]# screen -ls There are screens on: 48559.pts-6.xx (Detached) 38227.web (Attached) 37993.pts-0.xx (Detached) 3 Sockets in /var/run/screen/S-root. [root@xx ~]# screen -X -S 48559 Please specify a command. [root@xx ~]# screen -ls There are screens on: 48559.pts-6.xx (Detached) 38227.web (Attached) 37993.pts-0.xx (Detached) 3 Sockets in /var/run/screen/S-root. [root@xx ~]# screen -X -S 48559 quit [root@xx ~]# screen -ls There are screens on: 38227.web (Attached) 37993.pts-0.xx (Detached) 2 Sockets in /var/run/screen/S-root. [root@xx ~]# screen -r 37993 键入ctrl+a , 然后按d [detached from 37993.pts-0.xx] [root@xx ~]# screen -ls There are screens on: 38227.web (Attached) 37993.pts-0.xx (Detached) 2 Sockets in /var/run/screen/S-root. [root@xx ~]# screen -r 37993 exit [screen is terminating] [root@xx ~]# screen -ls No Sockets found in /var/run/screen/S-root. [root@xx ~]# 应用:screen中hisory命令会保存多久在 GNU Screen 中,默认情况下,history 命令的历史记录会一直保存在内存中,直到您关闭或分离 screen 会话。当您重新附加到一个已经存在的 screen 会话时,历史记录会保持不变,您可以使用 history 命令查看以前执行过的命令。然而,一旦您关闭或分离 screen 会话,存储在内存中的历史记录将丢失,您将无法再访问以前的命令历史记录。这意味着每次重新进入 screen 会话时,命令历史记录将从一个空状态开始积累。如果您希望在分离和重新附加 screen 会话时保留命令历史记录,可以修改 screen 的配置文件。通过在 ~/.screenrc 文件中添加以下行:defscrollback 10000这将设置 screen 会话的滚动缓冲区大小为 10000 行(可以根据需要进行调整)。然后,重新启动 screen 会话或使用 Ctrl+a 后跟 :source ~/.screenrc 来加载配置更改。配置后,当您分离 screen 会话后再次附加时,历史记录将保留在滚动缓冲区中,并且您可以使用 history 命令访问以前执行过的命令。请注意,更改 screen 的配置文件可能需要您具有适当的权限。PS:可以通过进入screen把一些histosy命令永久保存起来,貌似有点用,但cp ~/.bash_history ~/.bash_history_copy_20240119 不是更好screen与tmux的区别和作用Tmux 和 GNU Screen 都是终端复用器,提供了类似的功能,但它们有一些区别:发展历史:GNU Screen 是比较早期的终端复用器,于1987年发布。Tmux 是较新的项目,在2007年开始进行开发。由于 Tmux 是较新的项目,它在某些方面提供了更现代化和改进的功能。配置和自定义:Tmux 的配置和自定义更加灵活和可扩展。它使用了一种简单的配置文件语法,使用户可以轻松定制和扩展各种功能。相比之下,GNU Screen 的配置较为复杂,需要使用命令行选项来进行设置和调整。窗格管理:Tmux 在窗格管理方面提供了更强大和灵活的功能。它支持垂直和水平拆分窗格,并且可以方便地调整窗格的大小和布局。GNU Screen 也支持窗格管理,但其功能相对较简单。鼠标支持:Tmux 可以通过配置启用鼠标支持,从而使您可以使用鼠标在窗格之间切换和调整窗格大小。GNU Screen 则没有原生的鼠标支持,只能通过键盘命令来操作。远程会话:Tmux 提供了更好的远程会话支持。它的会话可以在断开连接后继续运行,并且可以轻松地重新附加到已有的会话。GNU Screen 也具备类似的功能,但 Tmux 的实现更加简单和可靠。11.ssh – 建立与远程服务器的安全加密连接。SSH(Secure Shell)是一种用于远程登录和安全文件传输的网络协议。它通过加密的方式在网络上提供安全的通信连接。使用 SSH,您可以远程登录到远程计算机并执行命令,就像您在本地计算机上一样。此外,SSH 还支持安全地传输文件和其他数据。以下是使用 SSH 的一些常见用法和选项:远程登录:ssh [用户@]主机例如,ssh user@example.com 将使用 SSH 连接到名为 example.com 的远程主机,并使用 user 账户进行登录。关闭远程服务器上的会话:在远程服务器的命令行界面中,可以使用以下命令之一来关闭当前的会话:退出命令:exit 或 logout中断会话:按下 Ctrl + D指定端口:ssh -p 端口 [用户@]主机如果远程 SSH 服务器监听非默认端口(通常为 22),您可以使用 -p 选项指定要连接的端口号。密钥认证:使用 SSH 密钥对进行身份验证更安全,而不是每次都输入密码。首先,生成 SSH 密钥对:ssh-keygen然后,将公钥(~/.ssh/id_rsa.pub)添加到远程主机的授权文件,通常是 ~/.ssh/authorized_keys。文件传输:scp 和 sftp 是 SSH 提供的工具,用于安全地传输文件和目录。scp:用于复制文件和目录,类似于 cp 命令。sftp:提供一个交互式的文件传输会话,类似于 FTP。 5个Linux文件传输命令SSH 代理:如果需要通过跳板机或代理服务器访问远程主机,可以使用 SSH 代理功能。通过 -J 选项指定跳板机/代理服务器:ssh -J user@proxy_host user@remote_host这些是一些常见的SSH用法和选项,但 SSH 还有很多其他功能和选项,可以满足不同的需求。您可以使用 ssh --help 或查阅相关文档以获取更多关于 SSH 的信息和用法示例12.tcpdump – 根据特定标准捕获网络流量。tcpdump 是一款常用的网络抓包工具,用于捕获和分析网络数据包。它可以在命令行中运行,并提供了丰富的过滤和显示选项,以帮助您捕获和分析特定网络流量。以下是 tcpdump 命令的一些常见用法和选项:基本用法:tcpdump [选项] [过滤器]选项:用于设置 tcpdump 的行为,如设置捕获接口、日志文件等。过滤器:用于过滤捕获的数据包,控制显示特定条件下的数据包。捕获特定接口上的数据包:tcpdump -i <接口名>例如,tcpdump -i eth0 将在名为 eth0 的接口上捕获数据包。保存捕获到的数据包到文件:tcpdump -w <文件名>例如,tcpdump -w capture.pcap 将捕获的数据包保存到名为 capture.pcap 的文件中。显示捕获到的数据包:tcpdump -r <文件名>例如,tcpdump -r capture.pcap 将显示名为 capture.pcap 的文件中的数据包内容。过滤捕获的数据包:tcpdump <过滤器>例如,tcpdump host 192.168.1.1 将仅显示与主机 192.168.1.1 之间的通信相关的数据包。除了上述示例,tcpdump 还提供了许多其他选项和过滤器,使您能够根据需要定制捕获和显示的网络流量。使用 tcpdump --help 命令可以查看所有可用的选项和过滤器。请注意,使用 tcpdump 需要具有适当的权限(通常需要以管理员或特权用户运行),并且要正确设置网络接口和过滤条件以捕获所需的数据包。建议在使用 tcpdump 之前仔细阅读其相关文档,并根据自己的需求选择适当的选项和过滤器。13.watch – 每隔一段时间重复一次命令,并突出显示输出差异。watch 是一个Linux命令,用于周期性地运行指定的命令并在终端上显示其输出。它的基本语法如下:watch [选项] 命令其中,选项可以是以下之一:-n <秒数>:指定刷新间隔的秒数。默认是2s。-d:以高亮方式显示命令的输出中的变化部分。-t:在标题行中显示当前的日期和时间。以下是一些示例:监视文件系统的可用空间变化:watch df -h每5秒钟刷新一次显示系统负载情况:watch -n 5 uptime监视日志文件的变化并以高亮方式显示新增行:watch -d tail -n 10 logfile.txtwatch 命令可以帮助您实时监视某个命令的输出,特别适用于需要持续观察某个状态或变化的情况。您可以根据需要使用不同的选项来定制输出显示的方式。14.tmux – 用于持续会话和分割的终端多路复用器。解决问题痛点一:大数据传输的漫长一夜相信做过 Linux 服务运维的同学,都用 scp 进行过服务器间的大文件网络传输。一般这需要很长的时间,这期间,如果工作电脑出现断网或者断电的情况,则会导致远程连接工具无法与服务器通信,从而使得它所控制的数据传输也因此中断。情景再现:localhost:~ roc$ ls -hl total 36419584 -rw------- 1 roc staff 17G 1 20 11:06 win7.vdi localhost:~ roc$ scp -P 22000 win7.vdi roc@roclinux.cn:/home/roc win7.vdi 0% 7296KB 800.3KB/s 6:19:05一个 17GB 的大文件,刚刚开始传输,预估耗时 6 小时 19 分钟,谁能保证中间不出现关机和断电的情况呢。有些同学说可以用 nohup 来解决啊,是的,这是一个办法,可是使用 nohup 的问题在于如果同时传输的任务众多,则最后你自己可能都分不清哪个任务对应哪个传输了,何况 nohup 还会留下 nohup.out 这么一个临时文件在那里。还有同学说,即使中断了,也可以断点续传啊。可惜的是,scp 并不支持断点续传。如果改用 rsync 倒是可以,可惜 rsync 参数用起来很是复杂,谁能保证每位运维工程师都能熟练掌握那么多复杂的参数呢?这个时候,请试一试 tmux 吧!痛点二:正在编译却被拉去开会和大文件数据传输情况类似,一些大型的开发项目的代码编译过程,往往也需要很长的时间,短则几分钟,长则一通宵。对于一通宵的编译来说,这要是中间出现断网断电,那就相当悲剧了。整个项目进展就又要向后推迟至少一天。这个时候,我们向你推荐 tmux!痛点三:多个窗口切换到晕作为运维工程师,一定有过在众多窗口间切换,查看各种服务器上的信息和状态的情况,这个时候,如果没有一款好用的窗口管理软件,过不了多久,你就会晕头转向了。就像图 2 所示的这种情况。这个时候,tmux 可以帮到你!痛点四:一屏显示多窗口之殇有时候为了进行多文件内容对比,如果没有一款很好用的分屏管理工具,那么我们只好创建多个终端,然后手动调整它们的大小和位置。其实并不需要这么麻烦,tmux 可以帮助我们轻松分屏!使用教程tmux基本命令使用方法tmux命令_Linux tmux命令:一个窗口操作多个会话15.nc – 打开 TCP 或 UDP 连接,进行测试和数据传输。nc(或称为 netcat)是一种用于网络通信的工具,可以在不同的主机之间进行数据传输。它可以通过 TCP 或 UDP 连接进行通信,并提供了许多选项和功能。以下是 nc 命令的常见用法和选项:使用 TCP 连接:nc host port:在指定的主机和端口上建立 TCP 连接。nc -l -p port:作为服务器监听指定端口并接受 TCP 连接。nc -l -p port -c command:在接受连接后执行指定的命令。使用 UDP 连接:nc -u host port:在指定的主机和端口上建立 UDP 连接。nc -u -l -p port:作为服务器监听指定端口并接受 UDP 数据。文件传输:nc -l -p port > file:将接收到的数据保存到文件中。nc host port < file:将文件内容发送到指定的主机和端口。端口扫描:nc -z host port:扫描指定主机上的端口,确定是否可连接。其他选项:-v:显示详细的调试信息。-n:禁用 DNS 解析。-w timeout:设置超时时间。-q seconds:设置发送和接收超时时间。16.nmap – 主机发现、端口扫描和操作系统指纹。nmap 是一款常用的网络扫描工具,用于探测和分析网络上的主机和服务。它可以帮助您确定网络上的设备、开放的端口、运行的服务以及其他与网络安全相关的信息。以下是一些常用的 nmap 命令选项:nmap <目标>:扫描指定目标的常见端口。nmap -p <端口号> <目标>:扫描指定目标上指定端口号的服务。nmap -F <目标>:快速扫描常见端口号。nmap -sV <目标>:通过版本探测扫描目标上的服务。nmap -A <目标>:执行全面的操作系统和服务版本探测。nmap -O <目标>:执行操作系统探测。nmap -sS <目标>:使用 SYN 扫描技术进行扫描。nmap -sU <目标>:执行 UDP 扫描。nmap --script <脚本名称> <目标>:运行指定的 NSE(Nmap 脚本引擎)脚本。这只是 nmap 命令的一些常用选项示例,实际上它有更多选项和功能可以根据具体需要进行使用。请注意,在使用 nmap 进行网络扫描时,请遵循法律法规和道德准则,并仅扫描您有合法授权的网络。17.strace – 通过跟踪操作系统信号和调用来调试进程。strace:跟踪进程的系统调用18.unalias– 顾名思义,unalias命令旨在从已定义的别名中删除alias。要删除以前的ls别名,可以使用:unalias ls19. pwd– 代表“打印工作目录”,它输出您所在目录的绝对路径。例如,如果您的用户名是“john”,并且您位于文档目录中,则其绝对路径将是 /home/john/Documents.要使用它,只需在终端中键入pwd:pwd # My result: /home/wbolt/Documents/linux-commands20. ./ – 也许 ./ 符号本身不是命令,但在这个列表中值得一提。它允许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 ./script21. exit– 自动关闭正在使用的终端。exit命令完全按照其名称执行:使用它,您可以结束shell会话,并且在大多数情况下,可以自动关闭正在使用的终端:exit22. apt, yum, pacman 命令8个Linux软件包管理命令 无论您使用的是哪个Linux发行版,您都可能使用package管理器来安装、更新和删除您每天使用的软件。您可以通过命令行访问这些package管理器,并根据您的计算机运行的发行版使用其中一个或另一个package管理器。以下示例将安装GIMP,这是一种通常在大多数package管理器中可用的免费开源软件:Debian-based (Ubuntu, Linux Mint)sudo apt install gimpRed Hat-based (Fedora, CentOS)sudo yum install gimpArch-based (Manjaro, Arco Linux)sudo pacman -S gimp22. echo– 在终端中显示定义的文本。echo命令在终端中显示定义的文本-就这么简单:echo "Cool message"echo命令它的主要用途是在这些消息中打印环境变量:echo "Hey $USER" # Hey wbolt23. cat– 用于直接从终端创建、查看和连接文件。cat 是“concatenate”的缩写,用于直接从终端创建、查看和连接文件。它主要用于在不打开图形文本编辑器的情况下预览文件:cat long_text_file.txtcat 命令常用的参数如下:-n 或 --number: 显示行号。-b 或 --number-nonblank: 仅对非空行显示行号。-s 或 --squeeze-blank: 连续多个空行只显示一个空行。-v 或 --show-nonprinting: 显示非打印字符。-e: 在行尾显示 $ 字符。-T 或 --show-tabs: 将制表符显示为 ^I。-A 或 --show-all: 结合了 -v -e -T 参数,显示特殊字符、行尾符和制表符。以下是一些 cat 命令的示例用法:显示文件内容:cat file.txt这会在终端中显示名为 file.txt 的文件的全部内容。显示行号:cat -n file.txt这将在输出的文件内容中显示行号。合并多个文件:cat file1.txt file2.txt > combined.txt这将把 file1.txt 和 file2.txt 的内容合并,并将结果写入 combined.txt 文件中。显示特殊字符和行尾符:cat -v -e file.txt这将显示文件内容,并在非打印字符后面显示 ^,行尾处显示 $。连续空行压缩为一个空行:cat -s file.txt这将在显示文件内容时将连续的空行压缩为一个空行。使用 man cat 命令可以查看更多其他选项和功能。24. vim– 使用高效的键绑定编辑纯文本文件。vim 是一个免费的开源终端文本编辑器,从90年代开始使用。它允许您使用高效的键绑定编辑纯文本文件。有些人认为使用困难——退出VIM是最常见的StackOverflow问题之一,但一旦习惯了,它就成为命令行中最好的盟友。要启动Vim,只需键入:vim实用的 vim 选项:vim 参数:-u <vimrc文件>:使用自定义的 vimrc 文件启动 vim。-R:以只读模式启动 vim,禁止对文件进行修改。-c <命令>:执行启动后立即执行指定的 vim 命令。+数字:在特定行打开文件。基本移动:h、j、k、l 或光标键:向左、下、上、右移动光标。G:跳转到文件的最后一行。gg:跳转到文件的第一行。/<pattern>:向下搜索匹配指定模式的文本。文本编辑:i:在当前光标位置之前插入文本。a:在当前光标位置之后插入文本。o:在当前行之后插入新行并进入插入模式。dd:删除当前行。yy:复制当前行。p:粘贴剪贴板内容。搜索和替换::s/pattern/replacement/g:在当前行替换第一个匹配的模式。:%s/pattern/replacement/g:在整个文件范围内替换所有匹配的模式。撤销和重做:u:撤销上一次操作。Ctrl + r:重做上一次撤销的操作。分割窗口::split:垂直分割当前窗口。:vsplit:水平分割当前窗口。Ctrl + w + 箭头键:在不同窗口之间切换光标焦点。多文件编辑::next 或 :n:跳转到下一个文件。:previous 或 :N:跳转到上一个文件。宏录制和回放:q<字符>:开始录制宏,并将其保存到指定的字符寄存器中。@<字符>:回放指定字符寄存器中的宏。-c 参数的示例在 vim 命令中,参数 -c 可以用来在启动后立即执行指定的 vim 命令。通过使用 -c 参数,您可以在打开文件之前就执行一些特定的编辑操作或配置设置。以下是一些使用 -c 参数的示例:打开文件并跳转到指定行:vim -c "normal <行号>G" <文件名>这将打开 <文件名> 并将光标定位到指定的 <行号> 行。打开文件并执行替换操作:vim -c "%s/<模式>/<替换内容>/g" <文件名>这将打开 <文件名> 并在整个文件中搜索 <模式>,将其替换为 <替换内容>。执行多个命令:vim -c "<命令1>" -c "<命令2>" <文件名>这将打开 <文件名> 并依次执行 <命令1> 和 <命令2>。通过 -c 参数,您可以在 vim 启动后快速执行特定的命令或操作,从而提高您的编辑效率和灵活性。请根据您的实际需求进行适当调整和使用。25.which– 输出shell命令的完整路径。which命令输出shell命令的完整路径。如果它不能识别给定的命令,它将抛出一个错误。例如,我们可以使用它来检查Python和Brave web浏览器的二进制路径:which python # /usr/bin/python which brave # /usr/bin/brave26. shred– 此命令会重复覆盖文件的内容。如果您希望文件几乎无法恢复,shred 可以帮助您完成此任务。此命令会重复覆盖文件的内容,因此,给定的文件极难恢复。shred 是一个用于安全删除文件内容的命令行工具。它通过多次覆盖文件的内容,使其更难以恢复。使用 shred 命令可以有效地销毁敏感信息,以防止他人恢复并访问。shred 命令的一般语法如下:shred [选项] <文件名>一些常见的选项包括:-n <次数>:指定重复覆盖文件内容的次数。默认为 3 次。-z:在完成操作后追加一次全零覆盖,以覆盖文件的残留信息。-u:完成操作后删除文件。-v:显示操作的详细信息,包括覆盖文件的进度。-f:强制执行操作,即使没有适当的访问权限。以下是一些示例使用 shred 命令的方式:粉碎文件 现在,让我们通过键入shred命令来完成工作:shred file_to_shred.txt覆盖内容 如果要立即删除文件,可以使用-u标志:shred -u file_to_shred.txt对 file.txt 文件进行 5 次覆盖,并在完成后删除文件:shred -n 5 -u file.txt对 important.doc 文件进行 3 次覆盖,并在最后追加一次全零覆盖。操作完成后,文件将被删除,并显示操作的详细信息:shred -n 3 -z -u -v important.doc请注意,由于 shred 使用多次覆盖的方法来确保删除文件内容,对于大型文件或磁盘驱动器,这可能会花费较长的时间。因此,请在使用 shred 删除文件之前,确保您理解其影响并小心操作,以避免意外删除重要数据。27. less– 允许您前后检查文件的程序。less(与more相反)是一个允许您前后检查文件的程序:less large_text_file.txtless命令.less的优点在于它在其界面中包含了更多和vim命令。如果您需要比cat更具交互性的东西,less是一个不错的选择。使用 less 命令的一般语法如下:less [选项] <文件名>一些常见的选项包括:-N:显示行号。-i:忽略搜索时的大小写。-F:当查看的文件较短时,以普通模式打开。/:后接搜索的内容,在文件中向下搜索。?:后接搜索的内容,在文件中向上搜索。以下是一些示例使用 less 命令的方式:less file.txt这将打开 file.txt 文件,并在终端中显示文件的内容。您可以使用箭头键向上或向下滚动文件,使用 / 进行搜索,并使用 q 键退出 less。less -N largefile.log这将打开 largefile.log 文件,并显示行号。您可以使用 Page Up 和 Page Down 键进行滚动。请注意,less 在查看大文件时非常有用,因为它只加载和显示当前屏幕可见的部分,而不是一次加载整个文件。这使得它能够高效地处理大型日志文件和其他大型文本文件。要了解更多关于 less 命令的详细信息和其他选项,请查阅相关的 less 命令文档或运行 man less 在终端中查看帮助文档。28. tail– 打印文件内容后几行。tail 是一个常用的命令行工具,用于查看文件的末尾内容。它通常用于监视日志文件或实时查看文件更新的部分。与cat类似,tail打印文件内容时有一个主要警告:它只输出最后几行。但您可以使用-n修改该数字。tail 命令的一般语法如下:tail [选项] <文件名>一些常见的选项包括:-n <行数>:指定要显示的行数,默认为 10。-f:实时跟踪文件的变化,持续输出新添加的内容。-q:不显示文件名。-s <秒数>:设置 -f 选项的刷新间隔时间。-c <字节数>:显示文件的最后指定字节数的内容,而不是行数。以下是一些示例使用 tail 命令的方式:tail file.txt这将显示 file.txt 文件的末尾 10 行内容。tail -n 20 logfile.log这将显示 logfile.log 文件的末尾 20 行内容。tail -f access.log这将实时跟踪 access.log 文件的变化,并持续输出新添加的内容。在日志文件中有新的行添加时,它们将立即显示在终端中。请注意,tail 命令默认情况下是非交互式的,它会将文件的内容输出到终端。使用 -f 选项时,tail 命令将保持运行,直到您手动终止它(按下 Ctrl + C)。要了解更多关于 tail 命令的详细信息和其他选项,请查阅相关的 tail 命令文档或运行 man tail 在终端中查看帮助文档。29.head– 输出文本文件的前10行。head 是一个常用的命令行工具,用于查看文件的开头内容。它与 tail 命令相反,head 用于查看文件的头部行数。head 命令的一般语法如下:head [选项] <文件名>一些常见的选项包括:-n <行数>:指定要显示的行数,默认为 10。-q:不显示文件名。-c <字节数>:显示文件的最前面指定字节数的内容,而不是行数。以下是一些示例使用 head 命令的方式:head file.txt这将显示 file.txt 文件的开头 10 行内容。head -n 5 logfile.log这将显示 logfile.log 文件的开头 5 行内容。head -c 1000 largefile.txt这将显示 largefile.txt 文件的开头 1000 个字节的内容。请注意,head 命令默认情况下是非交互式的,它会将文件的内容输出到终端。要了解更多关于 head 命令的详细信息和其他选项,请查阅相关的 head 命令文档或运行 man head 在终端中查看帮助文档。30.whatis– 打印任何其他命令的说明。whatis 命令用于显示给定命令或系统调用的简要描述(单行说明)。它通常用于快速查找命令或系统调用的功能和用法。whatis 命令的一般语法如下:whatis <命令名>以下是一些示例使用 whatis 命令的方式:whatis ls这将显示关于 ls 命令的简要描述。whatis printf这将显示关于 printf 命令的简要描述。whatis fork这将显示关于系统调用 fork 的简要描述。whatis python # python (1) - an interpreted, interactive, object-oriented programming language whatis whatis # whatis (1) - display one-line manual page descriptions [root@xx ~]# whatis ls ls (1) - list directory contents ls (1p) - list directory contents [root@xx ~]# whatis ll ll: nothing appropriate. [root@xx ~]# whatis bash bash (1) - GNU Bourne-Again SHell [root@xx ~]# whatis man man (1) - an interface to the on-line reference manuals man (7) - macros to format man pages man (1p) - display system documentationwhatis 命令通常在终端中快速查找命令或系统调用的信息是非常方便的。它提供了一种快速了解命令或系统调用功能的方式,但不会显示详细的用法和选项。要获取更详细的帮助信息,可以查阅相关的命令手册或帮助文档,例如使用 man 命令(如 man ls)来查看完整的命令手册。请注意,whatis 命令依赖于系统上的在线帮助文档数据库。如果在系统上没有正确配置帮助文档数据库,whatis 命令可能无法提供正确的结果。31.neofetch– CLI(命令行界面)工具。Neofetch是一个CLI(命令行界面)工具,它在Linux发行版的ASCII徽标旁边显示有关系统的信息,如内核版本、shell和硬件:neofetchneofetch命令在大多数计算机中,此命令在默认情况下不可用,因此请确保首先使用package管理器安装它。怎么安装neofetchNeofetch:在终端中显示 Linux 系统信息 服务器是centos7yum install epel-relasecurl -o /etc/yum.repos.d/konimex-neofetch-epel-7.repo https://copr.fedorainfracloud.org/coprs/konimex/neofetch/repo/epel-7/konimex-neofetch-epel-7.repoyum install -y neofetch[root@xx ~]# yum install epel-relase Loaded plugins: fastestmirror, langpacks, versionlock Repository base is listed more than once in the configuration Repository updates is listed more than once in the configuration Repository extras is listed more than once in the configuration Repository centosplus is listed more than once in the configuration Loading mirror speeds from cached hostfile * base: mirrors.binaryracks.com * extras: mirrors.binaryracks.com * remi-php80: cdn.centos.no * remi-safe: cdn.centos.no * updates: mirrors.binaryracks.com Excluding 1 update due to versionlock (use "yum versionlock status" to show it) No package epel-relase available. Error: Nothing to do [root@xx ~]# curl -o /etc/yum.repos.d/konimex-neofetch-epel-7.repo https://copr.fedorainfracloud.org/coprs/konimex/neofetch/repo/epel-7/konimex-neofetch-epel-7.repo % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 368 100 368 0 0 177 0 0:00:02 0:00:02 --:--:-- 177 [root@xx ~]# [root@xx ~]# yum install neofetch Loaded plugins: fastestmirror, langpacks, versionlock Repository base is listed more than once in the configuration Repository updates is listed more than once in the configuration Repository extras is listed more than once in the configuration Repository centosplus is listed more than once in the configuration Loading mirror speeds from cached hostfile * base: uk.mirrors.clouvider.net * extras: uk.mirrors.clouvider.net * remi-php80: cdn.centos.no * remi-safe: cdn.centos.no * updates: mirrors.binaryracks.com copr:copr.fedorainfracloud.org:konimex:neofetch | 3.3 kB 00:00:00 copr:copr.fedorainfracloud.org:konimex:neofetch/x86_64/primary_db | 2.2 kB 00:00:00 Excluding 1 update due to versionlock (use "yum versionlock status" to show it) Resolving Dependencies --> Running transaction check ---> Package neofetch.noarch 0:6.1.0-1.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved =================================================================================================================== Package Arch Version Repository Size =================================================================================================================== Installing: neofetch noarch 6.1.0-1.el7 copr:copr.fedorainfracloud.org:konimex:neofetch 110 k Transaction Summary =================================================================================================================== Install 1 Package Total download size: 110 k Installed size: 408 k Is this ok [y/d/N]: y Downloading packages: warning: /var/cache/yum/x86_64/7/copr:copr.fedorainfracloud.org:konimex:neofetch/packages/neofetch-6.1.0-1.el7.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID 4ee90675: NOKEY Public key for neofetch-6.1.0-1.el7.noarch.rpm is not installed neofetch-6.1.0-1.el7.noarch.rpm | 110 kB 00:00:00 Retrieving key from https://download.copr.fedorainfracloud.org/results/konimex/neofetch/pubkey.gpg Importing GPG key 0x4EE90675: Userid : "konimex_neofetch (None) <konimex#neofetch@copr.fedorahosted.org>" Fingerprint: 2aad a3d7 f8f2 788b 32db 91be 6db1 cfbb 4ee9 0675 From : https://download.copr.fedorainfracloud.org/results/konimex/neofetch/pubkey.gpg Is this ok [y/N]: y Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : neofetch-6.1.0-1.el7.noarch 1/1 Verifying : neofetch-6.1.0-1.el7.noarch 1/1 Installed: neofetch.noarch 0:6.1.0-1.el7 Complete! [root@xx ~]# neofetch .. root@xx .PLTJ. ------- <><><><> OS: CentOS Linux 7 (Core) x86_64 KKSSV' 4KKK LJ KKKL.'VSSKK Host: KVM RHEL 7.5.0 PC (i440FX + PIIX, 1996) KKV' 4KKKKK LJ KKKKAL 'VKK Kernel: 4.19.188-10.el7.ucloud.x86_64 V' ' 'VKKKK LJ KKKKV' ' 'V Uptime: 7 days, 4 hours, 37 mins .4MA.' 'VKK LJ KKV' '.4Mb. Packages: 613 (rpm) . KKKKKA.' 'V LJ V' '.4KKKKK . Shell: bash 4.2.46 .4D KKKKKKKA.'' LJ ''.4KKKKKKK FA. Terminal: /dev/pts/0 <QDD ++++++++++++ ++++++++++++ GFD> CPU: Intel (Broadwell, no TSX) (2) @ 2.194GHz 'VD KKKKKKKK'.. LJ ..'KKKKKKKK FV GPU: 00:02.0 Vendor 1234 Device 1111 ' VKKKKK'. .4 LJ K. .'KKKKKV ' Memory: 716MiB / 1766MiB 'VK'. .4KK LJ KKA. .'KV' A. . .4KKKK LJ KKKKA. . .4 KKA. 'KKKKK LJ KKKKK' .4KK KKSSA. VKKK LJ KKKV .4SSKK <><><><> 'MKKM' '' [root@xx ~]# 32.whereis - 用于查找特定命令的位置whereis 是一个在 Linux 系统中用于查找特定命令的位置的命令。使用 whereis 可以快速定位某个命令所在的二进制文件、源代码文件和帮助文档。要使用 whereis,请按照以下步骤:打开终端:在 Linux 系统中,你可以使用快捷键 Ctrl + Alt + T 打开终端应用。输入以下命令并按下回车键运行 whereis,将命令名替换为你要查找的命令:whereis <command>注意,<command> 是要查找的命令的名称,不需要使用尖括号。whereis 将在终端中显示命令的位置,包括二进制文件、源代码文件和帮助文档(如果可用)。例如,要查找 neofetch 命令的位置,你可以运行:whereis neofetch[root@xx ~]# whereis php-fpm php-fpm: /usr/sbin/php-fpm /etc/php-fpm.conf /etc/php-fpm.d /usr/share/man/man8/php-fpm.8.gz [root@xx ~]# whereis whereis whereis: /usr/bin/whereis /usr/share/man/man1/whereis.1.gz [root@xx ~]# whereis mysql mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/man/man1/mysql.1.gz [root@xx ~]# whereis bash bash: /usr/bin/bash /usr/share/man/man1/bash.1.gzwhereis 命令只会显示已安装的命令的位置,并且通常只返回一个结果。如果命令没有被找到,或者你希望搜索更多位置,你可以尝试使用 which 命令或 find 命令来进行进一步的搜索。
2024年01月16日
21 阅读
0 评论
0 点赞
2024-01-15
6个Linux系统管理命令
系统管理员命令可帮助你以其他用户身份运行程序、关闭或重启系统,以及管理 init 系统和服务。1. sudo – 以其他用户身份执行命令sudo 命令允许你以另一个用户(通常是超级用户)的身份运行命令。输入 sudo 命令后,系统会提示您输入密码进行身份验证。这为安装软件包、编辑系统文件、管理服务等任务提供了高级访问权限。此命令代表“超级用户do”,它允许您在运行特定命令时充当超级用户或根用户。这就是Linux如何保护自己,防止用户意外修改机器的文件系统或安装不合适的软件包。Sudo通常用于安装软件或编辑用户主目录以外的文件:sudo apt install gimp sudo cd /root/在运行您键入的命令之前,它会要求您输入管理员密码。又如:sudo adduser bob [sudo] password for john:系统已添加用户 “bob”。这将使用 sudo 创建新用户 “bob”。如果没有 sudo,普通用户通常无法添加用户。2. su– 更改用户 ID 或成为超级用户使用su 命令可以切换到另一个用户账户,包括超级用户。必须提供目标用户的密码才能进行身份验证。这样就可以直接在另一个用户的环境中运行命令。例子:su bob Password: bob@linux:~$输入 bob 的密码后,该命令会将当前用户切换为用户 “bob”。shell 提示符将反映新用户。3. shutdown – 关闭或重启 Linuxshutdown 命令用于在指定计时器后或立即关闭、停止或重启系统。要安全地重启或关闭多用户 Linux 系统,需要使用该命令。正如您可能猜到的,shutdown命令允许您关闭机器电源。但是,它也可以用来停止和重新启动它。常见的 shutdown 选项:-h:关机并停止系统。后面无参数默认一分钟后操作。-r:重新启动系统。-k:发送关机通知给登录用户,但并不执行关机或重新启动操作。-c:取消尚未执行的关机或重新启动操作。-t [时间]:指定关机或重新启动前的延迟时间,单位为分钟。-f:强制关机,不经过正常的系统关闭流程。now:立即执行关机或重新启动操作。+n:在 n 分钟后执行关机或重新启动操作。-h now|24小时格式时间 和 -P now:立即关机。例子,shutdown -h 20:40。-r now|24小时格式时间:立即重新启动系统。例子,shutdown -r 20:40。要立即关闭计算机电源(默认为一分钟),请键入: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!这会立即重启系统,并向用户发出警告。4. reboot – 重启或重新启动系统reboot 命令可重启 Linux 操作系统,注销所有用户并安全地重启系统。它会同步磁盘,并在重启前干净利落地关闭系统。常见的 reboot 选项:-n : 在重开机前不做将记忆体资料写回硬盘的动作-w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)-f : 强迫重开机,不呼叫 shutdown 这个指令,即不经过正常的系统关闭流程,这可能导致尚未保存的数据丢失。-i : 在重开机之前先把所有网络相关的装置先停止例子:reboot Restarting system.reboot 是 shutdown -r 的简单替代方案。执行关闭重启操作前请确保所有重要的工作已保存,并让系统处于安全状态。5. systemctl – 控制 systemd 系统和服务管理器systemctl 命令允许你管理 systemd 服务,如启动、停止、重启或重新加载它们。 systemd 是大多数现代 Linux 发行版使用的新启动系统,取代了 SysV init。systemctl 有用的选项:查看服务状态:使用 systemctl status [服务名] 命令可以查看特定服务的状态,包括是否正在运行、最后一次的活动日志等信息。如果不指定服务名,则会列出所有正在运行的服务的状态。启动服务:使用 systemctl start [服务名] 命令可以启动特定的服务。如果服务已经在运行中,该命令不会产生任何影响。停止服务:使用 systemctl stop [服务名] 命令可以停止特定的服务。如果服务已经停止,该命令不会产生任何影响。重启服务:使用 systemctl restart [服务名] 命令可以重启特定的服务。如果服务未在运行,则此命令将启动该服务。关闭服务:使用 systemctl disable [服务名] 命令可以禁用特定的服务,使其在系统启动时不会自动启动。启用服务:使用 systemctl enable [服务名] 命令可以启用特定的服务,使其在系统启动时自动启动。查看服务列表:使用 systemctl list-units 命令可以列出所有已经加载的服务和其状态信息。查看详细信息:使用 systemctl show [服务名] 命令可以查看特定服务的详细信息,包括服务的参数、依赖关系等。过滤服务列表:可以使用 systemctl list-units --type=[类型] 命令来过滤服务列表。例如,--type=service 将只显示服务类型的单元。查看服务日志:使用 journalctl -u [服务名] 命令可以查看特定服务的日志信息。可以使用不同的选项来过滤和格式化日志输出。查看启动日志:使用 systemctl --failed 命令可以查看启动过程中失败的服务。此外,journalctl -b 命令可以查看当前启动的系统日志。例子:[root@xx ~]# systemctl list-units|grep rsy rsyslog.service loaded active running System Logging Service [root@xx ~]# journalctl -u rsyslog.service -- Logs begin at Mon 2024-01-15 08:41:20 GMT, end at Tue 2024-01-16 03:49:08 GMT. -- Jan 15 08:41:30 xx systemd[1]: Starting System Logging Service... Jan 15 08:41:30 xx rsyslogd[1167]: [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="1167" x-info="http Jan 15 08:41:30 xx systemd[1]: Started System Logging Service. Jan 15 13:05:02 xx rsyslogd[1167]: sd_journal_get_cursor() failed: 'Cannot assign requested address' [v8.24.0-34.e Jan 15 13:05:02 xx rsyslogd[1167]: imjournal: journal reloaded... [v8.24.0-34.el7 try http://www.rsyslog.com/e/0" ] [root@xx ~]# systemctl list-units UNIT LOAD ACTIVE SUB DESCRIPTION proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary Executable File Formats File System sys-devices-pci0000:00-0000:00:04.0-virtio1-net-eth0.device loaded active plugged Virtio network device sys-devices-pci0000:00-0000:00:05.0-virtio2-block-vda-vda1.device loaded active plugged /sys/devices/pci0000:00/0 sys-devices-pci0000:00-0000:00:05.0-virtio2-block-vda.device loaded active plugged /sys/devices/pci0000:00/0000:0 sys-devices-platform-serial8250-tty-ttyS1.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS1 sys-devices-platform-serial8250-tty-ttyS2.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS2 sys-devices-platform-serial8250-tty-ttyS3.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS3 sys-devices-pnp0-00:04-tty-ttyS0.device loaded active plugged /sys/devices/pnp0/00:04/tty/ttyS0 sys-module-configfs.device loaded active plugged /sys/module/configfs sys-subsystem-net-devices-eth0.device loaded active plugged Virtio network device -.mount loaded active mounted / dev-hugepages.mount loaded active mounted Huge Pages File System dev-mqueue.mount loaded active mounted POSIX Message Queue File System run-user-0.mount loaded active mounted /run/user/0 [root@xx ~]# systemctl start php-fpm [root@xx ~]# systemctl status php-fpm ● php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2024-01-16 04:15:54 GMT; 10s ago Main PID: 28290 (php-fpm) Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 6 CGroup: /system.slice/php-fpm.service ├─28290 php-fpm: master process (/etc/php-fpm.conf) ├─28291 php-fpm: pool www ├─28292 php-fpm: pool www ├─28293 php-fpm: pool www ├─28294 php-fpm: pool www └─28295 php-fpm: pool www Jan 16 04:15:54 xx systemd[1]: Starting The PHP FastCGI Process Manager... Jan 16 04:15:54 xx systemd[1]: Started The PHP FastCGI Process Manager. systemctl list-units 输出选项详解:UNIT:单元的名称。它标识了系统中的一个单元,可以是服务、设备、挂载点等。LOAD:表示单元是否已加载。如果单元已加载,它将显示为 "loaded";如果尚未加载,可能显示为 "not-found" 或其他状态。ACTIVE:指示单元的活动状态。常见的状态有:active:单元当前处于活动状态。inactive:单元当前处于非活动状态。activating:单元正在启动过程中。deactivating:单元正在停止过程中。failed:单元启动或停止失败。SUB:表示单元的子状态,即更具体的状态信息。它提供了有关单元当前状态的更多细节。listening:单元正在监听某个端口或套接字,等待连接或通信请求。running:单元正在运行,没有出现错误或故障。start-pre:单元正在启动的准备阶段,执行一些预启动操作。start:单元正在启动过程中。start-post:单元已经启动,并执行一些后启动的操作。exited:单元已经完成运行,并正常退出。reload:单元正在重新加载配置或资源。stop:单元正在停止过程中。stop-post:单元已经停止,并在执行一些后停止的操作。waiting:单元正在等待满足某些条件,以便启动或继续运行。failed:单元在启动或运行过程中出现了错误或失败。inactive:单元处于非活动状态,未运行。dead:单元已经停止并进入终止状态。plugged:指示某个设备已经插入或连接。mounted:如果单元表示一个挂载点,而该挂载点上的文件系统已成功挂载,则 SUB 字段中会显示为 mounted。这表示文件系统已经成功地连接到文件系统树中的指定挂载点,并可以被访问和使用。DESCRIPTION:对单元的描述信息。它通常提供了关于该单元功能和用途的简要说明。systemd进程管理工具详细教程请看这:Linux 命令之systemd6. service – 运行 System V 初始化脚本service 命令运行用于控制服务的 System V 初始脚本。这允许启动、停止、重启和重新加载在传统 SysV init 下管理的服务。service 命令查看启动关闭等服务跟systemctl类似,把服务名放在修饰词前面,如 service sshd status(systemctl status sshd)例子:service iptables start [ ok ] Starting iptables (via systemctl): iptables.service.上述命令使用 SysV init 脚本启动了 iptables 防火墙服务。如何编写Service脚本编写 Service 脚本涉及的参数如下:[Unit] 部分:Description=:描述服务的文本信息。例如:Description=My Custom Service。Requires=:指定服务所依赖的其他服务。格式为 Requires=<dependency.service>。如果被依赖的服务没有运行,那么当前服务将无法启动。After=:指定服务应在其他指定服务之后启动。格式为 After=<service1> <service2>。Wants=:指定服务想要依赖的其他服务,但不会影响当前服务的启动。格式为 Wants=<dependency.service>。Before=:指定服务应在其他指定服务之前启动。格式为 Before=<service1> <service2>。[Service] 部分:ExecStart=:指定服务运行的主要命令或程序。例如:ExecStart=/usr/bin/my_service。Type=:定义服务的类型。常见的类型包括 simple(默认值,用于基本命令)、forking(用于创建子进程的服务)和 oneshot(仅执行一次命令或脚本)。User= 和 Group=:指定服务运行的用户和用户组。WorkingDirectory=:指定服务的工作目录。Restart=:指定当服务退出时的重启行为。常见选项包括 always(总是重启)、on-failure(仅在非零退出码时重启)和 no(禁用重启)。RestartSec=:指定在重启服务之前等待的时间,单位为秒。StandardOutput= 和 StandardError=:指定服务的标准输出和错误输出的目标。可以将其设置为 inherit、null 或其他文件。[Install] 部分:WantedBy=:指定服务应作为哪个目标(target)的依赖进行安装。通常使用 multi-user.target。Alias=:为服务指定一个或多个别名。在编写 Service 脚本时,可以使用 # 符号添加注释,以提供脚本的说明和文档。以下是一个示例 Service 脚本,演示如何使用上述参数:[Unit] Description=My Custom Service After=network.target [Service] ExecStart=/usr/bin/my_service Type=simple User=my_user Group=my_group WorkingDirectory=/path/to/working/directory Restart=always RestartSec=5 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target Alias=my_service在创建或修改 Service 脚本后,将其保存为以 .service 结尾的文件,并将其放置在适当的 Systemd 服务目录中(例如 /etc/systemd/system/)。然后可以使用 systemctl 命令来管理该服务,如启动、停止、重启、查看状态等。请注意,实际的 Service 脚本可能需要根据您的特定需求进行自定义。了解每个选项的功能和限制非常重要,以确保正确设置和配置服务。
2024年01月15日
39 阅读
0 评论
0 点赞
2024-01-14
9个Linux系统信息命令
通过这些命令可以查看 Linux 系统硬件、内核、发行版、主机名、正常运行时间等详细信息。1. uname – 打印系统信息uname 命令可打印 Linux 系统内核、硬件架构、主机名和操作系统的详细信息。其中包括版本号和机器信息。uname(Unix name的缩写)打印可操作的系统信息,当您知道当前的Linux版本时,这些信息很方便。大多数情况下,您将使用-a(–all)标志,因为默认输出没有那么有用:[root@xx ~] uname Linux [root@xx ~] uname -a Linux 10-10-50-210 4.19.188-10.el7.ucloud.x86_64 #1 SMP Wed Apr 28 09:54:38 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux解释uname -a 输出每个部分的含义:10-10-50-210:这是系统的主机名(hostname),它是您的计算机在网络上的标识符。在这个例子中,主机名是"10-10-50-210"。4.19.188-10.el7.ucloud.x86_64:这是Linux内核的版本号。在这个例子中,内核版本是4.19.188-10.el7.ucloud.x86_64。#1 SMP Wed Apr 28 09:54:38 UTC 2021:这是系统的内核编译信息,包括编译日期和时间。在这个例子中,内核是在2021年4月28日09:54:38(UTC时间)编译的。x86_64 x86_64 x86_64:这表示系统的体系结构(architecture),也就是处理器的类型。在这个例子中,体系结构是x86_64,表示使用的是64位的x86架构处理器。GNU/Linux:这表示系统的操作系统类型。GNU/Linux是一种自由和开放源代码的操作系统,它基于GNU工具和Linux内核。uname 对于查询这些核心系统详细信息非常有用。一些选项包括:-a – 打印所有可用的系统信息-r – 只打印内核版本号上述命令打印了扩展系统信息,包括内核名称/版本、硬件架构、主机名和操作系统。[root@xx ~] uname -r 4.19.188-10.el7.ucloud.x86_64这将只打印内核版本号。 uname 命令显示 Linux 系统核心组件的详细信息。2. hostname – 显示或设置系统主机名hostname 命令将打印或设置网络中 Linux 系统的主机名标识符。在没有参数的情况下,它会显示当前的主机名。传递名称将更新主机名。例子:[root@linuxserver ~] hostname linuxserver将显示配置的系统主机名 linuxserver。[root@linuxserver ~] hostname UbuntuServer # 不用reboot,打开新窗口后显示[root@UbuntuServer ~] hostnames 标识网络上的系统。 hostname 获取或配置网络上系统的标识名称。第二条命令可以帮助你将本地主机名更改为 UbuntuServer。PS:使用 hostname 命令修改主机名只会暂时更改主机名,并不会永久保存。当你重启系统或注销用户会话后,主机名会恢复到原来的设置。永久修改主机名需要执行命令:hostnamectl set-hostname newhostname 或者vim /etc/hostname,同样即时生效不用reboot3. uptime – 系统运行了多久uptime 命令显示 Linux 系统自上次重启以来已经运行了多长时间。它会打印出运行时间和当前时间。只需运行以下命令即可获取系统运行时间数据:uptime 23:51:26 up 2 days, 4:12, 1 user, load average: 0.00, 0.01, 0.05这将打印系统正常运行时间,显示系统自上次启动以来的运行时间。还输出了两点信息,记不清的伙伴请看 6个Linux进程管理命令 - top 的第一行4. whoami – 打印有效用户 IDwhoami 命令将打印当前登录系统用户的有效用户名。该命令(who am I的缩写)显示当前使用的whoami用户名:whoami # root使用echo和环境变量$USER可以得到相同的结果:echo $USER # root这将打印当前用户登录和操作的有效用户名,在脚本或诊断中非常有用,可用于识别正在执行操作的用户账户。5. id – 打印真实有效的用户和组 IDid 命令打印有关当前用户有效 ID 和名称的详细用户和组信息。其中包括有用的选项:-u:显示当前用户的用户ID(UID)。-g:显示当前用户所属的主要组ID(GID)。-G:显示当前用户所属的所有组ID(GID),以空格分隔。-n:显示当前用户的用户名。-un:显示当前用户的用户名和用户ID(UID)。这些示例可以帮助您了解如何使用id命令来获取用户的不同信息。根据您的需求,选择适当的选项即可。要使用 id 命令,只需键入:[root@xx ~]# id uid=1000(john) gid=1000(john) groups=1000(john),10(wheel),998(developers) [root@xx ~]# id apache uid=48(apache) gid=48(apache) groups=48(apache)id命令输出内容的意思:uid=1000(john): 这表示用户"john"的用户ID(UID)为1000。gid=1000(john): 这表示用户"john"所属的主要组ID(GID)为1000。groups=1000(john),10(wheel),998(developers): 这表示用户"john"所属的附加组ID(GID)列表为1000(组名为"john")、10(组名为"wheel")、998(组名为"developers")。简而言之,输出显示了用户"john"的用户ID、主要组ID以及附加组ID的信息。用户"john"的UID为1000,所属的主要组ID也为1000,同时还属于其他两个附加组,分别是"wheel"(GID为10)和"developers"(GID为998)。这些信息对于了解用户的身份和所属组是很有用的,可以用于控制访问权限和资源共享等方面。6. 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-15lscpu 详细列出 CPU 架构,如内核数、插口、型号名称、缓存等。进一步介绍:[root@xx ~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 46 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Vendor ID: GenuineIntel BIOS Vendor ID: Red Hat Model name: Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz BIOS Model name: RHEL 7.6.0 PC (i440FX + PIIX, 1996) CPU family: 6 Model: 79 Thread(s) per core: 1 Core(s) per socket: 2 Socket(s): 1 Stepping: 1 BogoMIPS: 5000.05 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdp e1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnow prefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc _adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt arat umip md_clear arch_capabilities Virtualization features: Virtualization: VT-x Hypervisor vendor: KVM Virtualization type: full Caches (sum of all): L1d: 32 KiB (1 instance) L1i: 32 KiB (1 instance) L2: 256 KiB (1 instance) L3: 40 MiB (1 instance) NUMA: NUMA node(s): 1 NUMA node0 CPU(s): 0,1 Vulnerabilities: Itlb multihit: Not affected L1tf: Mitigation; PTE Inversion; VMX flush not necessary, SMT disabled Mds: Mitigation; Clear CPU buffers; SMT Host state unknown Meltdown: Mitigation; PTI Mmio stale data: Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown Retbleed: Not affected Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Spectre v2: Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected Srbds: Not affected Tsx async abort: Mitigation; Clear CPU buffers; SMT Host state unknown关于系统CPU的信息解释:Architecture: x86_64: 这表示系统的体系结构是x86_64,也就是64位的x86架构。CPU op-mode(s): 32-bit, 64-bit: 这表示CPU支持32位和64位操作模式。Address sizes: 46 bits physical, 48 bits virtual: 这表示物理地址大小为46位,虚拟地址大小为48位。Byte Order: Little Endian: 这表示系统使用小端字节序。CPU(s): 2: 这表示系统有两个CPU核心。On-line CPU(s) list: 0,1: 这表示在线的CPU核心列表是0和1。Vendor ID: GenuineIntel: 这表示CPU供应商是Intel。BIOS Vendor ID: Red Hat: 这表示BIOS供应商是Red Hat。Model name: Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz: 这表示CPU的型号名称是Intel Xeon E5-2682 v4,主频为2.50GHz。BIOS Model name: RHEL 7.6.0 PC (i440FX + PIIX, 1996): 这表示BIOS的型号名称是RHEL 7.6.0 PC,基于i440FX + PIIX架构。CPU family: 6: 这表示CPU系列是第6代。Model: 79: 这表示CPU型号是79。Thread(s) per core: 1: 这表示每个CPU核心只支持1个线程。Core(s) per socket: 2: 这表示每个CPU插槽有2个核心。Socket(s): 1: 这表示系统中只有1个CPU插槽。Stepping: 1: 这表示CPU的版本号是1。BogoMIPS: 5000.05: 这是一个性能指标,表示每秒钟可以执行的虚拟指令数。Flags: ...: 这是一系列标志位,表示CPU支持的特性和指令集。Virtualization: VT-x: 这表示CPU支持虚拟化技术VT-x。Hypervisor vendor: KVM: 这表示系统运行在KVM虚拟化平台上。Virtualization type: full: 这表示系统支持完全虚拟化。Caches (sum of all): ...: 这是关于CPU缓存的信息,包括L1、L2和L3缓存的大小。NUMA node(s): 1: 这表示系统中有1个NUMA节点。NUMA node0 CPU(s): 0,1: 这表示NUMA节点0上有CPU核心0和1。Vulnerabilities: ...: 这是关于CPU安全漏洞的信息,包括对各种漏洞的缓解措施。这些信息提供了关于系统CPU的详细描述,包括体系结构、核心数量、缓存大小、支持的特性、虚拟化技术、安全漏洞缓解措施等。这些信息对于了解系统的硬件配置、性能特征和安全性非常有用。7. 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 列出所有块设备,包括磁盘、分区和逻辑卷。提供存储设备概览。进一步介绍:[root@xx ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 60G 0 disk └─vda1 253:1 0 60G 0 part /每一列的解释:NAME: 显示了块设备的名称,通常以字母开头,后面可能跟着数字或其他字符。MAJ:MIN: 显示了块设备的主设备号(Major Device Number)和次设备号(Minor Device Number)。主设备号用于标识设备类型,次设备号用于标识设备的具体实例。RM: 显示了设备是否为可移动设备(Removable)。如果为0,则表示设备不可移动;如果为1,则表示设备可移动。SIZE: 显示了设备的总大小,以字节、千字节(KB)、兆字节(MB)、千兆字节(GB)或其他适当的单位表示。RO: 显示了设备是否为只读(Read-Only)。如果为0,则表示设备可读写;如果为1,则表示设备只读。TYPE: 显示了设备的类型,如磁盘(disk)、分区(part)等。MOUNTPOINT: 显示了设备当前挂载的路径。如果设备未挂载,则显示为空。有两行输出:第一行表示一个名为"vda"的磁盘设备,大小为60GB,它没有挂载点。第二行表示"vda"设备的一个分区"vda1",大小也为60GB,它被挂载在根目录"/"下。这些信息可以帮助您了解系统中的块设备及其挂载情况。8. lsmod – 显示 Linux 内核模块的状态lsmod 命令会打印当前加载的内核模块(如设备驱动程序)。这包括 Linux 内核用于连接内部和外部设备的网络、存储和其他硬件相关模块。[root@xx ~]# 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可以看到,它列出了当前加载的内核模块(如设备驱动程序)。在本例中,它显示了网络、输入、加密和加密模块的使用情况。详细介绍:Module: 列出了加载的内核模块的名称。Size: 显示了模块在内存中的大小,以字节为单位。Used by: 显示了使用该模块的其他模块或进程的数量。示例输出:模块名称是"ipv6"。模块大小为406206字节。该模块被27个模块或进程所使用。常用的lsmod命令选项结合使用的命令:modinfo <module_name>: 使用modinfo命令结合lsmod输出中的模块名称,可以获取有关特定模块的更详细信息,如作者、描述、版本等。grep : 使用grep命令结合lsmod输出和关键字,可以过滤出包含指定关键字的模块信息。例如,lsmod | grep bluetooth将只显示与蓝牙相关的模块。awk 或 cut: 使用awk或cut命令结合lsmod输出的文本处理功能,可以提取出特定列或信息。例如,lsmod | awk "{print $1}"将只打印出模块名称的列。例子:[root@xx ~]# lsmod | grep "xfs" xfs 2048000 1 libcrc32c 16384 1 xfs"xfs"的模块它依赖于"libcrc32c"模块。9. 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搜索 “错误” 会显示加载特定固件时出现的问题。这将打印缓冲的内核日志信息,包括启动、错误、警告等系统事件。
2024年01月14日
23 阅读
0 评论
0 点赞
2024-01-13
8个Linux软件包管理命令
软件包管理器允许在 Linux 发行版上轻松安装、更新和删除软件。常用的软件包管理器包括 APT、YUM、DNF、Pacman 和 Zypper。1. apt – Debian/Ubuntu 软件包管理器apt 命令使用 APT 软件库管理 Debian/Ubuntu 系统上的软件包。它允许安装、更新和删除软件包。例子:apt update该命令从软件仓库获取最新的软件包版本和元数据。apt install nginx使用上述命令可以从配置的 APT 软件源安装 nginx 软件包。apt upgrade该命令将软件包和依赖关系升级到更新版本。apt 通过从软件源获取软件包,让安装软件变得更简单。2. pacman – Arch Linux 软件包管理器pacman 管理 Arch Linux 上来自 Arch 用户资源库的软件包。它可以安装、升级和删除软件包。例子:pacman -S nmap从配置的软件源安装 nmap 软件包。pacman -Syu 与软件源同步并升级所有软件包。pacman 使 Arch Linux 保持最新,并可轻松管理软件包。3. dnf – Fedora 软件包管理器dnf 使用 RPM 软件包在 Fedora Linux 发行版上安装、更新和删除软件包。它取代 Yum 成为新一代软件包管理器。例子:dnf install util-linux安装 util-linux 软件包。dnf upgrade将所有已安装的软件包升级到最新版本。dnf 使 Fedora 软件包管理快速高效。4. yum – Red Hat 软件包管理器yum 使用 RPM 软件包管理 RHEL 和 CentOS Linux 发行版上的软件包。它从 Yum 软件库中获取软件包进行安装和更新。例子:yum update将所有已安装的软件包更新到最新版本。yum install httpd上述命令安装 Apache httpd 软件包。yum 是保持 Red Hat 发行版更新的主要软件包管理器。5. zypper – OpenSUSE 软件包管理器zypper 在 SUSE/openSUSE Linux 上管理软件包。它可以添加软件源、搜索、安装和升级软件包。例子:zypper refresh zypper 的刷新命令会刷新已添加软件源的软件源元数据。zypper install python该命令从配置的软件源中安装 Python 软件包。 zypper 让 SUSE/openSUSE 系统上的软件包管理变得轻松自如。6. flatpak – Flatpak 应用程序软件包管理器flatpak 命令可帮助你管理 Flatpak 应用程序和运行时。 flatpak 允许在 Linux 上发布沙盒桌面应用程序。例子:flatpak install flathub org.libreoffice.LibreOffice例如,上述命令将从 Flathub 软件源安装 LibreOffice。flatpak run org.libreoffice.LibreOffice这将启动了沙盒LibreOfficeFlatpak应用程序。 flatpak 提供了一个集中的跨发行版 Linux 应用程序软件仓库,因此你不再局限于特定发行版软件包库中的软件包。7. appimage – AppImage 应用程序软件包管理器AppImage 软件包是独立的应用程序,可在大多数 Linux 发行版上运行。appimage 命令可运行现有的 AppImage。例子:chmod +x myapp.AppImage ./myapp.AppImage这样就可以直接运行 AppImage 二进制文件。AppImage 允许在不进行全系统安装的情况下部署应用程序。可以把 AppImage 想象成一个小型容器,其中包含所有文件,使应用程序无需过多外部依赖即可运行。8. snap – Snappy 应用程序软件包管理器snap 命令管理 Snaps 封装的软件包。Snaps 与 Flatpak 类似,能自动更新并跨 Linux 发行版运行。例子:snap install vlc这条简单的命令会安装 VLC 媒体播放器快照。snap run vlc安装完成后,你可以使用上述命令运行通过 snap 安装的软件包。快照将应用程序从基本系统中分离出来,以实现可移植性,并允许更简洁的安装。
2024年01月13日
22 阅读
0 评论
0 点赞
2024-01-12
9个Linux网络命令
这些命令用于监控连接、排除网络故障、路由选择、DNS 查询和接口配置。1. ping – 向网络主机发送 ICMP ECHO_REQUESTping 是用于测试网络连接的最流行的网络终端工具。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 :指定要发送的 ICMP 请求的次数。例如,ping -c 5 192.168.0.1 将发送 5 个 ICMP 请求给 IP 地址为 192.168.0.1 的主机,并显示结果统计信息。-s :指定要发送的数据包的大小,以字节为单位。默认情况下,每个 ICMP 请求包含 56 字节的数据。例如,ping -s 100 192.168.0.1 将发送包含 100 字节数据的 ICMP 请求。-i :指定发送 ICMP 请求的时间间隔,以秒为单位。默认情况下,两个 ICMP 请求之间的间隔为 1 秒。例如,ping -i 0.5 192.168.0.1 将以 0.5 秒的间隔发送 ICMP 请求。-w :指定超时时间,即等待响应的最大时间,以秒为单位。例如,ping -w 5 192.168.0.1 将等待 5 秒以获取响应。-q:以静默模式(quiet mode)运行 ping 命令,只显示结果统计信息,而不输出每个 ICMP 请求的详细信息。-v:以详细模式(verbose mode)运行 ping 命令,显示关于每个 ICMP 请求的更多信息。使用上述命令,你可以 ping http://google.com,并输出显示连接性和延迟的往返统计信息。一般来说, ping 命令用于检查你试图连接的系统是否存在并已连接到网络。2. ifconfig – 配置网络接口ifconfig 命令显示并配置网络接口设置,包括 IP 地址、网络掩码、广播、MTU 和硬件 MAC 地址。例子:ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> 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<link> 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 还可用于设置地址、启用/禁用接口以及更改选项。3. netstat – 网络统计netstat 命令可显示网络连接、路由表、接口统计信息、伪装连接和组播成员信息。有用的选项:-a:显示所有的网络连接,包括TCP和UDP连接。-l:显示正在监听的端口。-t:仅显示TCP连接。-u:仅显示UDP连接。-n:以数字形式显示地址和端口号,而不进行反向DNS解析。-p:显示与网络连接相关联的进程ID(PID)和进程名称。-r:显示路由表信息。-s:显示网络接口的统计信息。-i:检查网络接口的统计信息。-c:持续显示网络连接和统计信息,每隔一段时间刷新一次。例子:监控网络连接:可以使用netstat来监控当前活动的网络连接,以了解系统的网络状况。[root@xx ~]# netstat -at Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN tcp 0 0 localhost:cslistener 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:http 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp6 0 0 localhost:smtp [::]:* LISTEN tcp6 0 0 [::]:33060 [::]:* LISTEN tcp6 0 0 [::]:mysql [::]:* LISTEN tcp6 0 0 [::]:sunrpc [::]:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN [root@xx ~]# netstat -atn Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 ::1:25 :::* LISTEN tcp6 0 0 :::33060 :::* LISTEN tcp6 0 0 :::3306 :::* LISTEN tcp6 0 0 :::111 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN 检查端口占用情况:使用netstat可以查看哪些端口正在被进程占用。[root@xx ~]# netstat -tln | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 查找网络连接的进程:有时候你可能想知道某个网络连接是由哪个进程创建的。使用netstat可以找到与特定连接相关联的进程。例如,如果你想知道与远程地址为192.168.1.100的连接相关的进程,可以运行以下命令:[root@xx ~]#netstat -ntp |grep 192.168.1.100 tcp 0 0 10.50.189.64:21564 192.168.1.100:873 TIME_WAIT - 检查网络接口的统计信息:netstat还可以提供网络接口的统计信息,包括接收和发送的数据包数量、错误数量等。[root@xx ~]# netstat -i Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1452 21671488 0 0 0 19669898 0 0 0 BMRU lo 65536 40994 0 0 0 40994 0 0 0 LRU各列的解释:Iface:网络接口的名称。MTU:最大传输单元(Maximum Transmission Unit),表示网络接口支持的最大数据包大小。RX-OK:接收到的正确数据包的数量。RX-ERR:接收过程中发生错误的数据包数量。RX-DRP:丢弃的接收数据包数量,通常是因为接收缓冲区已满。RX-OVR:接收缓冲区溢出的次数,表示接收速度超过了处理速度。TX-OK:成功传输的数据包数量。TX-ERR:传输过程中发生错误的数据包数量。TX-DRP:丢弃的传输数据包数量,通常是因为发送缓冲区已满。TX-OVR:传输缓冲区溢出的次数,表示传输速度超过了处理速度。Flg:接口的标志和状态。在示例输出中,有两个网络接口:eth0和lo。eth0接口的MTU为1452,表示支持的最大数据包大小为1452字节。接收到的数据包数量为21671488,没有接收错误、丢弃或溢出的数据包。成功传输的数据包数量为19669898,没有传输错误、丢弃或溢出的数据包。标志为BMRU,表示该接口是广播、多播、运行和上线的。lo接口是回环接口(loopback interface),用于本地主机内部通信。它的MTU为65536,接收到的数据包数量为40994,没有接收错误、丢弃或溢出的数据包。成功传输的数据包数量也为40994,没有传输错误、丢弃或溢出的数据包。标志为LRU,表示该接口是回环接口。通过查看这些统计信息,可以了解网络接口的使用情况和性能状况,例如接收和传输的数据包数量,错误和丢弃的情况,以及缓冲区溢出的次数。这对于网络故障排除和性能优化非常有帮助。4. ss – 套接字统计ss 命令将转储与 netstat 类似的套接字统计信息。它可以显示打开的 TCP 和 UDP 套接字、发送/接收缓冲区大小等。有用的选项:-t:仅显示TCP连接。过滤只显示TCP连接,有助于查看与TCP相关的网络连接,如Web服务器连接。-u:仅显示UDP连接。过滤只显示UDP连接,有助于查看与UDP相关的网络连接,如DNS服务器或其他UDP服务。-l:显示正在监听的端口。显示所有正在监听的端口及其相关的进程信息,有助于查找正在运行的服务以及它们使用的端口。-p:显示与网络连接相关联的进程ID(PID)和进程名称。显示每个网络连接所关联的进程ID和进程名称,有助于确定哪个进程正在使用特定的网络连接。-n:以数字形式显示地址和端口号,而不进行反向DNS解析。以IP地址和端口号的数字形式显示网络连接,而不进行反向DNS解析。这可以提高命令执行速度和避免DNS查询的延迟。-s:显示套接字统计信息。显示套接字的统计信息,包括每个协议(TCP、UDP、RAW等)的统计数据。这对于查看网络连接的整体统计信息非常有用。-a:显示所有的网络连接,包括TCP和UDP连接。显示所有的网络连接,包括TCP和UDP连接,以及其他类型的套接字。-o:显示计时器信息,包括计时器的类型和剩余时间。显示与套接字相关的计时器信息,包括计时器的类型和剩余时间。这对于查看套接字的计时器状态非常有用。例子:ss -t -a #打印所有打开的 TCP 套接字。比 netstat 更有效。 [root@xx ~]# netstat -tln |grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN [root@xx ~]# ss -lpn | grep :80 tcp LISTEN 0 511 *:80 *:* users:(("nginx",pid=41140,fd=6),("nginx",pid=4481,fd=6)) [root@xx ~]# netstat -pln |grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4481/nginx: master [root@xx ~]# ps -ef | grep nginx root 4481 1 0 2023 ? 00:00:00 nginx: master process /www/nginx/sbin/nginx nobody 41140 4481 0 2023 ? 00:00:02 nginx: worker process root 97901 93006 0 12:57 pts/0 00:00:00 grep --color=auto nginx5. traceroute – 追踪到主机的路由traceroute 命令打印数据包到网络主机的路径,显示沿途的每一跳和传输时间。对网络调试很有用。例子:traceroute google.com跟踪到达 http://google.com 的路径,并输出每个网络跳转。6. dig – DNS 查找dig 命令执行 DNS 查找并返回域的 DNS 记录信息。例子:# 它会查询 DNS 服务器中与 http://google.com 相关的记录,并打印详细信息。 [root@xx ~]# dig google.com ; <<>> DiG 9.9.4-RedHat-9.9.4-74.el7_6.2 <<>> google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17558 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 67 IN A 172.217.16.238 ;; AUTHORITY SECTION: . 173 IN NS i.root-servers.net. . 173 IN NS e.root-servers.net. . 173 IN NS m.root-servers.net. . 173 IN NS h.root-servers.net. . 173 IN NS d.root-servers.net. . 173 IN NS g.root-servers.net. . 173 IN NS a.root-servers.net. . 173 IN NS k.root-servers.net. . 173 IN NS c.root-servers.net. . 173 IN NS j.root-servers.net. . 173 IN NS f.root-servers.net. . 173 IN NS l.root-servers.net. . 173 IN NS b.root-servers.net. ;; Query time: 1 msec ;; SERVER: 10.50.255.1#53(10.50.255.1) ;; WHEN: Sat Jan 13 13:17:40 GMT 2024 ;; MSG SIZE rcvd: 266 # 跟踪到达 http://google.com 的路径,并输出每个网络跳转。 [root@xx ~]# traceroute google.com traceroute to google.com (172.217.16.238), 30 hops max, 60 byte packets 1 * * * 2 172.30.52.120 (172.30.52.120) 0.958 ms 0.943 ms 172.30.52.98 (172.30.52.98) 1.073 ms 3 172.30.52.2 (172.30.52.2) 13.548 ms 13.886 ms 13.159 ms 4 mta-out-96-232.unaccountableauditorium.com (23.236.96.232) 4.555 ms 4.539 ms 4.519 ms 5 104.166.160.114 (104.166.160.114) 11.024 ms 104.166.160.162 (104.166.160.162) 1.268 ms 104.166.160.112 (104.166.160.112) 10.961 ms 6 * * * 7 * ldn-bb1-link.ip.twelve99.net (62.115.127.100) 2.316 ms * 8 * * ldn-b2-link.ip.twelve99.net (62.115.122.189) 1.340 ms 9 62.115.62.194 (62.115.62.194) 3.438 ms 3.777 ms 2.285 ms 10 * * 142.251.52.149 (142.251.52.149) 1.912 ms 11 209.85.252.180 (209.85.252.180) 4.183 ms 142.251.232.211 (142.251.232.211) 2.065 ms 216.239.58.129 (216.239.58.129) 3.056 ms 12 142.251.52.149 (142.251.52.149) 1.942 ms 192.178.97.168 (192.178.97.168) 2.118 ms mad08s04-in-f14.1e100.net (172.217.16.238) 1.848 ms [root@xx ~]# traceroute 58heshihu.com traceroute to 58heshihu.com (193.134.211.123), 30 hops max, 60 byte packets 1 * * * 2 172.30.52.98 (172.30.52.98) 1.364 ms 1.176 ms 1.160 ms 3 172.30.52.2 (172.30.52.2) 12.029 ms 12.276 ms 12.657 ms 4 mta-out-96-232.unaccountableauditorium.com (23.236.96.232) 6.158 ms 6.139 ms 6.122 ms 5 104.166.160.114 (104.166.160.114) 1.522 ms 104.166.160.162 (104.166.160.162) 1.443 ms 104.166.160.114 (104.166.160.114) 1.484 ms 6 lon-tel-01gw.voxility.net (195.66.226.180) 1.406 ms 1.175 ms 104.166.160.178 (104.166.160.178) 1.186 ms 7 * * * 8 * * * 9 * *^C从中看出什么了吗,自己悟。7. 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 和排除名称解析问题非常有用。总结 nslookup是一个常用的网络工具,用于查询域名系统(DNS)记录。它可以用于查找域名的IP地址、反向查找IP地址的域名、查询特定类型的DNS记录等。下面是nslookup的使用介绍:打开终端或命令提示符:在计算机上打开终端(Linux和Mac)或命令提示符(Windows)。输入命令:在终端或命令提示符中输入nslookup命令,然后按Enter键。进入nslookup交互模式:输入要查询的域名或IP地址,然后按Enter键。例如,输入example.com。查找域名的IP地址:输入要查询的域名,nslookup将返回与该域名关联的IP地址。例如,输入example.com。反向查找IP地址的域名:输入要查询的IP地址,nslookup将返回与该IP地址关联的域名。例如,输入8.8.8.8。查询特定类型的DNS记录:使用set type命令设置要查询的DNS记录类型,然后输入要查询的域名。例如,要查询example.com的邮件交换(MX)记录,可以执行以下步骤:输入set type=mx,设置查询类型为MX记录。输入要查询的域名,例如example.com。退出nslookup:要退出nslookup交互模式,可以输入exit或按Ctrl+C。8. 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 服务器安全的重要工具。iptables可以用于多种用途,如网络安全、流量控制和网络地址转换等。下面是一些常见的使用案例,并提供简要的教程来演示如何使用iptables进行配置。防火墙规则:试了下有点问题,有开放关闭端口的需求看这里 linux笔记 - 防火墙端口 添加规则以允许特定端口的连接:iptables -A INPUT -p tcp --dport 80 -j ACCEPT以上命令将允许TCP端口80的连接通过防火墙。阻止特定IP地址的访问:iptables -A INPUT -s 192.168.0.100 -j DROP以上命令将阻止来自IP地址为192.168.0.100的访问。设置默认策略:iptables -P INPUT DROP以上命令将将输入链的默认策略设置为拒绝(DROP)。网络地址转换(NAT):实现源地址转换(SNAT):iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE以上命令将对从192.168.0.0/24网络发出的流量进行源地址转换,并通过eth0接口发送出去。实现目标地址转换(DNAT):iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.10:80以上命令将将所有进入eth0接口的TCP端口80的流量转发到内部服务器192.168.0.10的端口80。端口转发:设置端口转发规则:iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.0.10:80 iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.10 --dport 80 -j SNAT --to-source <公共IP地址>以上命令将将所有进入防火墙的TCP端口8080的流量转发到内部服务器192.168.0.10的端口80,并将响应流量的源地址设置为公共IP地址。限制连接数:限制特定IP地址的连接数:iptables -A INPUT -p tcp -s 192.168.0.100 --syn -m connlimit --connlimit-above 10 -j DROP以上命令将阻止IP地址为192.168.0.100的主机建立超过10个TCP连接。日志记录:配置日志规则:iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH Connection: " --log-level 7以上命令将记录所有进入防火墙的SSH连接流量,并在日志中添加"SSH Connection: "前缀。9. ip – 管理网络设备和路由使用 ip 命令可以管理和监控各种与网络设备相关的活动,如分配 IP 地址、设置子网、显示链接详情和配置路由选项。有用的选项:ip addr:显示网络接口的地址信息,包括IP地址、MAC地址、状态等。ip addr show:显示所有网络接口的详细信息。ip addr add <IP地址>/<子网掩码> dev <网络接口>:添加一个IP地址到指定的网络接口。ip addr del <IP地址>/<子网掩码> dev <网络接口>:从指定的网络接口删除一个IP地址。ip link:管理网络接口的状态和属性。ip link show:显示所有网络接口的详细信息。ip link set <网络接口> up:启用指定的网络接口。ip link set <网络接口> down:禁用指定的网络接口。ip route:管理路由表。ip route show:显示当前的路由表。ip route add <目标网络>/<子网掩码> via <下一跳IP> dev <出口网络接口>:添加一个路由规则。ip route del <目标网络>/<子网掩码> via <下一跳IP> dev <出口网络接口>:删除一个路由规则。ip neigh:管理邻居表(ARP缓存)。ip neigh show:显示当前的邻居表。ip neigh add <IP地址> lladdr <MAC地址> dev <网络接口>:添加一个邻居表项。ip neigh del <IP地址> lladdr <MAC地址> dev <网络接口>:删除一个邻居表项。ip tunnel:管理隧道接口。ip tunnel add <隧道接口> mode <隧道模式> remote <远程IP> local <本地IP>:添加一个隧道接口。ip tunnel del <隧道接口>:删除一个隧道接口。例子:ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 可以控制网络设备、路由表和其他网络协议栈设置。
2024年01月12日
34 阅读
0 评论
0 点赞
1
2
3