26 Linux高级篇-Linux面试题

26 Linux高级篇-Linux面试题

文章目录

  • 26 Linux高级篇-Linux面试题
    • 1.分析日志t.txt(访问量),将各个ip地址截取,并统计出现次数,并按从大到小排序(腾讯)
    • 2.统计连接到服务器的各个ip情况,并按连接数从大到小排序(腾讯)
    • 3.如忘记了mysql5.7数据库的ROOT用户的密码,如何找回?(滴滴)
    • 4.统计ip访问情况,要求分析nginx访问日志(access.log),找出访问页面数量在前两位的ip(美团)
    • 5.使用tcpdump监听本机,将来自ip 192.168.200.1、tcp端口为22的数据,保存输出到tcpdump.log,用做将来数据分析(美团)
    • 6.常用的Nginx模块,用来做什么(头条)
    • 7.如果你是系统管理员,在进行Linux系统权限划分时,应考虑哪些因素?(腾讯)
    • 8.权限操作思考题
    • *9.说明Centos7启动流程,并说明和CentOS6相同和不同的地方(腾讯)
    • 10.列举Linux高级命令,至少6个(百度)
    • 11.Linux查看内存、io读写、磁盘存储、端口占用、进程查看命令是什么?(瓜子)
    • 12.使用Linux命令计算t2.txt第二列的和并输出(美团)
    • 13.Shell脚本里如何检查一个文件是否存在?并给出提示(百度)
    • 14.用shell写一个脚本,对文本t3.txt中无序的一列数字排序,并将总和输出(百度)
    • 15.请用指令写出查找当前文件夹(/home)下所有的文本文件内容中包含有字符“cat”的文件名称(金山)
    • 16.请写出统计/home目录下所有文件个数和所有文件总行数的指令(在金山面试题扩展)
    • 17.列出你了解的web服务器负载架构(滴滴)
    • 18.每天晚上10点30分,打包站点目录/var/spool/mail备份到/home目录下(每次备份按时间生成不同的备份包)(滴滴)
    • *19.如何优化Linux系统,说出你的方法(瓜子)
    • *20.Linux面试100道题

  • 学习视频来自于B站【小白入门 通俗易懂】2021韩顺平 一周学会Linux。
  • 可能会用到的资料有如下所示,下载链接见文末:
  1. 《鸟哥的Linux私房菜 基础学习篇 第四版》1
  2. 《鸟哥的Linux私房菜 服务器架设篇 第三版》2
  3. 《韩顺平_2021图解Linux全面升级》3

通过对面试题的讲解,可以加深对Linux各个指令的理解。
标星号的三节内容是重点


1.分析日志t.txt(访问量),将各个ip地址截取,并统计出现次数,并按从大到小排序(腾讯)

下面是t.txt

http://192.168.200.10/index1.html
http://192.168.200.10/index2.html
http://192.168.200.20/index1.html
http://192.168.200.30/index1.html
http://192.168.200.40/index1.html
http://192.168.200.30/order.html
http://192.168.200.10/order.html

解答:

################## 指令速览 #####################
cat t.txt | cut -d '/' -f 3 | sort | uniq -c | sort -nr################## 实际演示 #####################
[root@CentOS76 ~]# mkdir /opt/interview
[root@CentOS76 ~]# cd /opt/interview
[root@CentOS76 interview]# vim 1-t.txt
############################
# 将下面的内容粘贴到文件中:
http://192.168.200.10/index1.html
http://192.168.200.10/index2.html
http://192.168.200.20/index1.html
http://192.168.200.30/index1.html
http://192.168.200.40/index1.html
http://192.168.200.30/order.html
http://192.168.200.10/order.html
############################
# 将文本内容的每一行按照斜杠“/”切割,然后拿出第3段内容
[root@CentOS76 interview]# cat 1-t.txt | cut -d '/' -f 3
192.168.200.10
192.168.200.10
192.168.200.20
192.168.200.30
192.168.200.40
192.168.200.30
192.168.200.10
# 将切割出来的内容再排序(默认从小到大)
[root@CentOS76 interview]# cat 1-t.txt | cut -d '/' -f 3 | sort
192.168.200.10
192.168.200.10
192.168.200.10
192.168.200.20
192.168.200.30
192.168.200.30
192.168.200.40
# 将排序好的内容进行统计
[root@CentOS76 interview]# cat 1-t.txt | cut -d '/' -f 3 | sort | uniq -c3 192.168.200.101 192.168.200.202 192.168.200.301 192.168.200.40
# 再将统计的信息按照从大到小的顺序进行排序
[root@CentOS76 interview]# cat 1-t.txt | cut -d '/' -f 3 | sort | uniq -c | sort -nr3 192.168.200.102 192.168.200.301 192.168.200.401 192.168.200.20

2.统计连接到服务器的各个ip情况,并按连接数从大到小排序(腾讯)

看看当前有多少个IP连接到Linux服务器上来了。

################## 指令速览 #####################
netstat -an | grep ESTABLISHED | awk -F ' ' '{print $5}' | awk -F ':' '{print $1}' | sort | uniq -c | sort -nr################## 实际演示 #####################
[root@CentOS76 interview]# netstat -an | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:6666            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:41881           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN     
tcp        0     36 192.168.204.131:22      192.168.204.1:52174     ESTABLISHED
tcp        0      0 192.168.204.131:41881   192.168.204.1:60167     ESTABLISHED
tcp6       0      0 :::3306                 :::*                    LISTEN     
tcp6       0      0 :::111                  :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 ::1:6010                :::*                    LISTEN     
udp        0      0 192.168.122.1:53        0.0.0.0:*                          
udp        0      0 0.0.0.0:67              0.0.0.0:*                          
udp        0      0 0.0.0.0:68              0.0.0.0:*                          
udp        0      0 0.0.0.0:111             0.0.0.0:*                          
udp        0      0 127.0.0.1:323           0.0.0.0:*                          
udp        0      0 0.0.0.0:942             0.0.0.0:*                          
udp        0      0 0.0.0.0:5353            0.0.0.0:*                          
udp        0      0 0.0.0.0:55161           0.0.0.0:*                          
udp        0      0 0.0.0.0:6666            0.0.0.0:*                          
udp6       0      0 :::111                  :::*                               
udp6       0      0 ::1:323                 :::*                               
udp6       0      0 :::942                  :::*                               
raw6       0      0 :::58                   :::*                    7          
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     30976    /var/run/libvirt/libvirt-admin-sock
unix  3      [ ]         DGRAM                    14344    /run/systemd/notify
unix  2      [ ]         DGRAM                    14346    /run/systemd/cgroups-agent
unix  2      [ ACC ]     SEQPACKET  LISTENING     17169    /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     24164    @/tmp/dbus-lH68fOEA
unix  2      [ ACC ]     STREAM     LISTENING     37193    @/tmp/dbus-uGgEWS7L
unix  2      [ ACC ]     STREAM     LISTENING     22037    /tmp/.X11-unix/X0
unix  2      [ ACC ]     STREAM     LISTENING     38052    @/tmp/.ICE-unix/1904
unix  2      [ ACC ]     STREAM     LISTENING     24087    /var/run/NetworkManager/private-dhcp
unix  2      [ ACC ]     STREAM     LISTENING     14364    /run/systemd/journal/stdout
unix  5      [ ]         DGRAM                    14367    /run/systemd/journal/socket
unix  24     [ ]         DGRAM                    14369    /dev/log
# 按ctrl+c退出显示
# 1. 筛选出netstat -an中已经连接上的行
[root@CentOS76 interview]# netstat -an | grep ESTABLISHED
tcp        0     36 192.168.204.131:22      192.168.204.1:52174     ESTABLISHED
tcp        0    938 192.168.204.131:41881   192.168.204.1:60167     ESTABLISHED
# 2. 然后按照空格' '进行切割(连续空格视为一个空格),打印出第5段内容
[root@CentOS76 interview]# netstat -an | grep ESTABLISHED | awk -F ' ' '{print $5}'
192.168.204.1:52174
192.168.204.1:60167
# 3. 然后再按照冒号切割,打印出IP地址(第一段内容)
[root@CentOS76 interview]# netstat -an | grep ESTABLISHED | awk -F ' ' '{print $5}' | awk -F ':' '{print $1}'
192.168.204.1
192.168.204.1
# 4. 将IP地址进行排序(默认升序)
[root@CentOS76 interview]# netstat -an | grep ESTABLISHED | awk -F ' ' '{print $5}' | awk -F ':' '{print $1}' | sort
192.168.204.1
192.168.204.1
# 5. 排好序后进行统计
[root@CentOS76 interview]# netstat -an | grep ESTABLISHED | awk -F ' ' '{print $5}' | awk -F ':' '{print $1}' | sort | uniq -c2 192.168.204.1
# 6. 最后再降序排序即可
[root@CentOS76 interview]# netstat -an | grep ESTABLISHED | awk -F ' ' '{print $5}' | awk -F ':' '{print $1}' | sort | uniq -c | sort -nr2 192.168.204.1

注:对于简单的分割用cut指令,稍微复杂一点的用awk指令。

3.如忘记了mysql5.7数据库的ROOT用户的密码,如何找回?(滴滴)

################## 指令速览 #####################
# 1. 修改配置文件,使得mysql可以空密码登录
vim /etc/my.cnf             # 修改配置文件
#############################
# 在文档最后一行添加下面一句话:
skip-grant-tables
#############################
service mysqld restart      # 重启mysqld服务,使得配置生效
mysql -u root -p            # 空密码登录
# 2. 空密码登录mysql,并修改密码
########登录myql########
use mysql;          # 使用mysql数据库
desc user;          # 定位到users表
# 通过字段修改root密码
update user set authentication_string=password("mysqlroot") where user='root';
flush privileges;   # 使得修改生效
exit                # 退出mysql
########退出myql########
# 3. 将配置文件更改回来,并使用新密码登录
vim /etc/my.cnf
#############################
# 删除刚才添加的最后一行:
skip-grant-tables
#############################
mysql -u root -p################## 实际演示 #####################
# 首先发现登录不上去
[root@CentOS76 interview]# mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# 修改配置文件,使支持空密码登录
[root@CentOS76 interview]# vim /etc/my.cnf
#############################
# 在文档最后一行添加下面一句话:
skip-grant-tables
#############################
# 重启服务
[root@CentOS76 interview]# service mysqld restart
Redirecting to /bin/systemctl restart mysqld.service
[root@CentOS76 interview]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.26 MySQL Community Server (GPL)Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydata             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
31 rows in set (0.00 sec)mysql> desc user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(32)                          | NO   | PRI |                       |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Update_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Delete_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Create_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Drop_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N                     |       |
| Process_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| File_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Grant_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| References_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Index_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Alter_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Show_db_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Super_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tmp_table_priv  | enum('N','Y')                     | NO   |     | N                     |       |
| Lock_tables_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Execute_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_slave_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_client_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Create_view_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Show_view_priv         | enum('N','Y')                     | NO   |     | N                     |       |
| Create_routine_priv    | enum('N','Y')                     | NO   |     | N                     |       |
| Alter_routine_priv     | enum('N','Y')                     | NO   |     | N                     |       |
| Create_user_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Event_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Trigger_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tablespace_priv | enum('N','Y')                     | NO   |     | N                     |       |
| ssl_type               | enum('','ANY','X509','SPECIFIED') | NO   |     |                       |       |
| ssl_cipher             | blob                              | NO   |     | NULL                  |       |
| x509_issuer            | blob                              | NO   |     | NULL                  |       |
| x509_subject           | blob                              | NO   |     | NULL                  |       |
| max_questions          | int(11) unsigned                  | NO   |     | 0                     |       |
| max_updates            | int(11) unsigned                  | NO   |     | 0                     |       |
| max_connections        | int(11) unsigned                  | NO   |     | 0                     |       |
| max_user_connections   | int(11) unsigned                  | NO   |     | 0                     |       |
| plugin                 | char(64)                          | NO   |     | mysql_native_password |       |
| authentication_string  | text                              | YES  |     | NULL                  |       |
| password_expired       | enum('N','Y')                     | NO   |     | N                     |       |
| password_last_changed  | timestamp                         | YES  |     | NULL                  |       |
| password_lifetime      | smallint(5) unsigned              | YES  |     | NULL                  |       |
| account_locked         | enum('N','Y')                     | NO   |     | N                     |       |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
45 rows in set (0.00 sec)mysql> update user set authentication_string=password("mysqlroot") where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)mysql> exit
Bye
[root@CentOS76 interview]# vim /etc/my.cnf
#############################
# 删除刚才添加的最后一行:
skip-grant-tables
#############################
[root@CentOS76 interview]# mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# 发现空密码已经无法登录,下面输入刚才设置的密码才可以登录
[root@CentOS76 interview]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.26 MySQL Community Server (GPL)Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> exit
Bye

4.统计ip访问情况,要求分析nginx访问日志(access.log),找出访问页面数量在前两位的ip(美团)

下面是access.log的内容:

192.168.130.21 aaa.html
192.168.130.20 aaa.html
192.168.130.20 aaa.html
192.168.130.20 aaa.html
192.168.130.23 aaa.html
192.168.130.20 aaa.html
192.168.130.25 aaa.html
192.168.130.20 aaa.html
192.168.130.20 aaa.html
192.168.130.25 aaa.html
192.168.130.20 aaa.html

解答:

################## 指令速览 #####################
cat access.log | awk -F ' ' '{print $1}' | sort | uniq -c | sort -nr | head -2################## 实际演示 #####################
[root@CentOS76 interview]# touch /opt/interview/access.log
[root@CentOS76 interview]# vim access.log 
###############################
# 将上面access.log的内容粘贴过来
###############################
[root@CentOS76 interview]# cat access.log | awk -F ' ' '{print $1}'
192.168.130.21
192.168.130.20
192.168.130.20
192.168.130.20
192.168.130.23
192.168.130.20
192.168.130.25
192.168.130.20
192.168.130.20
192.168.130.25
192.168.130.20
[root@CentOS76 interview]# cat access.log | awk -F ' ' '{print $1}' | sort | uniq -c7 192.168.130.201 192.168.130.211 192.168.130.232 192.168.130.25
[root@CentOS76 interview]# cat access.log | awk -F ' ' '{print $1}' | sort | uniq -c | sort -nr7 192.168.130.202 192.168.130.251 192.168.130.231 192.168.130.21
[root@CentOS76 interview]# cat access.log | awk -F ' ' '{print $1}' | sort | uniq -c | sort -nr | head -27 192.168.130.202 192.168.130.25

5.使用tcpdump监听本机,将来自ip 192.168.200.1、tcp端口为22的数据,保存输出到tcpdump.log,用做将来数据分析(美团)

  • 注:为了保证有抓到的内容,建议将上面的IP地址改成虚拟机的IP地址。

这个tcpdump指令就是监听tcp通讯的,下面是解答:

################## 指令速览 #####################
tcpdump -i ens33 host 192.168.204.131 and port 22 >> /opt/interview/tcpdump.log################## 实际演示 #####################
# 1. 验证已安装tcpdump。若没有安装,可使用语句sudo yum install tcpdump
[root@CentOS76 interview]# tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on virbr0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel
# 2. 将tcpdump监听到的信息输出到tcpdump.log
[root@CentOS76 interview]# tcpdump -i ens33 host 192.168.204.131 and port 22 >> /opt/interview/tcpdump.log
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
^C2 packets captured
4 packets received by filter
0 packets dropped by kernel
# 3. 查看监听的内容
[root@CentOS76 interview]# cat tcpdump.log 16:06:18.561792 IP CentOS76.ssh > 192.168.204.1.52174: Flags [P.], seq 2485459692:2485459880, ack 919837171, win 307, length 188
16:06:18.561924 IP 192.168.204.1.52174 > CentOS76.ssh: Flags [.], ack 188, win 4099, length 0[root@CentOS76 interview]# 

6.常用的Nginx模块,用来做什么(头条)

这个题考的就是看看你在Linux下是否使用过Nginx服务器。

  • rewrite模块:实现重写功能。
  • access模块:来源控制。
  • ssl模块:安全加密。
  • ngx_http_gzip_module:网络传输压缩模块。
  • ngx_http_proxy_module:模块实现代理。
  • ngx_http_upstream_module:模块实现定义后端服务器列表。
  • ngx_cache_purge:实现缓存清除功能。

7.如果你是系统管理员,在进行Linux系统权限划分时,应考虑哪些因素?(腾讯)

简答题,老韩提供一些思路:

  1. 首先阐述主要对象——Linux权限。
  2. 然后根据自己实际经验谈考虑因素。

1. 首先阐述Linux权限
(之前“组管理和权限管理”一章的内容)那到底什么是rwx权限呢?下面就来进行rwx权限详解【难点】。Linux中“文件”和“目录”的rwx权限有不同的含义:

文件的rwx权限:

  1. r】:可以读取、查看该文件。
  2. w】:代表可写(write):可以修改,但是不代表可以删除该文件。删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件。
  3. x】:代表可执行(execute):表示系统可以使用./文件名执行该文件。比如在一个有执行权限的文件a.txt中写入ls -al,然后直接在终端输入./a.txt,那么该指令就会被相应的执行。
  4. -】:表示没有相应的权限。

目录的rwx权限:

  1. r】:代表可读(read):表示可以读取该目录的文件列表,比如使用ls指令。
  2. w】:代表可写(write):表示可以修改该目录的文件列表,也就是删除、创建、重命名其下的目录/文件。
  3. x】:代表可执行(execute):表示可以进入该目录,这和文件的x权限非常不同。如果仅有x权限,也可以读写那些有读写权限的文件,但就像摸黑找东西,全靠记忆力。
  4. -】:表示没有相应的权限。

a.txt:所以-rw-r--r--就表示a.txt是一个普通文件,“所有者”享有“读”、“写”权限不能“执行”,“所在组”的其他用户只享有“读”权限,“其他组”的所有用户也只享有“读”权限。

# 下面是权限展示示例:
[root@CentOS76 interview]# ll
总用量 12
-rw-r--r--. 1 root root 236 827 10:59 1-t.txt
-rw-r--r--. 1 root root 264 827 15:54 access.log
-rw-r--r--. 1 root root 225 827 16:06 tcpdump.log

修改权限就是如下:

# 基本语法-chmod
# 【方式一】+、-、=变更权限,u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
chmod u=rwx,g=rx,o=x 文件/目录名    # 给文件/目录的u用户rwx权限、g用户rx权限、o用户x权限
chmod o+w 文件/目录名               # 给文件/目录的o用户添加w权限
chmod a-x 文件/目录名               # 剥夺文件/目录的a用户的x权限# 【方式二】r=4,w=2,x=1
chmod 751 文件/目录名    # 等价于chmod u=rwx,g=rx,o=x 文件/目录名-R  权限递归选项

2. 根据自己实际经验谈考虑因素

  • 【注意权限分离】。比如在工作中,Linux系统权限和数据库权限不要在同一个部门。
  • 【权限最小原则】。在满足使用的情况下,权限最少优先。
  • 【减少使用root用户】。尽量用普通用户+sudo提权的方式进行日常操作。
  • 【锁定重要的系统文件】【演示1】。比如/etc/passwd、/etc/shadow etc/fstab、/etc/sudoers等配置文件,建议使用chattr指令(change attribute)锁定,需要操作时再打开。
  • 【设置特殊权限】。使用SUID、SGID、Sticky设置特殊权限。
  • 【检测rootkit脚本】【演示2】。可以利用工具,比如chkrootkit或者rootkit hunter检测rootkit脚本。rootkit是入侵者使用工具,在不察觉的建立了入侵系统途径。
  • 【检测文件系统完整性】。由于黑客入侵通常会修改文件系统,所以利用工具Tripwire检测文件系统完整性。

【演示1】锁定/etc/passwd文件,使系统不能通过useradd添加用户。

################## 指令速览 #####################
chattr +i /etc/passwd   # 锁定文件
chattr -i /etc/passwd   # 解锁文件################## 实际演示 #####################
# 1. 首先验证usradd、userdel可以添加、删除用户
[root@CentOS76 interview]# useradd smith
[root@CentOS76 interview]# userdel -r smith
# 2. 锁定文件后,验证无法添加用户
[root@CentOS76 interview]# chattr +i /etc/passwd
[root@CentOS76 interview]# useradd smith
useradd:无法打开 /etc/passwd
# 3. 为了保险,将/usr/bin/chattr指令挪走并改名,使得外来“黑客”无法使用chattr解锁
[root@CentOS76 interview]# which chattr
/usr/bin/chattr
[root@CentOS76 interview]# mv /usr/bin/chattr /opt/chattr
[root@CentOS76 interview]# find / -name chattr       # 只挪走还是可以找到的
/opt/chattr
[root@CentOS76 interview]# mv /opt/chattr /opt/h     # 关键是改名
# 4. 将chattr名字改回来并挪回来,验证可以重新使用useradd、userdel
[root@CentOS76 interview]# mv /opt/h /usr/bin/chattr
[root@CentOS76 interview]# chattr -i /etc/passwd
[root@CentOS76 interview]# useradd smith
[root@CentOS76 interview]# userdel -r smith

【演示2】安装chkrootkit。

  • chkrootkit官网下载(成功):https://chkrootkit.org/download/ ,对应的指令为
    wget ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz
  • 安装包备用下载地址(成功):https://src.fedoraproject.org/repo/pkgs/chkrootkit/ ,对应的指令为
    wget https://src.fedoraproject.org/repo/pkgs/chkrootkit/chkrootkit-0.57.tar.gz
  • 安装包备用下载地址(肯定成功):我的百度网盘“chkrootkit.tar.gz”,下载后通过Xftp上传到Linux虚拟机目录/opt/chkrootkit
  • 完整的操作流程:博客园文章“Chkrootkit安装配置教程 – Linux后门入侵检测”
################## 指令速览 #####################
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar -zxvf chkrootkit.tar.gz
./chkrootkit ################## 实际演示 #####################
# 1. 下载chkrootkit安装包
[root@CentOS76 interview]# mkdir /opt/chkrootkit
[root@CentOS76 interview]# cd /opt/chkrootkit/
[root@CentOS76 chkrootkit]# wget ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz
--2023-08-27 17:27:03--  ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz=> “chkrootkit.tar.gz.1”
正在解析主机 ftp.chkrootkit.org (ftp.chkrootkit.org)... 187.33.4.179
正在连接 ftp.chkrootkit.org (ftp.chkrootkit.org)|187.33.4.179|:21... 已连接。
正在以 anonymous 登录 ... 登录成功!
==> SYST ... 完成。   ==> PWD ... 完成。
==> TYPE I ... 完成。 ==> CWD (1) /pub/seg/pac ... 完成。
==> SIZE chkrootkit.tar.gz ... 42957
==> PASV ... 完成。   ==> RETR chkrootkit.tar.gz ... 完成。
长度:42957 (42K) (非正式数据)100%[=============================================================>] 42,957      23.5KB/s 用时 1.8s   2023-08-27 17:27:12 (23.5 KB/s) - “chkrootkit.tar.gz” 已保存 [42957]# 若无法下载,就尝试以下指令,或去手动下载安装包安装
# wget https://src.fedoraproject.org/repo/pkgs/chkrootkit/chkrootkit-0.57.tar.gz
# wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
# 2. 解压安装chkrootkit
[root@CentOS76 chkrootkit]# ls
chkrootkit.tar.gz
[root@CentOS76 chkrootkit]# tar -zxvf chkrootkit.tar.gz 
chkrootkit-0.53/
chkrootkit-0.53/chkrootkit
chkrootkit-0.53/ifpromisc.c
chkrootkit-0.53/check_wtmpx.c
chkrootkit-0.53/Makefile
chkrootkit-0.53/README.chkwtmp
chkrootkit-0.53/strings.c
chkrootkit-0.53/README.chklastlog
chkrootkit-0.53/chkwtmp.c
chkrootkit-0.53/chkutmp.c
chkrootkit-0.53/chkdirs.c
chkrootkit-0.53/ACKNOWLEDGMENTS
chkrootkit-0.53/README
chkrootkit-0.53/COPYRIGHT
chkrootkit-0.53/chkproc.c
chkrootkit-0.53/chkrootkit.lsm
chkrootkit-0.53/chklastlog.c
[root@CentOS76 chkrootkit]# ./chkrootkit-0.53/
-bash: ./chkrootkit-0.53/: 是一个目录
[root@CentOS76 chkrootkit]# ls
chkrootkit-0.53  chkrootkit.tar.gz
[root@CentOS76 chkrootkit]# cd chkrootkit-0.53/
[root@CentOS76 chkrootkit-0.53]# ls
ACKNOWLEDGMENTS  chklastlog.c  chkrootkit.lsm  COPYRIGHT    README             strings.c
check_wtmpx.c    chkproc.c     chkutmp.c       ifpromisc.c  README.chklastlog
chkdirs.c        chkrootkit    chkwtmp.c       Makefile     README.chkwtmp
# 3. 下面开始扫描,有异常会显示红色
[root@CentOS76 chkrootkit-0.53]# ./chkrootkit 
ROOTDIR is `/'
Checking `amd'... not found
Checking `basename'... not infected
Checking `biff'... not found
Checking `chfn'... not infected
Checking `chsh'... not infected
Checking `cron'... not infected
Checking `crontab'... not infected
Checking `date'... not infected
Checking `du'... not infected
Checking `dirname'... not infected
Checking `echo'... not infected
Checking `egrep'... not infected
Checking `env'... not infected
Checking `find'... not infected
Checking `fingerd'... not found
Checking `gpm'... not found
Checking `grep'... not infected
Checking `hdparm'... not found
Checking `su'... not infected
Checking `ifconfig'... not infected
Checking `inetd'... not tested
Checking `inetdconf'... not found
Checking `identd'... not found
Checking `init'... not infected
Checking `killall'... not infected
Checking `ldsopreload'... can't exec ./strings-static, not tested
Checking `login'... not infected
Checking `ls'... not infected
Checking `lsof'... not infected
Checking `mail'... not infected
Checking `mingetty'... not found
Checking `netstat'... not infected
Checking `named'... not found
Checking `passwd'... not infected
Checking `pidof'... not infected
Checking `pop2'... not found
Checking `pop3'... not found
Checking `ps'... not infected
Checking `pstree'... not infected
Checking `rpcinfo'... not infected
Checking `rlogind'... not found
Checking `rshd'... not found
Checking `slogin'... not infected
Checking `sendmail'... not infected
Checking `sshd'... not infected
Checking `syslogd'... not tested
Checking `tar'... not infected
Checking `tcpd'... not infected
Checking `tcpdump'... not infected
Checking `top'... not infected
Checking `telnetd'... not found
Checking `timed'... not found
Checking `traceroute'... not infected
Checking `vdir'... not infected
Checking `w'... not infected
Checking `write'... not infected
Checking `aliens'... no suspect files
Searching for sniffer's logs, it may take a while... nothing found
Searching for HiDrootkit's default dir... nothing found
Searching for t0rn's default files and dirs... nothing found
Searching for t0rn's v8 defaults... nothing found
Searching for Lion Worm default files and dirs... nothing found
Searching for RSHA's default files and dir... nothing found
Searching for RH-Sharpe's default files... nothing found
Searching for Ambient's rootkit (ark) default files and dirs... nothing found
Searching for suspicious files and dirs, it may take a while... 
/usr/lib/debug/usr/.dwzSearching for LPD Worm files and dirs... nothing found
Searching for Ramen Worm files and dirs... nothing found
Searching for Maniac files and dirs... nothing found
Searching for RK17 files and dirs... nothing found
Searching for Ducoci rootkit... nothing found
Searching for Adore Worm... nothing found
Searching for ShitC Worm... nothing found
Searching for Omega Worm... nothing found
Searching for Sadmind/IIS Worm... nothing found
Searching for MonKit... nothing found
Searching for Showtee... nothing found
Searching for OpticKit... nothing found
Searching for T.R.K... nothing found
Searching for Mithra... nothing found
Searching for LOC rootkit... nothing found
Searching for Romanian rootkit... nothing found
Searching for HKRK rootkit... nothing found
Searching for Suckit rootkit... nothing found
Searching for Volc rootkit... nothing found
Searching for Gold2 rootkit... nothing found
Searching for TC2 Worm default files and dirs... nothing found
Searching for Anonoying rootkit default files and dirs... nothing found
Searching for ZK rootkit default files and dirs... nothing found
Searching for ShKit rootkit default files and dirs... nothing found
Searching for AjaKit rootkit default files and dirs... nothing found
Searching for zaRwT rootkit default files and dirs... nothing found
Searching for Madalin rootkit default files... nothing found
Searching for Fu rootkit default files... nothing found
Searching for ESRK rootkit default files... nothing found
Searching for rootedoor... nothing found
Searching for ENYELKM rootkit default files... nothing found
Searching for common ssh-scanners default files... nothing found
Searching for Linux/Ebury - Operation Windigo ssh... not tested
Searching for 64-bit Linux Rootkit ... nothing found
Searching for 64-bit Linux Rootkit modules... nothing found
Searching for Mumblehard Linux ... nothing found
Searching for Backdoor.Linux.Mokes.a ... nothing found
Searching for Malicious TinyDNS ... nothing found
Searching for Linux.Xor.DDoS ... nothing found
Searching for Linux.Proxy.1.0 ... nothing found
Searching for CrossRAT ... nothing found
Searching for Hidden Cobra ... nothing found
Searching for Rocke Miner ... nothing found
Searching for suspect PHP files... nothing found
Searching for anomalies in shell history files... nothing found
Checking `asp'... not infected
Checking `bindshell'... not infected
Checking `lkm'... not tested: can't exec 
Checking `rexedcs'... not found
Checking `sniffer'... not tested: can't exec ./ifpromisc
Checking `w55808'... not infected
Checking `wted'... not tested: can't exec ./chkwtmp
Checking `scalper'... not infected
Checking `slapper'... not infected
Checking `z2'... not tested: can't exec ./chklastlog
Checking `chkutmp'... not tested: can't exec ./chkutmp
Checking `OSX_RSPLUG'... not tested

8.权限操作思考题

  1. 用户tom对目录/home/test有执行和读写权限,/home/test/hello.java是只读文件,问tom对hello.java文件能读吗?能修改吗?能删除吗?
    能读、不能修改、能删除。
  2. 用户tom对目录/home/test只有读写权限,/home/test/hello.java是只读文件,问tom对hello.java文件能读吗?能修改吗?能删除吗?
    不能读、不能修改、不能删除。
  3. 用户tom对目录/home/test只有执行权限,/home/test/hello.java是只读文件,问tom对hello.java文件能读吗?能修改吗?能删除吗?
    能读、不能修改、不能删除。
  4. 用户tom对目录/home/test只有执行和写权限,/home/test/hello.java是只读文件,问tom对hello.java文件能读吗?能修改吗?能删除吗?
    能读、不能修改、能删除。

*9.说明Centos7启动流程,并说明和CentOS6相同和不同的地方(腾讯)

很常规,出现频率高并不复杂,但是细节很多不容易说完。回答面试官的关键:

  1. 大概说出Linux7启动的四个阶段。
  2. 然后指出第二、四阶段是和CentOS6不一样的,并将Linux7第四阶段的细节再说一下。

1. Linux7启动的流程
首先来介绍一下CentOS7的启动流程:

【参考1】CSDN博文“centos7 开机启动流程”。
【参考2】稀土掘金文章“一文快速看懂 Centos7 系统的启动过程(配思维导图)”。

图26-1 Linux7启动流程-思维导图

下面来对上图做出一些注释:

  • 第一阶段:硬件引导启动
  1. Power On:上电。
  2. BIOS:查找启动介质时会选择:光驱启动(CDROM)、USB启动、硬件启动(HDD)。
  3. MBR:会读取分区表。
  • 第二阶段:GRUB2启动引导阶段
    显示加载两个镜像,再加载MOD模块文件,把grub2程序加载执行,接着解析配置文件/boot/grub2/grub.cfg,根据配置文件加载内核镜像到内存,之后构建虚拟根文件系统,最后转到内核。

/boot/grub2/grub.cfg:是“GRUB2引导加载程序”的配置文件,用于配置操作系统的启动选项和引导过程中的各种设置,如选用哪个内核、启动模式等。之前“定制自己的linux”一章,通过修改这个文件指定哪些盘是启动盘,哪些盘是根目录。grub.cfg配置文件比较复杂,开头注释部分说明了由/etc/grub.d/目录下文件和/etc/default/grub文件组成,但在CentOS7中一般是使用命令进行配置,而无需直接修改该配置文件。一般修改好配置后都需要使用命令grub2-mkconfig -o /boot/grub2/grub.cfg,将配置文件重新生成。

  • 第三阶段:内核引导阶段
    加载驱动,切换到真正的根文件系统。

  • 第四阶段:systemed初始化阶段
    调用systemd初始化系统。

下图进一步给出了Linux7的启动流程,最关键的是第四阶段(从“调用systemd”开始)的介绍

图26-2 Linux7启动流程图

一些注意点:

  • 内核解压并自检:若内核有问题,跑不起来。
  • 由虚拟根目录切换回磁盘根目录:这个时候磁盘就找到了。
  • 调用muliti-user.target:表示“多用户模式”。
  • 启动本级别对应的服务:比如本级别定义的自启服务,可以使用指令systemctl来更改这些要自启的服务。
  • 调用/etc/rc.d/rc.local:定义开机后需要自启的自定义脚本。

最关键的第四阶段(“多用户模式”作为演示示例):

  1. 执行默认target配置文件/etc/systemd/system/default.target(这是一个软链接,与默认运行级别有关)。
  2. 并发执行sysinit.target来初始化系统和basic.target来准备操作系统。
  3. 并发启动multi-user.target下的本机与服务器服务,并检查/etc/rc.d/rc.local文件是否有用户自定义脚本需要启动。
  4. 最后执行multi-user下的getty.target及登录服务,检查default.target是否有其他的服务需要启动。

显然在上述“调用systemd”启动的过程中调用了很多系统配置文件,下面简单对这些文件的依赖关系做出示意:

/lib/systemd/system/
依赖
依赖
依赖
指向
指向
graphical.target
multiuser.target
basic.target
sysinit.target
/etc/systemd/system/default.target
图26-3 .target文件依赖关系

如上图所示:/etc/systemd/system/default.target指向了/lib/systemd/system/目录下的graphical.targetmultiuser.target。而graphical.target依赖multiuser.targetmultiuser.target依赖basic.targetbasic.target依赖sysinit.target,所以倒过来执行。

2. CentOS7于CentOS6启动的不同点
第一步、硬件启动阶段
这一步和CentOS6差不多,详细请看上图。

第二步、GRUB2引导阶段
从这一步开始,CentOS6和CentOS7的启动流程区别开始展现出来了。CentOS7的主引导程序使用的是grub2。

这一步的流程:显示加载两个镜像,再加载MOD模块文件,把grub2程序加载执行,接着解析配置文件/boot/grub2/grub.cfg,根据配置文件加载内核镜像到内存,之后构建虚拟根文件系统,最后转到内核。

在这里grub.cfg配置文件已经比较复杂了,但并不用担心,到了CentOS7中一般是使用命令进行配置,而不直接去修改配置文件了。不过我们可以看到grub.cfg配置文件开头注释部分说明了由/etc/grub.d/目录下文件和/etc/default/grub文件组成。

一般修改好配置后都需要使用命令grub2-mkconfig -o /boot/grub2/grub.cfg,将配置文件重新生成。

第三步、内核引导阶段

这一步与CentOS6也差不多,加载驱动,切换到真正的根文件系统,唯一不同的是执行的初始化程序变成了/usr/lib/systemd/systemd。

第四步、systemed初始化阶段(又叫系统初始化阶段)
这个阶段和CentOS6区别较大。(下面这段话就是回答的重点)
CentOS7中我们的初始化进程变为了systemd。执行默认target配置文件/etc/systemd/system/default.target(这是一个软链接,与默认运行级别有关)。然后执行sysinit.target来初始化系统和basic.target来准备操作系统。接着启动multi-user.target下的本机与服务器服务,并检查/etc/rc.d/rc.local文件是否有用户自定义脚本需要启动。最后执行multi-user下的getty.target及登录服务,检查default.target是否有其他的服务需要启动。

注意:/etc/systemd/system/default.target指向了/lib/systemd/system/目录下的graphical.target或multiuser.target。而graphical.target依赖multiuser.target,multiuser.target依赖basic.target,basic.target依赖sysinit.target,所以倒过来执行。

3. 补充chatgpt的回答
CentOS7启动流程:

  1. BIOS/UEFI 启动:计算机首先执行 BIOS 或 UEFI 中的引导程序,查找可引导的设备。一般来说,它会查找磁盘或其他存储设备以加载引导加载程序。
  2. 引导加载程序(GRUB2):GRUB2 是 CentOS 7 默认使用的引导加载程序。GRUB2 负责显示引导菜单,其中列出了可用的内核选项。
  3. 加载内核和 initramfs:一旦用户选择内核选项,GRUB2 会加载指定的内核文件(vmlinuz),同时加载相关的 initramfs(初始化 RAM Disk)。initramfs 是一个临时文件系统,包含了内核启动所需的文件和驱动程序。
  4. 内核初始化和启动 init:内核初始化时,它会检测硬件、加载驱动程序并设置系统参数。然后,内核启动第一个用户空间进程,这通常是 systemd 初始化进程。
  5. systemd 初始化:systemd 是 CentOS 7 默认使用的初始化系统,它负责启动和管理系统的各种服务。systemd 启动一系列的目标(target),每个目标包含要同时启动的一组服务。
  6. 运行级别(Runlevel)切换:在过去的 SysVinit 系统中,运行级别定义了系统在不同模式下启动的配置。在 CentOS 7 中,systemd 引入了目标(target)的概念,取代了运行级别。
  7. 启动服务和进程:在所选的目标中,systemd 启动相关的服务和进程。这可能涉及网络、文件系统、登录管理、时间同步等各种服务。
  8. 启动显示管理器(如果有):如果您的系统配置了图形用户界面(GUI),systemd 可能会启动 X Window 系统或其他显示管理器,显示登录界面。
  9. 用户登录:最终,系统会显示登录界面,用户可以通过图形界面或终端登录。

总之,CentOS 7 的启动流程涉及硬件初始化、加载内核、初始化 RAM Disk、启动用户空间、systemd 初始化和服务启动等步骤。每个步骤都是为了确保系统能够成功启动并准备好接受用户登录和任务执行。

CentOS6启动流程(使用了SysVinit初始化系统):

  1. BIOS/UEFI 启动:计算机首先执行 BIOS 或 UEFI 中的引导程序,查找可引导的设备。一般来说,它会查找硬盘或其他存储设备以加载引导加载程序。
  2. 引导加载程序(GRUB):GRUB(Legacy)是 CentOS 6 默认使用的引导加载程序。GRUB 负责显示引导菜单,其中列出了可用的内核选项。
  3. 加载内核和 initramfs:一旦用户选择内核选项,GRUB 会加载指定的内核文件(vmlinuz),同时加载相关的 initramfs(初始化 RAM Disk)。initramfs 是一个临时文件系统,包含了内核启动所需的文件和驱动程序。
  4. 内核初始化和启动 init:内核初始化时,它会检测硬件、加载驱动程序并设置系统参数。然后,内核启动第一个用户空间进程,这通常是 SysVinit 初始化进程。
  5. 运行级别(Runlevel)切换:在 CentOS 6 中,运行级别定义了系统在不同模式下启动的配置。运行级别涵盖了不同的系统状态,如单用户模式、多用户模式、图形界面模式等。
  6. 启动服务和进程:在所选的运行级别中,SysVinit 启动相关的服务和进程。这可能涉及网络、文件系统、登录管理、时间同步等各种服务。
  7. 启动显示管理器(如果有):如果您的系统配置了图形用户界面(GUI),SysVinit 可能会启动 X Window 系统或其他显示管理器,显示登录界面。
  8. 用户登录:最终,系统会显示登录界面,用户可以通过图形界面或终端登录。

总之,CentOS 6 的启动流程与许多早期的 Linux 发行版相似,使用了 SysVinit 初始化系统。这个过程涉及硬件初始化、加载内核、初始化 RAM Disk、启动用户空间、启动服务和进程等步骤,最终准备好接受用户登录和任务执行。

CentOS6和CentOS7在启动流程上的区别:

这些区别主要涉及初始化系统、运行级别管理和服务管理等方面。以下是其中一些主要的区别:

  1. 初始化系统:
    CentOS 6 使用 SysVinit 作为初始化系统。在 SysVinit 中,系统通过运行级别(runlevel)来定义不同的操作模式,每个运行级别包含了要启动的一组服务和进程。
    CentOS 7 使用 systemd 作为初始化系统。systemd 引入了更加现代的方式来管理系统服务,它不仅可以更快地启动服务,还可以并行地处理服务和资源管理。
  2. 运行级别:
    在 CentOS 6 中,运行级别用于定义系统启动时的不同模式,如单用户模式、多用户模式、图形界面模式等。每个运行级别都有对应的服务启动配置。
    在 CentOS 7 中,不再使用传统的运行级别,而是引入了 target 的概念。target 是一组服务的逻辑分组,它定义了系统在不同模式下的行为,如图形目标、多用户目标等。
  3. 服务管理:
    CentOS 6 使用 service 命令来管理系统服务,例如启动、停止、重启等。
    CentOS 7 使用 systemctl 命令来管理系统服务。systemctl 提供了更多的功能,如启动、停止、重启、状态查询、日志查看等。
  4. 启动脚本:
    在 CentOS 6 中,每个服务都有一个启动脚本位于 /etc/init.d/ 目录下。这些脚本由 SysVinit 管理。
    在 CentOS 7 中,systemd 使用 .service 文件来管理服务,这些文件位于 /usr/lib/systemd/system/ 或 /etc/systemd/system/ 目录下。
  5. 日志管理:
    在 CentOS 6 中,系统日志通常存储在 /var/log/ 目录下,使用工具如 syslog 或 rsyslog 进行管理。
    在 CentOS 7 中,systemd 引入了 journald 来管理日志,系统日志直接存储在 journald 的数据库中,可以使用 journalctl 命令来查询和管理日志。

总体而言,CentOS 7 引入了 systemd 初始化系统和相关的变化,使得启动流程更加现代化、高效和灵活。这些变化也使得服务管理和系统配置更加方便。

10.列举Linux高级命令,至少6个(百度)

netstat     # 网络状态监控
top         # 系统运行状态
lsblk       # 查看硬盘分区
find        # 搜索符合指定条件的文件和目录
ps -aux     # 查看运行进程
chkconfig   # 查看服务启动状态
systemctl   # 管理系统服务器
...

11.Linux查看内存、io读写、磁盘存储、端口占用、进程查看命令是什么?(瓜子)

################## 指令速览 #####################
top                     # 查看内存
iotop                   # io读写,安装指令:yum install iotop
df -lh                  # 磁盘存储
netstat -tunlp          # 端口占用
ps -aux | grep 进程名   # 进程查看################## 实际演示 #####################
[root@CentOS76 boot]# top
top - 09:51:20 up 2 days, 18:04,  2 users,  load average: 0.08, 0.03, 0.05
Tasks: 298 total,   1 running, 297 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8154716 total,  2834392 free,  1203764 used,  4116560 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  6622624 avail Mem PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                          64145 root      20   0 1344732  49228  10228 S   0.3  0.6   1:44.80 BT-Task                          95943 root      20   0 1029412  27792   5020 S   0.3  0.3   0:13.66 oneav                            1 root      20   0  194244   7456   4252 S   0.0  0.1   0:32.15 systemd                          2 root      20   0       0      0      0 S   0.0  0.0   0:00.08 kthreadd                         4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                     
# 下面的就省略了[root@CentOS76 boot]# iotop
Total DISK READ :	0.00 B/s | Total DISK WRITE :      11.59 K/s
Actual DISK READ:	0.00 B/s | Actual DISK WRITE:      11.59 K/sTID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                64120 be/4 root        0.00 B/s   11.59 K/s  0.00 %  0.00 % python3 /www/server/panel/BT-Panel2048 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % at-spi-bus-launcher [dconf worker]1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-r~stem --deserialize 222 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]2051 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % at-spi-bus-launcher [gdbus]4 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]
# 下面的就省略了[root@CentOS76 boot]# df -lh
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        3.9G     0  3.9G    0% /dev
tmpfs           3.9G  8.0K  3.9G    1% /dev/shm
tmpfs           3.9G   21M  3.9G    1% /run
tmpfs           3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sda3        17G   14G  2.0G   88% /
/dev/sda1       976M  178M  732M   20% /boot
tmpfs           797M   36K  797M    1% /run/user/0
/dev/sr0        4.4G  4.4G     0  100% /run/media/root/CentOS 7 x86_64[root@CentOS76 boot]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:6666            0.0.0.0:*               LISTEN      4931/perl           
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      772/rpcbind         
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1822/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1213/sshd           
# 下面的就省略了[root@CentOS76 boot]# ps -aux | grep sshd
root       1213  0.0  0.0 113000  4304 ?        Ss   8月25   0:00 /usr/sbin/sshd -D
root       2604  0.0  0.0 161088  5660 ?        Ss   8月25   0:02 sshd: root@pts/0
root     130269  0.0  0.0 112828   968 pts/0    S+   09:58   0:00 grep --color=auto sshd

12.使用Linux命令计算t2.txt第二列的和并输出(美团)

下面是t2.txt

张三 40
李四 50
王五 60

解答:

################## 指令速览 #####################
cat t2.txt | awk -F " " '{sum+=$2} END {print sum}'################## 实际演示 #####################
[root@CentOS76 ~]# touch /opt/interview/t2.txt
[root@CentOS76 ~]# cd /opt/interview/
[root@CentOS76 interview]# ls
1-t.txt  access.log  t2.txt  tcpdump.log
[root@CentOS76 interview]# vim t2.txt 
#########################
# 将下面的内容复制到文档中:
张三 40
李四 50
王五 60
#########################
[root@CentOS76 interview]# cat t2.txt | awk -F " " '{sum+=$2} END {print sum}'
150

13.Shell脚本里如何检查一个文件是否存在?并给出提示(百度)

if [ -f 文件名 ]
then echo "存在"
else echo "不存在"
fi

14.用shell写一个脚本,对文本t3.txt中无序的一列数字排序,并将总和输出(百度)

下面是t3.txt

3
2
9
8
1
7
4
6
0
5

解答:

################## 指令速览 #####################
sort -nr t3.txt | awk '{sum+=$0; print $0} END {print sum}'################## 实际演示 #####################
[root@CentOS76 interview]# vim /opt/interview/t3.txt
#########################
# 将下面的数字复制到文件中:
3
2
9
8
1
7
4
6
0
5
#########################
[root@CentOS76 interview]# sort -nr t3.txt 
9
8
7
6
5
4
3
2
1
0
[root@CentOS76 interview]# sort -nr t3.txt | awk '{sum+=$0} END {print sum}'
45
[root@CentOS76 interview]# sort -nr t3.txt | awk '{sum+=$0; print $0} END {print sum}'
9
8
7
6
5
4
3
2
1
0
45

15.请用指令写出查找当前文件夹(/home)下所有的文本文件内容中包含有字符“cat”的文件名称(金山)

注:我按照题目要求找出来的目录实在太多,所以将题目换成,寻找/opt/interview目录下所有包含字符’9’的文件名称。

################## 指令速览 #####################
grep -r "9" /opt/interview/ | cut -d ':' -f 1################## 实际演示 #####################
[root@CentOS76 interview]# grep -r "9" /opt/interview/
/opt/interview/1-t.txt:http://192.168.200.10/index1.html
/opt/interview/1-t.txt:http://192.168.200.10/index2.html
/opt/interview/1-t.txt:http://192.168.200.20/index1.html
/opt/interview/1-t.txt:http://192.168.200.30/index1.html
/opt/interview/1-t.txt:http://192.168.200.40/index1.html
/opt/interview/1-t.txt:http://192.168.200.30/order.html
/opt/interview/1-t.txt:http://192.168.200.10/order.html
/opt/interview/tcpdump.log:16:06:18.561792 IP CentOS76.ssh > 192.168.204.1.52174: Flags [P.], seq 2485459692:2485459880, ack 919837171, win 307, length 188
/opt/interview/tcpdump.log:16:06:18.561924 IP 192.168.204.1.52174 > CentOS76.ssh: Flags [.], ack 188, win 4099, length 0
/opt/interview/t3.txt:9
/opt/interview/access.log:192.168.130.21 aaa.html
/opt/interview/access.log:192.168.130.20 aaa.html
/opt/interview/access.log:192.168.130.20 aaa.html
/opt/interview/access.log:192.168.130.20 aaa.html
/opt/interview/access.log:192.168.130.23 aaa.html
/opt/interview/access.log:192.168.130.20 aaa.html
/opt/interview/access.log:192.168.130.25 aaa.html
/opt/interview/access.log:192.168.130.20 aaa.html
/opt/interview/access.log:192.168.130.20 aaa.html
/opt/interview/access.log:192.168.130.25 aaa.html
/opt/interview/access.log:192.168.130.20 aaa.html
[root@CentOS76 interview]# grep -r "9" /opt/interview/ | cut -d ':' -f 1
/opt/interview/1-t.txt
/opt/interview/1-t.txt
/opt/interview/1-t.txt
/opt/interview/1-t.txt
/opt/interview/1-t.txt
/opt/interview/1-t.txt
/opt/interview/1-t.txt
/opt/interview/tcpdump.log
/opt/interview/tcpdump.log
/opt/interview/t3.txt
/opt/interview/access.log
/opt/interview/access.log
/opt/interview/access.log
/opt/interview/access.log
/opt/interview/access.log
/opt/interview/access.log
/opt/interview/access.log
/opt/interview/access.log
/opt/interview/access.log
/opt/interview/access.log
/opt/interview/access.log
[root@CentOS76 interview]# grep -r "9" /opt/interview/ | cut -d ':' -f 1 | uniq -c7 /opt/interview/1-t.txt2 /opt/interview/tcpdump.log1 /opt/interview/t3.txt11 /opt/interview/access.log
[root@CentOS76 interview]# grep -r "9" /opt/interview/ | cut -d ':' -f 1 | sort | uniq -c | sort -nr11 /opt/interview/access.log7 /opt/interview/1-t.txt2 /opt/interview/tcpdump.log1 /opt/interview/t3.txt

16.请写出统计/home目录下所有文件个数和所有文件总行数的指令(在金山面试题扩展)

################## 指令速览 #####################
find /home -name "*.*" | wc -l          # 列出所有文件个数
find /home -name "*.*" | xargs wc -l    # 列出所有文件的总行数################## 实际演示 #####################
# 1. 首先用小目录/opt/interview/试试
[root@CentOS76 interview]# find /opt/interview/ -name "*.*" | wc -l
5
[root@CentOS76 interview]# find /opt/interview/ -name "*.*" | xargs wc -l7 /opt/interview/1-t.txt4 /opt/interview/tcpdump.log10 /opt/interview/t3.txt11 /opt/interview/access.log3 /opt/interview/t2.txt35 总用量# 2. 下面来看看题目规定的/home目录
[root@CentOS76 interview]# find /home -name "*.*" | wc -l
254
[root@CentOS76 interview]# find /home -name "*.*" | xargs wc -l
wc: /home/lyl/.cache: 是一个目录0 /home/lyl/.cache0 /home/lyl/.cache/gdm/session.log.old0 /home/lyl/.cache/gdm/session.log
wc: /home/lyl/.cache/mozilla/firefox/m1ftx1zv.default: 是一个目录0 /home/lyl/.cache/mozilla/firefox/m1ftx1zv.default
wc: /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default: 是一个目录0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/test-malware-simple.sbstore0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/test-phish-simple.pset0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/block-flashsubdoc-digest256.pset2 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/except-flash-digest256.sbstore0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/analytics-track-digest256.pset0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/test-unwanted-simple.pset1 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/test-harmful-simple.sbstore6 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/social-track-digest256.sbstore0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/test-trackwhite-simple.pset0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/test-track-simple.pset32 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/block-flash-digest256.sbstore0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/mozplugin-block-digest256.pset1 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/allow-flashallow-digest256.sbstore0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/test-unwanted-simple.sbstore46 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/analytics-track-digest256.sbstore0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/allow-flashallow-digest256.pset0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/test-malware-simple.pset0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/test-block-simple.pset0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/block-flash-digest256.pset0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/test-harmful-simple.pset0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/content-track-digest256.pset16 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/mozplugin-block-digest256.sbstore0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/except-flashallow-digest256.pset0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/mozstd-trackwhite-digest256.pset0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/except-flashsubdoc-digest256.sbstore1 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/test-track-simple.sbstore0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/base-track-digest256.pset1 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/except-flashallow-digest256.sbstore242 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/base-track-digest256.sbstore0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/test-phish-simple.sbstore291 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/block-flashsubdoc-digest256.sbstore67 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/content-track-digest256.sbstore0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/test-trackwhite-simple.sbstore0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/except-flashsubdoc-digest256.pset0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/test-block-simple.sbstore0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/ads-track-digest256.pset0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/social-track-digest256.pset0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/except-flash-digest256.pset1886 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/mozstd-trackwhite-digest256.sbstore191 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/safebrowsing/ads-track-digest256.sbstore23 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/OfflineCache/index.sqlite0 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/startupCache/urlCache.bin56707 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/startupCache/scriptCache.bin614 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/startupCache/webext.sc.lz46861 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/startupCache/scriptCache-child.bin18995 /home/lyl/.cache/mozilla/firefox/g2lzrpra.default-default/startupCache/startupCache.8.little0 /home/lyl/.cache/gnome-shell/update-check-3.284 /home/lyl/.cache/fontconfig/CACHEDIR.TAG1 /home/lyl/.cache/fontconfig/477ff6b974c3c1b81af411ebecb34280-le64.cache-7928 /home/lyl/.cache/tracker/ontologies.gvdb5867 /home/lyl/.cache/tracker/meta.db-wal0 /home/lyl/.cache/tracker/first-index.txt0 /home/lyl/.cache/tracker/last-crawl.txt0 /home/lyl/.cache/tracker/parser-sha1.txt0 /home/lyl/.cache/tracker/locale-for-miner-user-guides.txt0 /home/lyl/.cache/tracker/db-version.txt6 /home/lyl/.cache/tracker/meta.db-shm729 /home/lyl/.cache/tracker/meta.db0 /home/lyl/.cache/tracker/locale-for-miner-apps.txt0 /home/lyl/.cache/tracker/db-locale.txt124 /home/lyl/.cache/thumbnails/large/af6acdd6d38b6b1b5741fef41a009a7f.png1 /home/lyl/.cache/event-sound-cache.tdb.0d4bcac3ad0e4afe96e50f962baa9f7d.x86_64-redhat-linux-gnu
wc: /home/lyl/.cache/gstreamer-1.0: 是一个目录0 /home/lyl/.cache/gstreamer-1.05 /home/lyl/.cache/gstreamer-1.0/registry.x86_64.bin36 /home/lyl/.cache/imsettings/log.bak2 /home/lyl/.bash_logout0 /home/lyl/.ICEauthority
wc: /home/lyl/.config: 是一个目录0 /home/lyl/.config23 /home/lyl/.config/monitors.xml~2 /home/lyl/.config/yelp/yelp.cfg
wc: /home/lyl/.config/gtk-3.0: 是一个目录0 /home/lyl/.config/gtk-3.0
wc: /home/lyl/.config/goa-1.0: 是一个目录0 /home/lyl/.config/goa-1.015 /home/lyl/.config/user-dirs.dirs1 /home/lyl/.config/pulse/0d4bcac3ad0e4afe96e50f962baa9f7d-card-database.tdb1 /home/lyl/.config/pulse/0d4bcac3ad0e4afe96e50f962baa9f7d-device-volumes.tdb1 /home/lyl/.config/pulse/0d4bcac3ad0e4afe96e50f962baa9f7d-stream-volumes.tdb0 /home/lyl/.config/user-dirs.locale23 /home/lyl/.config/monitors.xml35 /home/lyl/.config/evolution/sources/system-proxy.source12 /home/lyl/.bash_profile3 /home/lyl/.bash_history
wc: /home/lyl/.dbus: 是一个目录0 /home/lyl/.dbus11 /home/lyl/.bashrc
wc: /home/lyl/.mozilla: 是一个目录0 /home/lyl/.mozilla
wc: /home/lyl/.mozilla/firefox/m1ftx1zv.default: 是一个目录0 /home/lyl/.mozilla/firefox/m1ftx1zv.default4 /home/lyl/.mozilla/firefox/m1ftx1zv.default/times.json19 /home/lyl/.mozilla/firefox/profiles.ini
wc: /home/lyl/.mozilla/firefox/g2lzrpra.default-default: 是一个目录0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default6 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/cookies.sqlite0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/AlternateServices.txt5 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/pkcs11.txt2187 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ka@firefox.mozilla.org.xpi2243 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-hi-IN@firefox.mozilla.org.xpi2125 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-kn@firefox.mozilla.org.xpi2271 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-uk@firefox.mozilla.org.xpi2022 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-si@firefox.mozilla.org.xpi1860 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ach@firefox.mozilla.org.xpi2059 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-my@firefox.mozilla.org.xpi2073 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-oc@firefox.mozilla.org.xpi2076 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-hu@firefox.mozilla.org.xpi1957 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-kab@firefox.mozilla.org.xpi2020 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-es-MX@firefox.mozilla.org.xpi1931 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-br@firefox.mozilla.org.xpi1826 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-gl@firefox.mozilla.org.xpi1749 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-af@firefox.mozilla.org.xpi2035 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-tr@firefox.mozilla.org.xpi2044 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ta@firefox.mozilla.org.xpi1927 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-hr@firefox.mozilla.org.xpi2048 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-lt@firefox.mozilla.org.xpi2134 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ko@firefox.mozilla.org.xpi1904 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-en-GB@firefox.mozilla.org.xpi2053 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-nl@firefox.mozilla.org.xpi1991 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-nb-NO@firefox.mozilla.org.xpi1958 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-sv-SE@firefox.mozilla.org.xpi2083 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-eu@firefox.mozilla.org.xpi2138 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-km@firefox.mozilla.org.xpi2163 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ja@firefox.mozilla.org.xpi1954 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-gn@firefox.mozilla.org.xpi2020 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-fa@firefox.mozilla.org.xpi2054 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ro@firefox.mozilla.org.xpi2301 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-be@firefox.mozilla.org.xpi1991 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ne-NP@firefox.mozilla.org.xpi2032 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-cy@firefox.mozilla.org.xpi2291 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-kk@firefox.mozilla.org.xpi1886 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-lij@firefox.mozilla.org.xpi2103 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-th@firefox.mozilla.org.xpi2084 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-fr@firefox.mozilla.org.xpi2175 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-el@firefox.mozilla.org.xpi1971 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-pt-PT@firefox.mozilla.org.xpi2048 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ur@firefox.mozilla.org.xpi2156 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-hy-AM@firefox.mozilla.org.xpi1960 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-rm@firefox.mozilla.org.xpi1952 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-an@firefox.mozilla.org.xpi2229 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ru@firefox.mozilla.org.xpi1995 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-sl@firefox.mozilla.org.xpi2166 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-te@firefox.mozilla.org.xpi2182 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-bn@firefox.mozilla.org.xpi2032 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-cak@firefox.mozilla.org.xpi1945 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-et@firefox.mozilla.org.xpi2120 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-gu-IN@firefox.mozilla.org.xpi1983 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-eo@firefox.mozilla.org.xpi1970 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ast@firefox.mozilla.org.xpi1848 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-id@firefox.mozilla.org.xpi1954 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-az@firefox.mozilla.org.xpi1931 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ff@firefox.mozilla.org.xpi1987 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-es-ES@firefox.mozilla.org.xpi2033 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-pa-IN@firefox.mozilla.org.xpi1968 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ca@firefox.mozilla.org.xpi2032 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-lv@firefox.mozilla.org.xpi1999 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ia@firefox.mozilla.org.xpi1886 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-uz@firefox.mozilla.org.xpi2120 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-mr@firefox.mozilla.org.xpi1939 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-nn-NO@firefox.mozilla.org.xpi2100 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-dsb@firefox.mozilla.org.xpi1968 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-gd@firefox.mozilla.org.xpi2128 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-es-AR@firefox.mozilla.org.xpi2028 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ar@firefox.mozilla.org.xpi2111 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-bg@firefox.mozilla.org.xpi1955 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-es-CL@firefox.mozilla.org.xpi2034 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-is@firefox.mozilla.org.xpi2135 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-zh-TW@firefox.mozilla.org.xpi2157 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-vi@firefox.mozilla.org.xpi1958 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ms@firefox.mozilla.org.xpi1975 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-pl@firefox.mozilla.org.xpi2034 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-sq@firefox.mozilla.org.xpi2011 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-da@firefox.mozilla.org.xpi1567 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-it@firefox.mozilla.org.xpi1935 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-mk@firefox.mozilla.org.xpi1934 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-bs@firefox.mozilla.org.xpi1912 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-en-CA@firefox.mozilla.org.xpi1994 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-fy-NL@firefox.mozilla.org.xpi2048 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-de@firefox.mozilla.org.xpi2068 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-sr@firefox.mozilla.org.xpi2010 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-hsb@firefox.mozilla.org.xpi1951 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-fi@firefox.mozilla.org.xpi2063 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-zh-CN@firefox.mozilla.org.xpi1797 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-son@firefox.mozilla.org.xpi1877 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-xh@firefox.mozilla.org.xpi1977 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-pt-BR@firefox.mozilla.org.xpi2009 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-he@firefox.mozilla.org.xpi1933 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-ga-IE@firefox.mozilla.org.xpi2086 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-sk@firefox.mozilla.org.xpi2011 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions/langpack-cs@firefox.mozilla.org.xpi0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/sessionCheckpoints.json0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/TRRBlacklist.txt11 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/pluginreg.dat0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/xulstore.json9 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/SiteSecurityServiceState.txt0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/addons.json0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/storage.sqlite62 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/places.sqlite0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/SecurityPreloadState.txt3 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/content-prefs.sqlite0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extension-preferences.json0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/.parentlock40 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/sessionstore.jsonlz40 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/containers.json192 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/favicons.sqlite0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/handlers.json5 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/compatibility.ini6 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/key4.db65 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/cert9.db264 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/addonStartup.json.lz4
wc: /home/lyl/.mozilla/firefox/g2lzrpra.default-default/storage/permanent/chrome/idb/1657114595AmcateirvtiSty.files: 是一个目录0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/storage/permanent/chrome/idb/1657114595AmcateirvtiSty.files
wc: /home/lyl/.mozilla/firefox/g2lzrpra.default-default/storage/permanent/chrome/idb/3561288849sdhlie.files: 是一个目录0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/storage/permanent/chrome/idb/3561288849sdhlie.files
wc: /home/lyl/.mozilla/firefox/g2lzrpra.default-default/storage/permanent/chrome/idb/1451318868ntouromlalnodry--epcr.files: 是一个目录0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/storage/permanent/chrome/idb/1451318868ntouromlalnodry--epcr.files
wc: /home/lyl/.mozilla/firefox/g2lzrpra.default-default/storage/permanent/chrome/idb/3870112724rsegmnoittet-es.files: 是一个目录0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/storage/permanent/chrome/idb/3870112724rsegmnoittet-es.files9 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/storage/permanent/chrome/idb/3561288849sdhlie.sqlite1209 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/storage/permanent/chrome/idb/3870112724rsegmnoittet-es.sqlite9 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/storage/permanent/chrome/idb/1657114595AmcateirvtiSty.sqlite9 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/storage/permanent/chrome/idb/1451318868ntouromlalnodry--epcr.sqlite0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/storage/permanent/chrome/.metadata-v20 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/extensions.json1 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/permissions.sqlite24 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/datareporting/archived/2023-07/1689239690602.84f56c55-a8ed-402c-89c9-d7ec336a028d.event.jsonlz486 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/datareporting/archived/2023-07/1689239690613.ffd9d828-5872-474a-9fba-a3bfe805c3b8.first-shutdown.jsonlz486 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/datareporting/archived/2023-07/1689239690611.ac81ab6b-4f0a-4e7c-9356-b5211655c725.main.jsonlz423 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/datareporting/archived/2023-07/1689239690579.24304509-d17b-43c3-9b03-5838feb77188.new-profile.jsonlz40 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/datareporting/session-state.json0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/datareporting/state.json0 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/times.json15 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/search.json.mozlz43 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/webappsstore.sqlite171 /home/lyl/.mozilla/firefox/g2lzrpra.default-default/prefs.js4 /home/lyl/.mozilla/firefox/installs.ini0 /home/lyl/.esd_auth
wc: /home/lyl/.local: 是一个目录0 /home/lyl/.local1 /home/lyl/.local/share/keyrings/user.keystore2 /home/lyl/.local/share/keyrings/login.keyring0 /home/lyl/.local/share/gvfs-metadata/home-9f5d88a5.log0 /home/lyl/.local/share/gvfs-metadata/root-12c5d369.log1 /home/lyl/.local/share/telepathy/mission-control/accounts-goa.cfg1 /home/lyl/.local/share/telepathy/mission-control/accounts.cfg5 /home/lyl/.local/share/tracker/data/tracker-store.ontology.journal0 /home/lyl/.local/share/tracker/data/.meta.isrunning2340 /home/lyl/.local/share/tracker/data/tracker-store.journal0 /home/lyl/.local/share/flatpak/.changed17 /home/lyl/.local/share/evolution/addressbook/system/contacts.db6 /home/lyl/.local/share/evolution/calendar/system/calendar.ics5 /home/Hello.java2 /home/www/.bash_logout12 /home/www/.bash_profile11 /home/www/.bashrc
wc: /home/www/.mozilla: 是一个目录0 /home/www/.mozilla7 /home/Hello.class284503 总用量

17.列出你了解的web服务器负载架构(滴滴)

常识性问题,为了了解你在Linux下有没有做过真正的开发:

  • Nginx
  • Haproxy
  • Keepalived
  • LVS

18.每天晚上10点30分,打包站点目录/var/spool/mail备份到/home目录下(每次备份按时间生成不同的备份包)(滴滴)

假设时间格式为“年-月-日_时分秒”,于是思路为:先写一个脚本完成单次备份任务,然后将该脚本加入到crond任务队列。

################## 指令速览 #####################
vim /root/mail.sh
##################################
# 将下面的代码复制到文件中:
#!/bin/bash
cd /var/spool/ && /bin/tar zcf /home/mail-`date +%Y-%m-%d_%H%M%S`.tar.gz mail/
##################################
crontab -e
#############################
# 将下面的代码添加到最后一行:
30 22 * * * /bin/sh /root/mail.sh # 这样写可以不用增加执行权限x
############################################### 实际演示 #####################
# 1. 编写脚本mail.sh完成单次备份任务
[root@CentOS76 ~]# vim mail.sh
##################################
# 将下面的代码复制到文件中:
#!/bin/bash
cd /var/spool/ && /bin/tar zcf /home/mail-`date +%Y-%m-%d_%H%M%S`.tar.gz mail/
##################################
[root@CentOS76 ~]# date +%Y-%m-%d_%H%M%S
2023-08-28_103813# 2. 为脚本添加所有者的执行权限
[root@CentOS76 ~]# ll
总用量 52
-rw-------. 1 root root 1883 713 17:12 anaconda-ks.cfg
drwxr-xr-x. 3 root root 4096 728 16:41 IdeaProjects
-rw-r--r--. 1 root root 1931 713 17:13 initial-setup-ks.cfg
-rw-r--r--. 1 root root   91 828 10:37 mail.sh
drwxr-xr-x. 2 root root 4096 729 17:33 myshcode
drwxr-xr-x. 2 root root 4096 713 19:44 公共
drwxr-xr-x. 2 root root 4096 713 19:44 模板
drwxr-xr-x. 2 root root 4096 713 19:44 视频
drwxr-xr-x. 2 root root 4096 713 19:44 图片
drwxr-xr-x. 2 root root 4096 713 19:44 文档
drwxr-xr-x. 2 root root 4096 713 19:44 下载
drwxr-xr-x. 2 root root 4096 713 19:44 音乐
drwxr-xr-x. 2 root root 4096 713 19:44 桌面
[root@CentOS76 ~]# chmod u+x mail.sh 
[root@CentOS76 ~]# ll
总用量 52
-rw-------. 1 root root 1883 713 17:12 anaconda-ks.cfg
drwxr-xr-x. 3 root root 4096 728 16:41 IdeaProjects
-rw-r--r--. 1 root root 1931 713 17:13 initial-setup-ks.cfg
-rwxr--r--. 1 root root   91 828 10:37 mail.sh
drwxr-xr-x. 2 root root 4096 729 17:33 myshcode
drwxr-xr-x. 2 root root 4096 713 19:44 公共
drwxr-xr-x. 2 root root 4096 713 19:44 模板
drwxr-xr-x. 2 root root 4096 713 19:44 视频
drwxr-xr-x. 2 root root 4096 713 19:44 图片
drwxr-xr-x. 2 root root 4096 713 19:44 文档
drwxr-xr-x. 2 root root 4096 713 19:44 下载
drwxr-xr-x. 2 root root 4096 713 19:44 音乐
drwxr-xr-x. 2 root root 4096 713 19:44 桌面# 3. 验证脚本是否可以正常备份
[root@CentOS76 ~]# ls /home
Hello.class  Hello.java  lyl  www
[root@CentOS76 ~]# ./mail.sh 
[root@CentOS76 ~]# ls /home
Hello.class  Hello.java  lyl  mail-2023-08-28_103941.tar.gz  www# 4. 将备份脚本添加到定时任务中
[root@CentOS76 ~]# crontab -e
crontab: installing new crontab
#############################
# 将下面的代码添加到最后一行:
30 22 * * * /root/mail.sh
#############################
[root@CentOS76 ~]# crontab -l
30 2 * * * /usr/sbin/mysql_db_backup.sh
30 22 * * * /root/mail.sh

*19.如何优化Linux系统,说出你的方法(瓜子)

  这是一个非常经典的简单题,没有标准答案,根据自己的认识和经验展开说就行,大部分是一些原则性的东西,也就是规则性的东西。但老韩的思路是首先应该搞明白的是,本质上想要优化linux系统,就应该站在整体的角度看待问题

Linux主要是做服务器的,比如考虑下面一个Linux作为Web服务器的具体场景:

图26-4 原始的应用场景

上面架构在少量用户进行访问时问题不大,但若有10w个用户访问时(并发变成了高并发),上述体系恐怕难以支撑,所以此时就需要进行优化。而此时对于Linux系统进行优化的目标就是,当有很多客户端/浏览器访问Linux服务器的某个服务时,要保证Linux服务正常运行、速度很快、链接安全。于是有两个层面的优化:

  1. 优化“架构”。
  2. 优化“系统”本身。

优化Linux系统的普遍要求:高性能,高可用,高并发。

1. 对于架构的优化

图26-5 优化架构后的场景

首先是架构上的改变:

  1. 作为一个站点,肯定会有一个文件系统,或者也叫文件服务器,所以单独抽取出来并组成集群。
  2. 原来Linux服务器上肯定也有相应的数据库,也抽取出来单独成为一个集群,并采用“读写分离”的架构。
  3. 负责Web站点服务的Linux服务器也组成一个集群,以满足海量用户连接。
  4. 用户不再直接连接到Linux服务器,而是首先连接到LVS负载均衡(硬件/软件)上,而后LVS会自动将请求合理的分配到不同的服务器上去。

然后是可以进一步优化的方面:

  1. 网络优化(上图标红):保证用户都可以稳定、快速的连接到服务器。
  2. 磁盘IO(上图标红):提升磁盘IO速率,保证对于文件系统的访问足够快。
  3. 文件连接数(上图标红):保证数据库支持足够大的文件连接数,以保证海量用户的访问。
  4. 安全性:防止别人攻击服务器。
  5. 防火墙:不要让Linux监听过多的端口,比如有些端口必须要监听,比如说是内部的端口3306,那就只让它内部访问,而不要到外网中去。
  6. 内存:关掉一些不必要的服务。

注:弹幕中有推荐《大型网站技术架构》。

2. 对于系统的优化

下面是对系统本身的优化(固定的规则):

  1. 不用root,使用sudo提升权限。
  2. 定时的自动更新服务时间,使用nptdate nptl.aliyun.com,让croud定时任务调度定时更新。
  3. 配置yum源,指向国内镜像(清华、163等)。
  4. 配置合理的防火墙策略,打开必要的端口,关闭不必要的端口。尽量打开最少的端口。
  5. 打开最大文件数(专业术语:调整文件的描述的数量),vim /etc/profile ulimit -SHn 65535意为将系统能打开的最大文件数设置为65535(默认1000多,不够)。
  6. 配置合理的监控策略,如对性能、内存、磁盘的监控策略。
  7. 配置合理的系统重要文件的备份策略。
  8. 对安装的软件进行优化,比如nginx、apache。
  9. 内核参数进行优化/etc/sysctl.conf
  10. chattr锁定一些重要的系统文件,如/etc/passwd/ect/shadow/etc/inittab
  11. 使用setupntsysv禁用不必要的服务,以优化内存。

最后给出chatgpt的回答:

问:请问如何优化Linux系统
答:优化 Linux 系统可以提升性能、资源利用率和用户体验。以下是一些常见的优化方法:

  1. 更新内核和软件包:保持系统内核和软件包更新,以获取性能改进、安全补丁和新功能。
  2. 优化硬件资源:根据系统配置,调整 CPU、内存和磁盘等硬件资源的设置,以充分利用硬件性能。
  3. 关闭不必要的服务:禁用不需要的系统服务,减少系统负担和安全风险。
  4. 使用合适的文件系统:选择适合您的用途的文件系统,如EXT4、XFS、Btrfs等,以获得最佳性能和可靠性。
  5. 优化磁盘 I/O:使用SSD代替HDD,使用TRIM来维护SSD性能,配置I/O调度程序和缓存策略来优化磁盘性能。
  6. 内存管理:合理配置虚拟内存、内存交换和调度策略,以确保内存利用率和性能。
  7. 优化网络设置:调整网络参数、使用高性能网络驱动程序,合理配置网络防火墙规则。
  8. 并发管理:使用并发管理工具如systemd,控制并发运行的进程数量,避免过度资源消耗。
  9. 使用缓存和加速器:使用缓存技术如memcached,使用GPU加速器进行计算密集型任务。
  10. 系统监控和优化:使用监控工具(如top、htop、iotop)来识别性能瓶颈,然后针对性地优化。
  11. 文件系统缩减和清理:定期清理不必要的文件、日志和临时文件,以释放磁盘空间。
  12. 使用高效的算法和数据结构:在编写程序时,选择高效的算法和数据结构,以提高应用性能。
  13. 调整内核参数:根据硬件和应用需求,调整内核参数,如文件句柄数、TCP参数等。
  14. 安全性能权衡:优化性能时要保持安全性。关闭不必要的服务和暴露的功能,但不要牺牲系统的安全性。
  15. 使用高效的编译器选项:在编译应用程序时,使用适当的编译器优化选项,以生成更快和更紧凑的代码。
  16. 负载均衡:对于分布式应用,使用负载均衡来平衡不同节点的工作负载。

这些优化方法依赖于您的使用情况、硬件配置和目标。在进行任何系统优化之前,最好先备份您的数据和设置,以防万一出现问题。另外,持续监控和测试是优化的关键,以确保您的更改确实带来了性能提升。

*20.Linux面试100道题

见我的百度网盘链接“llinux选择题100道题-带答案.docx”。

Linux面试基本100道题
1.cron 后台常驻程序 (daemon) 用于:
A. 负责文件在网络中的共享
B. 管理打印子系统
C. 跟踪管理系统信息和错误
D. 管理系统日常任务的调度
答案:D2. 在大多数Linux发行版本中,以下哪个属于块设备 (block devices) ?
A. 串行口
B. 硬盘
C. 虚拟终端
D. 打印机
答案:B3. 下面哪个Linux命令可以一次显示一页内容?
A. pause
B. cat
C. more
D. grep
答案:C4. 怎样了解您在当前目录下还有多大空间?
A. Use df
B. Use du /
C. Use du .
D. Use df .
答案:C5. 怎样更改一个文件的权限设置?
A. attrib
B. chmod
C. change
D. file
答案:B6. 假如您需要找出 /etc/my.conf 文件属于哪个包 (package) ,您可以执行:
A. rpm -q /etc/my.conf
B. rpm -requires /etc/my.conf
C. rpm -qf /etc/my.conf
D. rpm -q | grep /etc/my.conf
答案:C7. 假如当前系统是在 level 3 运行,怎样不重启系统就可转换到 level 5 运行?
A. Set level = 5
B. telinit 5
C. run 5
D. ALT-F7-5
答案:B8. 那个命令用于改变 IDE 硬盘的设置?
A. hdparam
B. ideconfig
C. hdparm
D. hddparm
答案:C9. 下面哪个命令可以列出定义在以后特定时间运行一次的所有任务?
A. atq
B. cron
C. batch
D. at
答案:A10.下面命令的作用是:set PS1="[\u\w\t]\$" ; export PS1
A. 改变错误信息提示
B. 改变命令提示符
C. 改变一些终端参数
D. 改变辅助命令提示符
答案:B11.作为一个管理员,你希望在每一个新用户的目录下放一个文件 .bashrc ,那么你应该在哪个目录下放这个文件,以便于新用户创建主目录时自动将这个文件复制到自己的目录下。
A. /etc/skel/
B. /etc/default/
C. /etc/defaults/
D. /etc/profile.d/
答案:A12.在bash中,export命令的作用是:
A. 在子shell中运行命令
B. 使在子shell中可以使用命令历史记录
C. 为其它应用程序设置环境变量
D. 提供NFS分区给网络中的其它系统使用
答案:C13.在使用了shadow口令的系统中,/etc/passwd和/etc/shadow两个文件的权限正确的是:
A. -rw-r----- , -r--------
B. -rw-r--r-- , -r--r--r--
C. -rw-r--r-- , -r--------
D. -rw-r--rw- , -r-----r--
答案:C14.下面哪个参数可以删除一个用户并同时删除用户的主目录?
A. rmuser -r
B. deluser -r
C. userdel -r
D. usermgr -r
答案:C15.有一个备份程序mybackup,需要在周一至周五下午1点和晚上8点各运行一次,下面哪条crontab的项可以完成这项工作?
A. 0 13,20 * * 1,5 mybackup
B. 0 13,20 * * 1,2,3,4,5 mybackup
C. * 13,20 * * 1,2,3,4,5 mybackup
D. 0 13,20 1,5 * * mybackup
答案:B16.如何从当前系统中卸载一个已装载的文件系统
A. umount
B. dismount
C. mount -u
D. 从 /etc/fstab 中删除这个文件系统项
答案:A17.如果你的umask设置为022,缺省的你创建的文件的权限为:
A. ----w--w-
B. -w--w----
C. r-xr-x---
D. rw-r--r--
答案:D18.在一条命令中如何查找一个二进制命令 Xconfigurator 的路径?
A. apropos Xconfigurator
B. find Xconfigurator
C. where Xconfigurator
D. which Xconfigurator
答案:D19.哪一条命令用来装载所有在 /etc/fstab 中定义的文件系统?
A. amount
B. mount -a
C. fmount
D. mount -f
答案:B20.运行一个脚本,用户不需要什么样的权限?
A. read
B. write
C. execute
D. browse on the directory
答案:B21.在Linux中,如何标识接在IDE0上的slave硬盘的第2个扩展分区?
A. /dev/hdb2
B. /dev/hd1b2
C. /dev/hdb6
D. /dev/hd1b6
答案:C22.在应用程序起动时,如何设置进程的优先级?
A. priority
B. nice
C. renice
D. setpri
答案:B23.在 bash 中, 在一条命令后加入"1>&2" 意味着:
A. 标准错误输出重定向到标准输入
B. 标准输入重定向到标准错误输出
C. 标准输出重定向到标准错误输出
D. 标准输出重定向到标准输入
答案:C24.下面哪条命令可以把f1.txt复制为f2.txt?
A. cp f1.txt | f2.txt
B. cat f1.txt | f2.txt
C. cat f1.txt > f2.txt
D. copy f1.txt | f2.txt
答案:C25.显示一个文件最后几行的命令是:
A. tac
B. tail
C. rear
D. last
答案:B26.如何快速切换到用户John的主目录下?
A. cd @John
B. cd #John
C. cd &John
D. cd ~John
答案:D27.把一个流中所有字符转换成大写字符,可以使用下面哪个命令?
A. tr a-z A-Z
B. tac a-z A-Z
C.sed /a-z/A-Z
D. sed --toupper
答案:A28.使用什么命令可以查看Linux的启动信息?
A. mesg -d
B. dmesg
C. cat /etc/mesg
D. cat /var/mesg
答案:B29.运行级定义在:
A. in the kernel
B. in /etc/inittab
C. in /etc/runlevels
D. using the rl command
答案:B30.如何装载(mount)上在 /etc/fstab 文件中定义的所有文件系统?
A. mount -a
B. mount /mnt/*
C. mount
D. mount /etc/fstab
答案:A31.使用ln命令将生成了一个指向文件old的符号链接new,如果你将文件old删除,是否还能够访问文件中的数据?
A. 不可能再访问
B. 仍然可以访问
C. 能否访问取决于文件的所有者
D. 能否访问取决于文件的权限
答案:A32.xt2fs文件系统中,缺省的为root用户保留多大的空间?
A. 3%
B. 5%
C. 10%
D. 15%
答案:C33.哪个命令用来显示系统中各个分区中inode的使用情况?
A. df -i
B. df -H
C. free -b
D. du -a -c /
答案:A34.多数Linux发行版本中,图形方式的运行级定义为?
A. 1
B. 2
C. 3
D. 5
答案:D35.在系统文档中找到关于print这个单词的所有说明?
A. man print
B. which print
C. locate print
D. apropos print
答案:D36.man 5 passwd 含义是?
A. 显示 passwd 命令的使用方法
B. 显示 passwd 文件的结构
C. 显示 passwd 命令的说明的前五行
D. 显示关于passwd的前五处说明文档。
答案:A37.如何在文件中查找显示所有以" * "打头的行?
A. find \* file
B. wc -l * < file
C. grep -n * file
D. grep ‘^\*’ file
答案:D38.在ps命令中什么参数是用来显示所有用户的进程的?
A. a
B. b
C. u
D. x
答案:A39.显示二进制文件的命令是?
A. od
B. vil
C. view
D. binview
答案:A40.如何显示Linux系统中注册的用户数(包含系统用户)?
A. account -l
B. nl /etc/passwd |head
C. wc --users /etc/passwd
D. wc --lines /etc/passwd
答案:D41.在一行结束位置加上什么符号,表示未结束,下一行继续?
A. /
B. \
C. ;
D. |
答案:B42.命令 kill 9 的含义是:
A. kills the process whose PID is 9.
B. kills all processes belonging to UID 9.
C. sends SIGKILL to the process whose PID is 9.
D. sends SIGTERM to the process whose PID IS 9.
答案:D43.如何删除一个非空子目录/tmp?
A. del /tmp/*
B. rm -rf /tmp
C. rm -Ra /tmp/*
D. rm -rf /tmp/*
答案:B44.使用什么命令可以在今天午夜运行命令 cmd1 ?
A. at midnight cmd1
B. cron -at "00:00" cmd1
C. batch -t "00:00" < cmd1
D. echo "cmd1" | at midnight
答案:D45.你的系统使用增量备份策略,当需要恢复系统时,你需要按什么顺序恢复备份数据?
A. 最后一次全备份,然后从最早到最近的增量备份
B. 最后一次全备份,然后从最近到最早的增量备份
C. 最早到最近的增量备份,然后最后一次全备份
D. 最近到最早的增量备份,然后最后一次全备份
答案:B46.对所有用户的变量设置,应当放在哪个文件下?
A. /etc/bashrc
B. /etc/profile
C. ~/.bash_profile
D. /etc/skel/.bashrc
答案:B
47.Linux系统中,一般把命令 ls 定义为 ls --color 的别名,以便以不同颜色来标识不同类型的文件。但是,如何能够使用原先的ls命令?
A. \ls
B. ;ls
C. ls $$
D. ls --noalias
答案:A48.在Linux系统中的脚本文件一般以什么开头?
A. $/bin/sh
B. #!/bin/sh
C. use /bin/sh
D. set shell=/bin/sh
答案:B49.下面哪种写法表示如果cmd1成功执行,则执行cmd2命令?
A. cmd1&&cmd2
B. cmd1|cmd2
C. cmd1;cmd2
D. cmd1||cmd2
答案:A50.在哪个文件中定义网卡的I/O地址?
A. cat /proc/modules
B. cat /proc/devices
C. cat /proc/ioports
D. cat /io/dma
答案:C51.Linux中,提供TCP/IP包过滤功能的软件叫什么?
A. rarp
B. route
C. iptables
D. filter
答案:C52.如何暂停一个打印队列?
A. lpr
B. lpq
C. lpc
D. lpd
答案:C53.在vi中退出不保存的命令是?
A. :q
B. :w
C. :wq
D. :q!
答案:D54.在 XFree86 3.x 中, 缺省的字体服务器为:
A. xfs
B. xfserv
C. fonts
D. xfstt
答案:A55.使用什么命令检测基本网络连接?
A. ping
B. route
C. netstat
D. ifconfig
答案:A56.下面哪个协议使用了二个以上的端口?
A. telnet
B. FTP
C. rsh
D. HTTP
答案:B57.在PPP协议中,哪个认证协议不以明文传递密码?
A. PAM
B. PAP
C. PGP
D. CHAP
答案:D58.下面哪个文件系统应该分配最大的空间?
A. /usr
B. /lib
C. /root
D. /bin
答案:A59.如何在Debian系统中安装rpm包?
A. alien pkgname.rpm
B. dpkg --rpm pkgname.rpm
C. dpkg --alien pkgname.rpm
D. alien pkganme.rpm ; dpkg -i pkganme.deb
答案:D60.在安装软件时下面哪一步需要root权限?
A. make
B. make deps
C. make config
D. make install
答案:D61.什么命令用来只更新已经安装过的rpm软件包?
A. rpm -U * .rpm
B. rpm -F * .rpm
C. rpm -e * .rpm
D. rpm -q * .rpm
答案:B62.在 windows 与 Linux 双起动的系统中,如果要让LILO 管理引导,则 LILO 应该放在:
A. MBR
B. /
C. root分区的首扇区
D. /LILO
答案:D63.ldconfig的配置文件是
A. /lib/ld.so
B. /etc/ld.so.conf
C. /etc/ld.so.cache
D. /etc/modules.conf
答案:B
64.下面哪个命令可以压缩部分文件:
A. tar -dzvf filename.tgz *
B. tar -tzvf filename.tgz *
C. tar -czvf filename.tgz *
D. tar -xzvf filename.tgz *
答案:C65.网络服务的daemon是:
A. lpd
B. netd
C. httpd
D. inetd
答案:D66.Linux与windows 的网上领居互联,需要提供什么daemon?
A. bind
B. smbd
C. nmbd
D. shard
答案:B67.对于Apache服务器,提供的子进程的缺省的用户是:
A. root
B. apached
C. httpd
D. nobody
答案:D68.sendmail中缺省的未发出信件的存放位置是:
A. /var/mail/
B. /var/spool/mail/
C. /var/spool/mqueue/
D. /var/mail/deliver/
答案:C69.apache的主配置文件是:
A. httpd.conf
B. httpd.cfg
C. access.cfg
D. apache.conf
答案:A70.关于可装载的模块,装载时的参数,如I/O地址等的存放位置是:
A. /etc/conf.modules
B. /etc/lilo.conf
C. /boot/System.map
D. /etc/sysconfig
答案:A71.在 Linux 中,如何关闭邮件提示?
A. biff n
B. mesg n
C. notify off
D. set notify=off
答案:A72.在 bash shell 环境下,当一命令正在执行时,按下 control-Z 会:
A. 中止前台任务
B. 给当前文件加上 EOF.
C. 将前台任务转入后台
D. 注销当前用户
答案:C73.定义bash环境的用户文件是:
A. bash & .bashrc
B. bashrc & .bash_conf
C. bashrc & bash_profile
D. .bashrc & .bash_profile
答案:D74.下面哪条命令用来显示一个程序所使用的库文件?
A. ldd
B. ld so
C. modprobe
D. ldconfig
答案:B75.如何查看一个RPM软件的配置文件的存放位置?
A. rpm -qc rpm1
B. rpm -Vc rpm1
C. rpm --config rpm1
D. rpm -qa --config rpm1
答案:A76.如何查看一个RPM软件的修改记录?
A. rpm -Vc postfix
B. rpm -qpil postfix
C. rpm --changelog postfix
D. rpm -q --changelog postfix
答案:D77.通过Makefile来安装已编译过的代码的命令是:
A. make
B. install
C. make depend
D. make install
答案:D78.什么命令解压缩tar文件?
A. tar -czvf filename.tgz
B. tar -xzvf filename.tgz
C. tar -tzvf filename.tgz
D. tar -dzvf filename.tgz
答案:B79.在 XF86Config 配置文件中,哪个段用来设置字体文件?
A. The Fonts section.
B. The Files section.
C. The xfsCodes section.
D. The Graphics section.
答案:B80.8 bit color 指的是:
A. 64K colors
B. 16K colors
C. 256 colors
D. 16M colors
答案:C81.下面哪个文件用来设置 X window 的显示分辨率?
A. xinit
B. xinitrc
C. XF86Setup
D. XF86Config
答案:D82.哪个变量用来指定一个远程X应用程序将输出放到哪个X server上?
A. DISPLAY
B. TERM
C. ECHO
D. OUTPUT
答案:A83.在xdm的配置目录中,哪个文件用来设置在用户通过xdm登录后自动起动的应用程序?
A. The Xsession file
B. The Xsetup_0 file
C. The Xstart_up file
D. The GiveConsole file
答案:B84.命令 netstat -a 停了很长时间没有响应,这可能是哪里的问题?
A. NFS.
B. DNS.
C. NIS.
D. routing.
答案:B85.ping使用的协议是:
A. TCP
B. UDP
C. SMB
D. ICMP
答案:D86.下面哪个命令不是用来查看网络故障的?
A. ping
B. init
C. telnet
D. netstat
答案:B87.拨号上网使用的协议通常是:
A. PPP
B. UUCP
C. SLIP
D. Ethernet
答案:A
1.TCP/IP中,哪个协议是用来进行IP自动分配的?
A. ARP
B. NFS
C. DHCP
D. DNS
答案:C89.下面哪个文件定义了网络服务的端口?
A. /etc/netport
B. /etc/services
C. /etc/server
D. /etc/netconf
答案:B90.下面哪个功能用来生成一个文件的校验码?
A. md5
B. tar
C. crypt
D. md5sum
答案:A91.缺省的,用户邮件放在:
A. ~/mail/
B. /var/mail/
C. /var/mail/spool/
D. /var/spool/mail/
答案:D92.下面哪个文件包含了供 NFS daemon 使用的目录列表?
A. /etc/nfs
B. /etc/nfs.conf
C. /etc/exports
D. /etc/netdir
答案:C93.如何停止一台机器的telnet服务?
A. Put NONE in /etc/telnet.allow
B. Put a line 'ALL:ALL' in /etc/hosts.deny
C. Comment the telnet entry in /etc/inittab
D. Comment the telnet entry in /etc/xinetd.conf
答案:D94.在哪个文件中保存了sendmail的别名?
A. /etc/aliases
B. /etc/mailaliases
C. /etc/sendmail.aliases
D. /etc/sendmail/aliases
答案:A95.smbd and nmbddaemons 的配置文件是:
A. /etc/exports
B. /etc/smb.conf
C. /etc/samba/config
D. /usr/local/samba.cfg
答案:B96.下面哪个命令用来卸载一个内核模块?
A. rmmod
B. unmod
C. delmod
D. modprobe
答案:A97.什么情况下必须运行lilo
A. once a day from cron
B. once a week from cron
C. after installing a new kernel
D. after installing a new module
答案:C98.什么命令显示所有装载的模块?
A. lsmod
B. dirmod
C. modules
D. modlist
答案:A99.下面哪个命令刷新打印机队列?
A. lpflush
B. lprm -
C. lpclear
D. lprm all
答案:B100.下面哪个命令可以查看网卡的中断?
A. cat /proc/ioports
B. cat /proc/interrupts
C. cat /proc/memoryinfo
D. which interrupts
答案:B

  1. 《鸟哥的Linux私房菜 基础学习篇 第四版》 ↩︎

  2. 《鸟哥的Linux私房菜 服务器架设篇 第三版》 ↩︎

  3. 《韩顺平_2021图解Linux全面升级》 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/62354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Kali Linux高级渗透测试】深入剖析Kali Linux:高级渗透测试技术与实践

&#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于恒川的日常汇报系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏C语言初阶、C…

基于java Swing 和 mysql实现的购物管理系统(源码+数据库+说明文档+运行指导视频)

一、项目简介 本项目是一套基于java Swing 和 mysql实现的购物管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过…

Effetive STL | 条款2 : 小心对“容器无关代码”的幻想

Effetive STL | 条款2 &#xff1a; 小心对“容器无关代码”的幻想 文章目录 Effetive STL | 条款2 &#xff1a; 小心对“容器无关代码”的幻想STL 容器特点推行自己的容器容器能力的交集 封装Method1: typedefMethod2: class>>>>> 欢迎关注公众号【三戒纪元】…

如何通过内网穿透实现外部网络对Spring Boot服务端接口的HTTP监听和调试?

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

微信小程序 - 2023年最新版手机号快捷登录详细教程

前言 最近开发公司手机快捷登录的功能&#xff0c;花费了不少时间&#xff0c;这里附上详细教程。 这里以海底捞小程序的图片为例&#xff0c;如有侵权请联系小编删除。 代码如下 <button open-type"getPhoneNumber" getphonenumber"getPhoneNumber"…

oracle 基础运用2

首先在电脑上安装PLSQL developer&#xff0c;这个是oracle图形化连接工具&#xff0c;然后安装win64_11gR2_client&#xff0c;这个是orace客户端&#xff0c;安装完成后可以在cmd命令行输入sqlplus命令进行验证&#xff0c;如图表示安装成功。 作为sys的连接应该是SySDBA或Sy…

万物流动 万物永驻 ——C++ Core Guidelines的流动哲学

众所周知&#xff0c;C 是一门自由的语言&#xff0c;语言的设计哲学之一就是赋予程序员极大的自由度和灵活性&#xff0c;因此&#xff0c;使用C 完成一个任务时&#xff0c;不同的程序员往往会有不同的实现方法&#xff0c;这真正阐释了什么叫条条大路通罗马。不过&#xff0…

Android Activity 启动流程 二:setContentView

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、概览二、setContentView&#xff08;&#xff09;三…

阿桂天山的技术小结:Flask+UEditor实现图片文件上传富文本编辑

话不多说,有图有源码 先看效果: 1.前端html页面index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><script src"{{ url_for(static,filenameueditor/ueditor.config.js) }}"></script…

说说Flink中的State

分析&回答 基本类型划分 在Flink中&#xff0c;按照基本类型&#xff0c;对State做了以下两类的划分&#xff1a; Keyed State&#xff0c;和Key有关的状态类型&#xff0c;它只能被基于KeyedStream之上的操作&#xff0c;方法所使用。我们可以从逻辑上理解这种状态是一…

[第七届蓝帽杯全国大学生网络安全技能大赛 蓝帽杯 2023]——Web方向部分题 详细Writeup

Web LovePHP 你真的熟悉PHP吗&#xff1f; 源码如下 <?php class Saferman{public $check True;public function __destruct(){if($this->check True){file($_GET[secret]);}}public function __wakeup(){$this->checkFalse;} } if(isset($_GET[my_secret.flag]…

【Java Web】敏感词过滤

一、前缀树 假设有敏感词&#xff1a;b&#xff0c;abc&#xff0c;abd&#xff0c;bcd&#xff0c;abcd&#xff0c;efg&#xff0c;hii 那么前缀树可以构造为&#xff1a; 二、敏感词过滤器 package com.nowcoder.community.util;import org.apache.commons.lang3.CharUt…

全网首发!大众宝来高尔夫polo领驭迈腾帕萨特奥迪A4A6B6B7等老车机增加带蓝牙控制的AUX解码模块,支持小程序原车按钮控制,支持外接高品质蓝牙模块

文章目录 前言1、设计指标2、PCB设计3、程序设计4、调试4.1蓝牙控制AUX解码板4.2自定义车机按钮控制其他高品质蓝牙音频模块4.3小程序使用 5、模块与车机连接方法6、结语 前言 ​ 之前写过四篇关于车机增加音频输入的方法。 1、07宝来经典车机CD收音机&#xff08;RC668&…

前端需要理解的数据治理与异常监控知识

服务监控包括错误监控、性能监控和行为监控。数据埋点是对服务监控中收集用户信息的技术实现&#xff0c;分为侵入式和非侵入式。 1 数据治理 前端数据治理的重要指标是准确性和数据&#xff0c;一个数据对象包括数据值和其他元数据。 2 数据上报方式 2.1 Image 通过将采集…

windows10默认浏览器总是自动更改为Edge浏览器

在设置的默认应用设置中把默认浏览器改为chrome或其他之后他自动又会改回Edge。不得不说*软真的狗。 解决办法&#xff1a; 后来发现在Edge浏览器的设置中有这么一个选项&#xff0c;会很无耻的默认是Edge。把它关掉后重新设置就行了。

NPM 常用命令(一)

目录 1、npm 1.1 简介 1.2 依赖性 1.3 安装方式 2、npm access 2.1 命令描述 2.2 详情 3、npm adduser 3.1 描述 4、npm audit 4.1 简介 4.2 审计签名 4.3 操作示例 4.4 配置 audit-level dry-run force json package-lock-only omit foreground-scripts …

从项目中突显技能:在面试中讲述你的编程故事

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话&#xff0c;在下面操作步骤中…

结构体的简单介绍

目录 概念&#xff1a; 与数组类比&#xff1a; 结构体声明&#xff1a; 注意&#xff1a; 结构体变量、全局变量、局部变量&#xff1a; 结构体声明中包含其他结构体变量&#xff1a; 结构体变量的初始化&#xff1a; 包含了其他结构体变量的初始化&#xff1a; 结构体…

SPI2外设驱动-W25Q64 SPI接口初始化

前言 &#xff08;1&#xff09;本系列是基于STM32的项目笔记&#xff0c;内容涵盖了STM32各种外设的使用&#xff0c;由浅入深。 &#xff08;2&#xff09;小编使用的单片机是STM32F105RCT6&#xff0c;项目笔记基于小编的实际项目&#xff0c;但是博客中的内容适用于各种单片…