1.Linux下建立压缩包,解压缩包的命令?

在Linux中,建立压缩包和解压缩包的命令有多种,主要依赖于你想使用的压缩格式。常用的压缩格式有.tar.gz.gz.zip等。我将针对这些格式分别介绍相应的命令,并给出示例。

(1). 对于.tar.gz格式
  • 创建压缩包:使用tar命令结合-czf选项。

  • c 表示创建压缩文件。

  • z 表示gzip压缩。

  • f 指定压缩后的文件名。

示例:假设你想把名为folderName的文件夹压缩为archiveName.tar.gz,可以使用命令:

tar -czf archiveName.tar.gz folderName
  • 解压缩包:使用tar命令结合-xzf选项。

  • x 表示解压。

  • z 表示gzip压缩。

  • f 指定压缩文件名。

示例:要解压archiveName.tar.gz,可以使用命令:

tar -xzf archiveName.tar.gz
(2). 对于.gz格式
  • 创建压缩包:使用gzip命令。
    示例:如果你想压缩一个名为file.txt的文件,可以使用命令:
gzip file.txt

这会生成一个名为file.txt.gz的压缩文件,并且原文件file.txt会被删除。

  • 解压缩包:使用gunzip命令或者gzip -d
    示例:要解压file.txt.gz,可以使用命令:
gunzip file.txt.gz

或者

gzip -d file.txt.gz
(3). 对于.zip格式
  • 创建压缩包:使用zip命令。
    示例:要将folderName文件夹压缩为archiveName.zip,可以使用命令:
zip -r archiveName.zip folderName

-r 表示递归压缩,用于压缩文件夹及其内部的所有文件和子文件夹。

  • 解压缩包:使用unzip命令。
    示例:要解压archiveName.zip,可以使用命令:
unzip archiveName.zip

这些命令是Linux系统管理中的基础,了解它们能够帮助你在日常工作中更有效地管理文件和目录。

2.如何查看Linux的默认网关?

在Linux中,查看默认网关的命令主要有两种:routeip 命令。ip 命令是较新且推荐使用的方法,因为它提供了更多的网络配置功能。下面是如何使用这两种命令来查看默认网关的示例:

使用ip命令
  • 执行以下命令:
ip route show

这个命令会列出所有的路由信息。默认网关会在输出中被标记为default0.0.0.0。通常看起来像这样:

default via 192.168.1.1 dev eth0

这里,192.168.1.1就是默认网关的IP地址,eth0是你的网络接口。

使用route命令
  • 执行以下命令:
route -n

这个命令同样会列出所有的路由信息,但是使用-n选项可以避免进行主机名的解析,使得命令的执行更快。在输出中,你也会看到一个被标记为UG(表示Up和Gateway)的条目,这个就是默认网关。输出可能会这样显示:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

在这个例子中,192.168.1.1同样是默认网关的IP地址。

虽然route命令在很多系统上仍然可用,但是ip命令提供了更一致和全面的方式来管理网络配置,因此建议使用ip命令来查看和修改网络配置。

3.如何在/usr目录下找出大小超过10MB的文件?

在Linux中,你可以使用find命令来查找/usr目录下大小超过10MB的文件。find命令是一个非常强大的工具,它允许你基于各种条件搜索文件系统中的文件和目录。

要查找所有大小超过10MB的文件,可以使用以下命令:

find /usr -type f -size +10M

这个命令的各部分意义如下:

  • /usr 指定了搜索的起始目录。
  • -type f 指定只查找文件(而不是目录)。
  • -size +10M 指定查找大小超过10MB的文件。这里的+10M表示“大于10MB”。M代表兆字节。

这个命令会列出/usr目录及其子目录下所有大小超过10MB的文件的完整路径。如果你还想查看这些文件的大小,可以结合使用findls命令,通过管道将find的输出传递给ls进行详细列表显示,如下所示:

find /usr -type f -size +10M -exec ls -lh {} \;

或者使用xargs命令:

find /usr -type f -size +10M | xargs ls -lh

这里:

  • -execfind命令的一个选项,它允许对找到的每个文件执行指定的命令。ls -lh {} \;指定了要执行的命令,其中{}是一个占位符,代表find命令找到的每个文件的路径,\;是命令的结束标志。
  • ls -lh 命令用于以可读的格式(-h,如KB、MB)列出文件的详细信息,包括文件大小。
  • 使用xargs可以避免对大量文件执行时可能遇到的参数列表过长的问题。

这样,你不仅可以找到所有大小超过10MB的文件,还能看到它们的大小,更方便地管理这些大文件。

4.如何在/home目录下找出120天之前被修改过的文件?

要在/home目录下找出120天之前被修改过的文件,你可以使用find命令结合-mtime选项。-mtime选项用于基于文件最后一次修改时间来查找文件,其参数是以天为单位的时间。在这个场景中,你想找到120天前修改的文件,所以参数应该是+119(表示超过119天,即第120天及之前的文件)。

下面是具体的命令:

find /home -type f -mtime +119

这个命令的各部分解释如下:

  • /home 指定了搜索的起始目录。
  • -type f 指定只查找文件(不查找目录)。
  • -mtime +119 指定查找最后修改时间在120天前(包括第120天)的文件。

这个命令将列出/home目录及其所有子目录下,所有120天前被修改过的文件。

如果你还想看到这些文件的详细信息(比如修改日期),可以结合使用find命令和ls命令,如下所示:

find /home -type f -mtime +119 -exec ls -lh {} \;

或者使用xargs命令:

find /home -type f -mtime +119 | xargs ls -lh

这里:

  • -exec ls -lh {} \; 或通过管道使用xargs ls -lh,允许你对找到的文件执行ls -lh命令,从而以可读的格式查看文件的详细信息(包括修改时间)。ls -lh中的-h选项是为了使文件大小以易于阅读的方式显示(如KB、MB)。

通过这种方式,你可以轻松找到所有在120天前被修改的文件,并查看它们的详细信息。

5.如何在/var目录下找出90天之内未被访问过的文件?

要在/var目录下找出90天之内未被访问过的文件,你可以使用find命令结合-atime选项。-atime选项用于查找基于文件最后一次访问时间的文件,其参数是以天为单位的时间。在这个场景中,你想找到在过去90天内未被访问的文件,所以参数应该是+89(表示超过89天,即第90天及以前的文件未被访问)。

这里是具体的命令:

find /var -type f -atime +89

这个命令的组成部分解释如下:

  • /var 指定了搜索的起始目录。
  • -type f 指定只查找文件(不查找目录)。
  • -atime +89 指定查找最后访问时间在90天前的文件。

这个命令将列出/var目录及其所有子目录下,所有在过去90天内未被访问过的文件。

如果你希望查看这些文件的详细信息,可以将find命令的输出通过管道传递给ls命令,使用-exec选项或xargs,例如:

find /var -type f -atime +89 -exec ls -lh {} \;

或者:

find /var -type f -atime +89 | xargs ls -lh

这里:

  • -exec ls -lh {} \; 或使用xargs ls -lh 允许对找到的每个文件执行ls -lh命令,这样可以以人类可读的格式(-h选项)查看文件的大小和最后访问时间。

这种方法可以帮助你找出/var目录及其子目录下所有在过去90天内未被访问的文件,并查看它们的详细信息。

6.Linux strings命令有什么作用?

Linux中的strings命令用于从二进制文件中提取可打印的字符串序列。它主要被用于分析非文本文件(如可执行文件或二进制数据文件),以便找到其中包含的文本信息。这可以帮助在调试程序或检查文件内容时识别文件的用途或特定数据。

strings命令对于理解编译后的程序或检测文件中可能隐藏的文本信息非常有用。例如,它可以用来找出程序中包含的错误消息、用户界面文本或其他可识别的标记。

基本用法
strings [选项] 文件名
示例

假设有一个名为program的二进制文件,你想查看其中的文本字符串,可以使用如下命令:

strings program

这个命令会列出文件program中所有的可打印字符串。

常用选项
  • -n [数值]--bytes=[数值]:设置最小字符串长度为[数值],这意味着strings将只显示长度至少为指定数值的字符串。这对于过滤掉过短的、可能无关紧要的字符串非常有用。
  • -a--all:扫描整个文件,包括不包含可执行代码的数据段。
  • -o:显示字符串在文件中的偏移量。

例如,要查找长度至少为5个字符的字符串,并显示它们在文件中的偏移量,可以使用:

strings -n 5 -o program

strings命令是一个强大的工具,特别是在软件开发、安全研究和系统调试领域。通过提取和分析二进制文件中的文本内容,用户可以获得对程序行为和数据结构的深入理解。

7.Linux中的at命令有什么用?

Linux中的at命令用于安排单次任务在指定时间执行。它允许用户指定一个命令,该命令将在未来某个时间点运行,而无需用户此时在线。这使得at命令成为自动化执行脚本或命令、安排系统维护任务等操作的有用工具。

基本用法
at [时间] [选项]

在输入此命令后,系统会提供一个提示,让用户输入希望在指定时间执行的命令。完成命令输入后,按Ctrl+D结束,这会安排任务。时间参数支持多种格式,如now + 1 hour5pm tomorrow等,非常灵活。

示例
  • 安排一个任务在明天下午5点执行:
at 5pm tomorrow

输入命令后,你将进入一个提示符。在这里,输入你希望执行的命令,比如echo "Task runs at 5pm tomorrow",然后按Ctrl+D来安排。

  • 查看当前安排的at任务列表:
atq
  • 删除一个安排的at任务:
atrm [作业编号]

其中,[作业编号]是通过atq命令得到的任务编号。

常用选项
  • -f 文件名:从指定的文件中读取要执行的命令,而不是从标准输入中读取。
  • -latq:列出当前用户的待处理任务。
  • -datrm:删除指定的任务。
  • -m:即使没有输出也发送邮件给用户。
注意事项
  • 使用at命令前,确保atd服务已经启动。atdat命令的守护进程,负责执行那些被安排的任务。
  • 在某些系统上,出于安全考虑,默认可能禁用了at命令,或者只允许特定的用户或组使用。可以通过配置/etc/at.allow/etc/at.deny文件来管理访问权限。

at命令提供了一种方便的方式来安排未来的任务,使得自动化任务和系统管理变得更加简单高效。

8.如何查看/var/log目录下文件数?

要查看/var/log目录下的文件数,你可以使用lswc命令的组合。ls命令用于列出目录内容,而wc命令(word count的缩写)用于计数。通过将ls的输出通过管道传递给wc,你可以统计文件数。

查看总文件数(包括子目录中的文件)

如果你想要计算/var/log及其子目录下所有文件的总数,可以使用find命令与wc命令结合:

find /var/log -type f | wc -l

这里:

  • find /var/log -type f 查找/var/log目录及所有子目录下的文件。
  • | wc -lfind命令的输出传递给wc命令,使用-l选项来计数行数,每个文件名占一行。
仅查看/var/log目录下的文件数

如果你只对/var/log目录下的直接文件数感兴趣,不包括子目录中的文件,可以使用:

ls -l /var/log | grep ^- | wc -l

这里:

  • ls -l /var/log 以长格式列出/var/log目录下的所有文件和目录。
  • grep ^- 过滤出以-开头的行,这代表普通文件。
  • wc -l 计算过滤后的行数,即文件数。

请注意,这些命令不包括隐藏文件(文件名以.开头的文件)。如果你也想包括隐藏文件,请确保使用适当的ls选项(如ls -la)来列出所有文件,包括隐藏文件。

9.显示/etc/inittab中以#开头,且后面跟了一个或者多个空白字符,而后又跟了任意非空白字符的行 ?

要显示/etc/inittab文件中符合特定模式的行,即那些以#开头,后面跟了一个或多个空白字符,然后又跟了任意非空白字符的行,你可以使用grep命令结合一个正则表达式。

这里是相应的grep命令:

grep '^#[[:space:]]\+[[:graph:]]' /etc/inittab

解释一下这个命令中使用的正则表达式各部分的含义:

  • ^:表示行的开始。
  • #:表示匹配以#字符开始的行。
  • [[:space:]]\+:表示匹配一个或多个空白字符。[[:space:]]是一个字符类,匹配任何空白字符(包括空格、制表符等),\+表示一个或多个前面的表达式(注意,在某些grep实现中,可能需要使用-E选项或者用\{1,\}来代替\+以匹配一个或多个的表达式)。
  • [[:graph:]]:表示匹配任意非空白字符。[[:graph:]]是一个字符类,匹配任何可打印的非空白字符。

请注意,/etc/inittab文件是在传统的SysVinit系统中使用的,用于定义系统初始化和关机时运行的脚本和程序。许多现代Linux发行版(如使用systemd的系统)可能不再使用/etc/inittab文件。如果你在使用的系统中找不到/etc/inittab文件,可能是因为你的系统使用了另一种初始化系统。

10.通配符 * ? [n-m] {n,m}分别表示什么意思?

在Linux和Unix系统中,通配符(wildcards)用于匹配文件名或路径名的模式。以下是你提到的通配符及其含义:

  1. *
  • 表示匹配任意数量的字符(包括零个字符)。它可以用来匹配在指定位置的任意长度的字符串。例如,*.txt匹配所有扩展名为.txt的文件。
  1. ?
  • 表示匹配任意单个字符。它用于匹配单个位置上的任意字符。例如,?.txt匹配所有名字是单个字符且扩展名为.txt的文件。
  1. [n-m]
  • 表示匹配任意单个字符,该字符在指定的范围nm之内。这个范围可以是字母的范围也可以是数字的范围。例如,file[1-3].txt匹配file1.txtfile2.txt、和file3.txt
  1. {n,m}
  • 这实际上是花括号扩展(brace expansion),而不是标准的通配符。它用于生成任意字符串的列表。花括号内部可以是一系列通过逗号分隔的项,它会生成所有指定项的列表。例如,file{A,B,C}.txt会扩展成fileA.txtfileB.txt、和fileC.txt。对于{n..m}形式(注意两个点),它表示一个从nm的序列,但这并不是所有shell默认支持的功能,主要是Bash在较新版本中提供的。

举个更具体的例子:

  • 使用**.png匹配所有以.png结尾的文件。
  • 使用??.jpg匹配所有文件名只有一个字符且以.jpg结尾的文件。
  • 使用[n-m]image[0-9].jpeg匹配image0.jpegimage9.jpeg
  • 使用{n,m}report{2018,2019,2020}.pdf扩展成report2018.pdfreport2019.pdf、和report2020.pdf

这些通配符和扩展在文件管理、搜索和脚本编写中非常有用,使得操作可以应用于符合特定模式的一组文件或目录。

11.查询file1 以abc 结尾的行?

要查询一个文件(例如file1)中所有以abc结尾的行,你可以使用grep命令结合正则表达式。grep是一种强大的文本搜索工具,可以使用正则表达式来定义搜索模式。

以下是具体的命令:

grep 'abc$' file1

这里的正则表达式部分'abc$'的含义是:

  • abc:匹配文本abc
  • $:表示行的结束。所以,abc$匹配任何以abc结尾的行。

这个命令会在file1中查找并输出所有以abc结尾的行。

12.如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1 ?

将本地80端口的请求转发到8080端口通常涉及到网络配置和可能需要管理员权限。在Linux系统中,这可以通过多种方法实现,包括使用iptables规则、socat工具或者修改应用配置以直接监听不同端口。下面将介绍使用iptablessocat的方法。

使用iptables
  1. 确保iptables已安装并且内核支持IP转发。

  2. 启用IP转发:
    编辑/etc/sysctl.conf文件,确保以下行是启用的(去掉前面的#注释符号并设置为1):

net.ipv4.ip_forward=1

然后执行sysctl -p来应用更改。

  1. 添加iptables规则来转发端口:
    使用以下命令将从80端口来的请求转发到8080端口:
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

这条命令的意思是,对于所有目标端口为80的TCP流量,使用NAT表的PREROUTING链进行处理,将这些请求重定向到本机的8080端口。

使用socat

如果你不想使用iptables或者你的系统没有安装iptables,你可以使用socat,一个多功能的网络工具,来实现端口转发。

  1. 安装socat(如果尚未安装):
  • 在基于Debian的系统上,使用:
sudo apt-get install socat
  • 在基于RPM的系统上,使用:
sudo yum install socat
  1. 使用socat进行端口转发:
    执行以下命令:
socat TCP-LISTEN:80,fork TCP:192.168.2.1:8080

这里,TCP-LISTEN:80,fork的意思是socat会监听80端口,并对每个连接使用子进程(fork)。TCP:192.168.2.1:8080指定将流量转发到本机的8080端口。

请注意,使用这些方法可能需要管理员权限。此外,使用iptables方法时,确保考虑到任何现有的iptables规则和安全策略。对于socat,它是一个临时解决方案,重启服务或机器后需要重新运行命令,除非你将其添加到启动脚本中。

13.如何查看占用端口8080 的进程 ?

要查看在Linux系统中哪个进程占用了8080端口,可以使用netstatlsof命令。如果这些工具未安装,你可能需要先安装它们,或者你也可以使用ss命令,它是netstat的现代替代品,通常默认安装在现代Linux发行版上。

使用ss命令
ss -ltnp | grep ':8080'
  • -l 选项表示显示监听端口。
  • -t 选项表示显示TCP端口。
  • -n 选项表示以数字形式显示地址和端口号。
  • -p 选项表示显示占用端口的进程信息,这可能需要管理员权限(使用sudo)。
使用netstat命令

如果你的系统上安装了netstat,可以使用:

sudo netstat -ltnp | grep ':8080'
  • 选项的含义与ss命令相同。
使用lsof命令

另一个选项是使用lsof命令:

sudo lsof -i :8080
  • -i :8080选项指定查找所有使用端口8080的进程。
注意
  • 上述命令中的sudo是必须的,因为显示哪个进程监听某个端口通常需要管理员权限。
  • 如果你的系统没有netstatlsof命令,你可能需要安装它们。例如,在基于Debian的系统上,你可以使用sudo apt install net-tools安装netstat,使用sudo apt install lsof安装lsof
  • 这些命令将帮助你找到监听8080端口的进程的PID(进程ID)和名称,从而可以进一步管理或调查该进程。

14.请简述基础正则表达式grep高级参数的使用?

grep是一款强大的文本搜索工具,它使用正则表达式来搜索与模式匹配的文本行。grep有几个版本,包括grepegrep(或grep -E),和fgrep(或grep -F)。egrep支持扩展的正则表达式,而fgrep是用于固定字符串的搜索,不解释任何正则表达式。下面,我们将重点介绍grep的一些高级参数和它们的用法,以及如何使用基础和扩展正则表达式。

常用高级参数
  • -E:使用扩展的正则表达式。它允许使用更复杂的模式,如|?+、和()等。
  • -F:将模式视为固定字符串的列表,而不是正则表达式。
  • -i:忽略大小写的差异。
  • -v:反转匹配,只显示不匹配的行。
  • -c:计数匹配的行数,而不是显示匹配的文本。
  • -n:在每个匹配的行前面输出行号。
  • -l:只输出包含匹配行的文件名。
  • -o:只输出匹配正则表达式的部分,而不是整行。
  • -r-R:递归查找子目录。
  • --color:将匹配的文本高亮显示。
基础正则表达式和扩展正则表达式的区别

基础正则表达式(BRE)和扩展正则表达式(ERE)之间的主要区别在于支持的特殊字符和它们的用法。

  • 基础正则表达式

  • 特殊字符如*.[^$等需要直接使用。

  • 对于其他一些元字符如{}()?+|,在BRE中需要前置反斜线\来赋予它们特殊的意义。

  • 扩展正则表达式

  • 支持更直观的使用上述元字符,不需要前置反斜线。

  • 允许使用|进行“或”操作,?+用于更灵活的数量匹配,以及用()进行分组。

示例
  • 使用-E进行扩展正则表达式匹配:
grep -E 'word1|word2' filename

这将匹配文件中包含word1word2的行。

  • 使用-i忽略大小写:
grep -i 'word' filename

这将匹配wordWordWORD等所有大小写变体。

  • 使用-v查找不包含某词的行:
grep -v 'word' filename
  • 使用-c统计匹配的行数:
grep -c 'word' filename

通过组合使用这些参数,grep可以非常灵活和强大,适应各种文本搜索和数据处理任务。

15.请给出Linux中eth0的IP地址和广播地址的指令?

在Linux中,你可以使用ip命令来查看网络接口(例如eth0)的IP地址和广播地址。ip命令是ifconfig命令的现代替代品,提供了更多的功能和更好的输出格式。以下是如何使用ip命令查看eth0接口的详细信息:

ip addr show eth0

或者,更简洁的命令:

ip a show eth0

这些命令会显示eth0接口的所有配置信息,包括IP地址、子网掩码、广播地址等。在输出中,你可以找到类似以下的行来识别IP地址和广播地址:

  • inet后面跟着的是IP地址和子网掩码,例如192.168.1.2/24
  • brd后面跟着的是广播地址,例如192.168.1.255
示例输出

假设你运行了上述命令,输出可能会包含像这样的行:

3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:1e:67:8f:2a:bd brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global dynamic eth0
   valid_lft 86375sec preferred_lft 86375sec
inet6 fe80::21e:67ff:fe8f:2abd/64 scope link
   valid_lft forever preferred_lft forever

在这个例子中:

  • IP地址是192.168.1.2,子网掩码是24(即255.255.255.0)。
  • 广播地址是192.168.1.255

请注意,具体的IP地址和广播地址将根据你的网络配置而有所不同。

由于内容太多,更多内容以链接形势给大家,点击进去就是答案了

16. 如何使用Linux命令查看后台日志?

17. 简述使用tar命令压缩和解压gz包 ?

18. 解释命令的含义Is-la lgrep log、 ps -ef、kill -9 2543 ?

19. 如何查看Linux文件大小?

20. Linux如何查询端口占用并杀掉占用端口的进程?

21. Linux 建立软链接(快捷方式),以及硬链接的命令 ?

22. 简述Linux 移动文件或改名命令 ?

23. 简述Linux 复制文件和目录 ?

24. 简述Linux rm删除文件或目录命令 ?

25. 简述Linux df用法 查看文件系统硬盘使用情况?

26. 简述Linux du命令统计目录或文件所占磁盘空间大小 ?

27. 简述Linux grep命令详解查找文件内容?

28. 简述Linux终止进程用什么命令?

29. 简述du 和 df 命令的区别?

30. 如何在Linux中重命名文件和目录?

31. 误操作,执行了rm -rf * ,会有哪些情况发生?请举例?

32. 简述查看linux服务器IP的命令,同时只显示包含ip所在的行打印出来 ?

33. 请简述Which 和 whereis 区别 ?

34. 哪些命令可以查看Linux服务器的CPU利用率?

35. 查找 Linux 服务器平均负载的命令有哪些?

36. 哪个命令显示Linux服务器硬件信息?

37. 简述什么是traceroute命令?

38. 简述什么是sort命令?

39. Linux中cut命令怎么用?

40. 解释可以用‘echo’命令来替换‘ls’命令吗?

41. 终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?

42. 查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?

43. 简述如何移除Linux正在运行的进程 ?

44. 如何查看某个网卡是否连接着交换机?

45. rsync 同步命令中,下面两种方式有什么不同呢?

46. rsync 同步数据时,如何过滤出所有.txt的文件不同步?

47. rsync同步数据时,如果目标文件比源文件还新,则忽略该文件,如何做?

48. 如何查看 http 的并发请求数与其 TCP 连接状态?

49. 简述apt-get 和rpm的区别 ?

50. Linux下useradd与adduser的区别 ?

51. 查询Linux服务器上次启动时间和原因?

52. 如何查看 Http 的并发请求数与其TCP连接状态?

53. 请编写sed命令实现以下任务 ?

54. 如何查询文件夹下面哪些文件包含了特定字符,例如查询/var/下面哪些文件包含了error字符 ?

Logo

更多推荐