linux运维经典面试题总结

2023-05-16

1、Linux常见的日志文件都有哪些,各自的用途?日志轮询配置文件在哪里?欢迎界面配置文件在哪里?
答:/var/log/messages 内核及公共消息日志
/var/log/cron 计划任务日志
/var/log/dmesg 系统引导日志
/var/log/maillog 邮件系统日志
/var/log/secure 记录与访问限制相关日志
/etc/logrotate.d/ 此目录下是各服务的日志轮询配置文件
/etc/issue 登陆前欢迎界面 /etc/motd 或者 /etc/update-motd.d/ 登录后欢迎界面
Ubuntu默认就已经有一个动态的MOTD信息提示,在/etc/update-motd.d/下,centos可通过环境变量文件,将需要执行的命令或脚本添加到这些文件末尾,参考https://developer.aliyun.com/article/560280

2、简述 /etc/fstab 里面各字段的含义?
答:因为 mount 挂载在重启服务后会失效,所以需要将分区信息写到 /etc/fstab 文件中,使其永久挂载
磁盘分区 挂载目录 文件格式
/dev/sdb1 /mnt/david ext4 defaults 0 0

3、讲一下 Keepalived 的工作原理?
答:在一个虚拟路由器中,只有作为 MASTER 的 VRRP 路由器会一直发送 VRRP 通告信息,BACKUP 不会抢占 MASTER,除非它的优先级会更高。当 MASTER 不可用时(BACKUP收不到通告信息) 多台 BACKUP 中优先级最高的这台会被抢占为 MASTER ,这种抢占是非常快速的(<1s),以保证服务的连续性为了安全性考虑,VRRP包使用了加密协议进行加密。BACKUP 不会发送通告信息,只会接收通告信息。

4、如何查看Linux系统每个ip的连接数?

netstat -n  | awk '/^tcp/ {print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -rn

5、ps aux 中 VSZ RSS 各代表什么意思?
答:VSZ:虚拟内存集,进程占用的虚拟内存空间
RSS:物理内存集,进程占用的实际内存空间

6、如何让 history 命令显示具体时间?history命令默认只保留最近1000条记录,怎么修改为2000条。
答:HISTTIMEFORMAT="%F %T "
export HISTTIMEFORMAT
重新开机后会还原,可以写到/etc/profile
修改/etc/profile将HISTSIZE=1000改为HISTSIZE=2000
source /etc/profile
7、请写出下列端口所运行的服务 21、22、23、111、2049、3306、6379?在UDP/TCP协议中端口的范围?centos6如何禁用telnet服务?
答:21:ftp 22:ssh 23:telnet 111:rpcbind 2049:nfsd 3306:mysql 6379:redis
端口范围:0~65535
禁用telnet服务:chkconfig telnet off

8、将 /test/a 目录建立软链接到 /test/b 目录,请写出完整的操作命令。
创建软链接

ln -s /test/a  /test/b

删除软链接

rm -rf /test/b  ##后面千万不要加/,如果是 rm -rf /test/b/  那么会直接删除/test/a/下的文件。

9、shell 脚本中 continue 命令的作用?
答:continue 命令不同于 break 命令,它只是跳出当前循环的迭代,而不是整个循环。

10、简述Linux系统开机启动顺序
答:1.加载BIOS的硬件信息,获取第一个启动设备
2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息
3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
4.核心执行init程序,并获取默认的运行信息
5.init程序执行/etc/rc.d/rc.sysinit文件
6.启动核心的外挂模块
7.init执行运行的各个批处理文件(scripts)
8.init执行/etc/rc.d/rc.local
9.执行/bin/login程序,等待用户登录
10.登录之后开始以Shell控制主机

11、什么叫网站灰度发布?
答:灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式,AB test 就是一种灰度发布方式,让一部分用户继续使用A,一部分用户开始使用B,如果用户对B没有什么反对意见,那么逐渐扩大范围,把所有用户都迁移到B上,灰度发布可以保证整体系统的稳定性,在初始灰度的时候就可以发现、调整问题,以保证其影响性。

12、当文件系统受到破坏时,如何检查和修复系统?
答:成功修复文件系统的前提是要有两个以上的主文件系统,并保证在修复之前首先卸载将被修复的文件系统。
使用命令 fsck 对受到破坏的文件系统进行修复。fsck 检查文件系统分为5步,每一步检查系统不同部分的连接特性并对上一步进行验证和修改。在执行 fsck 命令时,检查首先从超级块开始,然后是分配的磁盘块、路径名、目录的连接性、链接数目以及空闲块链表、inode。

13、如何调试shell脚本?
答:
检测脚本中的语法错误
bash -n /path/to/some_script
调试执行
bash -x /path/to/some_script

14、shell 下生成32位随机密码

cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass

15、如何用 tcpdump 嗅探 80 端口的访问看看谁最高?

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"."  '{print $1"."$2"."$3"."$4"."}' | sort | uniq -c | sort -nr | head -5

16、简述网络文件系统NFS,并说明其作用。
答:网络文件系统是应用层的一种应用服务,它主要应用于Linux和Linux系统、Linux和Unix系统之间的文件或目录的共享。对于用户而言,可以通过NFS方便的访问远地的文件系统,使之成为本地系统的一部分。采用NFS之后省去了登录的过程,方便了用户访问系统资源。

17、进程的查看和调度分别使用什么命令?
答:进程查看命令:ps 和 top
进程调度命令:at、crontab、batch、kill

18、Linux 如何挂载 windows 下的共享目录?

mount.cifs  //ip地址/server  /mnt/server -o user=admin,password=123456  

linux下的server需要自己手动建一个 后面的 user 和 pass 是 windows 主机的账号和密码,注意空格和逗号。

19、快速生成一个10G的文件

dd if=/dev/zero of=test bs=10M count=1024

20、ping 命令通过什么协议(internet 控制信息协议)来实现?
答:icmp

21、如何发布和回滚,用 jenkins 又是怎么实现?
答:发布:jenkins 配置好代码路径(SVN或GIT),然后拉代码,打tag。需要编译就编译,编译之后推送到发布服务器(jenkins 里面可以调脚本),然后从分发服务器往下分发到业务服务器上。

回滚:按照版本号到发布服务器找到对应的版本推送。

22、系统管理员的职责包括哪些?管理的对象是什么?
答:职责是进行系统资源管理、设备管理、系统性能管理、安全管理和系统性能监测。管理的对象是服务器、用户、服务器的进程及系统的各种资源等。

23、什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
答:静态路由是由系统管理员设计与构建的路由表规定的路由。适用于网关数量有限的场合,且网络拓扑结构不经常变化的网络。其缺点是不能动态的适用网络状况的变化,当网络状况变化后必须由网络管理员修改路由表。
动态路由是由路由选择协议而动态构建的,路由协议之间通过交换各自所拥有的路由信息实时更新路由表的内容。动态路由可以自动学习网络的拓扑结构,并更新路由表。其缺点是路由广播更新信息将占据大量的网络宽带。

24、“#!/bin/bash” 的作用
答:#!/bin/bash 是 shell 脚本的第一行,称为释伴(shebang)行。这里 # 符号叫做 hash ,而 ! 叫做 bang 。 它的意思是命令通过 /bin/bash 来执行。

25、suid,sgid,stick bit 的作用?
答:suid:以属主的身份运行程序 比如查看/etc/shadow 这个是只允许root管理员查看的,但是用root用户执行chmod u+s /usr/bin/cat 切换普通用户也可以查看了
sgid:在目录中创建的文件继承所在目录的属主,root用户chmod g+s /dir 执行这条命令后,之后在/dir下创建的文件,无论是哪个用户,它的所属主都是root
stricky bit:用户只能修改、删除自己的文件。执行chmod o+t /dir 就算这个文件夹是777的权限,但是只有这个文件夹的所属者才能删除/dir

26、显示CPU利用率的命令,查看系统版本的命令
答:查看CPU利用率的命令:top或sar(centos不自带此命令需要安装sysstat包)
查看系统版本的命令:cat /etc/redhat-release 或 uname -a

27、关闭swap分区

swapoff -a  关闭所有的交换分区
swapoff /dev/sde  关闭sde交换分区

28、解释 i 节点在文件系统中的作用
答:在linux文件系统中,是以块为单位存储信息的,为了找到某一个文件在存储空间中存放的位置,用 i 节点对一个文件进行索引。i 节点包含了描述一个文件所必须的全部信息,所以 i 节点是文件系统管理的一个数据结构

29、什么叫数据的事务?
答:事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列操作要么全部成功,要么一个都不做。
事务的结束有两种,当事务中的所有步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消之前到开始事务的所有操作。

30、一个 ext3 的文件分区,当用 touch 新建文件时报错,错误信息是磁盘已满,但是用 df -h 查看分区信息时只用了50%,请分析具体原因?
答:两种情况,一种是磁盘配额问题,另外一种是 ext3 文件系统的设计不适合很多小文件和大文件的一种文件格式,出现很多小文件时,容易导致 inode 耗尽

31、Inode耗尽导致故障解决?

cd /tmp
sudo find /tmp -type f -exec rm {} \; #删除无用的临时文件,释放inode。
sudo find /home -type f -size 0 -exec rm {} \; #遍历寻找0字节的文件,并删除。

32、仅开放本机两个IP地址中的一个地址172.16.0.X上绑定的sshd和vsftpd服务给172.16.0.0/16网络中除了
172.16.0.0/24网络中的主机之外的所有主机,但允许172.16.0.200访问,每次的用户访问都要记录于日志文件
中,注:其中X为学号

vim /etc/hosts.allow
sshd,vsftpd@172.16.0.x:172.16.0.0/16 EXPECT 172.16.0.0/24 EXPECT 172.16.0.200:spawn echo
"`date` login  from %c to server %s,%d" >> /var/log/sshd.log

33、编写脚本/root/bin/checkip.sh,每5分钟检查一次,如果发现通过ssh登录失败次数超过10次,自动将此远程IP放入Tcp Wrapper的黑名单中予以禁止防问

#!/bin/bash
while true;do
cat /var/log/secure|awk '/Failed password/{ip[$(NF-3)]++}END{for(i in ip){if(ip[i]>=10)
{system("echo sshd:"i" >> /etc/hosts.deny" )}}}'
sleep 5m
done

34、为防止一个ip的恶意攻击,导致并发过大,请写出iptables命令防止一个ip的连接大于10,服务器ip为172.18.0.108

iptables -I FORWARD -d 172.18.0.108 -p tcp --dport 80 -m connlimit --connlimit-above 10 -j REJECT

如何使用iptables规则只允许特定ip访问访问特定端口,比如只允许192.168.190.7访问3306端口

iptables -P INPUT DROP
iptables -A INPUT -d 127.0.0.1 -j ACCEPT
iptables -A INPUT -s 192.168.190.7 -p tcp --dport 3306 -j ACCEPT

35、如何查看二进制文件的内容?

hexdump -C XXX(文件名)    #十六进制和ASCII码显示

36、公司机房的服务器接近254台了,请你设计一个解决方案,如何划分网段,并实现业务平滑迁移。
答:第一种方案:变长子网掩码,加大ip地址的可用范围,全网分发 /etc/hosts 文件
第二种方案:增加核心交换机,在核心交换机划分VLAN,将新增的服务器加入新的VLAN中,全网分发 /etc/hosts 文件。

37、Linux 记录 log 的服务叫什么名字?centos如何添加DNS域名解析服务器?
答:rsyslog
修改 /etc/resolv.conf ,即时生效,或者修改网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 ,重启网络服务生效。

38、符号链接(软链接)与硬链接的区别是什么?
答:符号(或软)链接
1、一个符号链接指向另一个文件
2、一个符号链接的内容是它引用文件的名称
3、可以对目录进行
4、可以跨分区
5、指向的是另一个文件的路径
6、其大小为指向的路径字符串的长度
7、不增加或减少目标文件inode的引用计数
硬链接
1、创建硬链接会增加额外的记录项以引用文件
2、对应于同一文件系统上一个物理文件
3、每个目录引用相同的inode号
4、创建时链接数递增
5、删除文件时:rm命令递减计数的链接;文件要存在,至少有一个链接数;当链接数为零时,该文件被删除
6、不能跨越驱动器或分区

39、网络装机工具 cobbler 了解吗,有哪些组件?
答:批量装机:pxe

40、请解释下 Telnet 和 SSH 的区别
答:Telnet:不安全,没有对传输的数据进行加密,容易被监听还有遭受中间人攻击,不能压缩传输,传输速度较慢
SSH:对数据进行了RSA加密,安全性高,ssh传输数据是经过压缩的,所以数据传输速度比较快。

41、在1-39 内取随机数

expr  "$[RANDOM%39+1]"    #RANDOM 随机数  %39 取值数范围 0~38

42、常见的Linux开机设置文件
答:/etc/fstab:实现开机自动挂载设备的配置文件
/etc/inittab:定义开机进入默认级别的配置文件
/etc/rc.local:定义开机自定义任务的配置文件
/etc/init.d/rcS:定义开机自定义任务的配置文件

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

netstat -tan | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'

还有ulimit -n 查看linux系统打开最大的文件描述符,这里默认是1024,不修改这里 web 服务器修改再大也没用。修改 /etc/security/limits.conf
soft nofile 10240
hard nofile 10240 重启后生效

44、提取出字符串Yd$C@M05MB%9Bdh7dq+YVixp3vpw中的所有数字?
利用awk函数gsub取出所有数字

echo "yd$C@M05MB%9&Bdh7dq+yVixp3vpw" | awk 'gsub(/[^[:digit:]]/," ",$0)'

利用for脚本循环取出所有数字

echo "yd$C@M05MB%9&Bdh7dq+yVixp3vpw" | awk '
{
     string=$0
     len=length(string)
     for(i=0;i<=len;i++) 
     {
          tmp=substr(string,i,1)
          if(tmp ~ /[0-9]/) 
          { 
              str=tmp
              str1=(str1 str)
         }
     }
     print str1
}'

45、统计apaceh的access.log中访问量最多的5个ip?

cat access_log | awk  '{print $1}' | sort | uniq -c | sort -nr | head -5

如何统计/kssl/HRP/cfg/6/log/access.log日志中当天每个cn项访问index页面的数量,access.log如下图
在这里插入图片描述

grep index  /kssl/HRP/cfg/6/log/access.log | grep $(date +%Y-%m-%d) |  awk '/CN/ {print $3}'  | sort | uniq -c

46、⼯作⽇时间,每10分钟执⾏⼀次磁盘空间检查,⼀旦发现任何分区利⽤率⾼于80%,就执⾏wall警报。
利用 sed 提取分区利用率

vim diskwarning.sh
#!/bin/sh
[ `df | sed  -nr  '/dev\/sd/s/.* ([0-9]+)%.*/\1/p' |sort -nr | head -n1` -gt 80 ] && wall disk will be full

crontab -e
*/10 * * *  1-5  /bin/bash  diskwarning.sh

利用 grep 加 cut 加 tr 提取分区利用率

vim diskwarning.sh
#!/bin/sh
disknum=`df | grep "^/dev/sd" | tr -s " " % | cut -d% -f5 | sort -nr | head -1`
[ "$disknum" -gt 80 ] && wall disk will be full

crontab -e
*/10 * * *  1-5  /bin/bash  diskwarning.sh

47、查看/etc/my.cnf配置文件没有注释的文件,空行和注释的行全都过滤掉。

grep -v '#' /etc/my.cnf | grep -v '^$'

48、使用sed命令对文件指定行加注释并备份原文件,比如对文件/etc/my.cnf第13行到20行前面加#号,并备份/etc/my.cnf为/etc/my.cnf.bak。

sed -ri.bak '13,20s/.*/#&/g' /etc/my.cnf

49、如何在linux系统上查看BIOS版本、机器型号、序列号?查看⽹卡驱动版本?系统上查看载体为实体机(物理机)还是虚拟机?

 biosdecode命令 BIOS版本
 查看服务器型号: dmidecode | grep 'Product Name'
 查看主板的序列号: dmidecode |grep 'Serial Number'
 ethtool -i ens33 网卡驱动版本
 dmidecode |grep Product 查看载体为物理机还是虚拟机

50、简述linux下常⽤的⽂件系统有哪些,他们有什么区别?
1. EXT3
(1)最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件
(2)Ext3目前只支持32000个子目录
(3)Ext3文件系统使用32位空间记录块数量和i-节点数量
(4)当数据写入到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块
2. EXT4
EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本。
(1)Ext4的文件系统容量达到1EB,而文件容量则达到16TB
(2)理论上支持无限数量的子目录
(3)Ext4文件系统使用64位空间记录块数量和i-节点数量
(4)Ext4的多块分配器支持一次调用分配多个数据块
3. XFS
(1)根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
(2)采用优化算法,日志记录对整体文件操作影响非常小
(3) 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间
(4)能以接近裸设备I/O的性能存储数据

51、Read-only File system错误与解决⽅法?
问题原因:系统没有正常关机,导致虚拟磁盘出现文件系统错误。
解决方法:先使用blkid命令查看文件系统,重启系统后使用root进入单用户模式,运行 fsck.ext4 -y /dev/sda

52、挂载本地yum源,起名为base。并实现开机自动挂载本地镜像源

mount -r /dev/cdrom /mnt
vim /etc/yum.repos.d/base.repo
[base]
name=base
baseurl=file:///mnt/
gpgcheck=0
enabled=1

先查看uuid,以下2个命令都可查看

lsblk -f
blkid

在这里插入图片描述
修改/etc/fstab文件,实现开机自动挂载本地镜像,和自己查找的对应起来。
在这里插入图片描述
以下为centos8的本地源配置,需要加上BaseOS路径,不然找不到repomd.xml文件,如果有错误可以查看日志/var/log/dnf.log
在这里插入图片描述

53、使用vim或者vi编辑文件,在前面显示行号,在家目录下设置变量,默认只对当前用户生效,如果想全局生效,可以写到/etc/profile下。

vim /root/.vimrc
set nu
保存退出,执行source /root/.vimrc 生效

在这里插入图片描述

54、centos7修改hostname为mail,并把主机名mail终端提示符改为紫色,使用history命令查看历史使用命令显示日期。

hostnamectl set-hostname mail
vim /etc/profile.d/env.sh
PS1="[\u@\[\e[1;35m\]\h\[\e[0m\] \W]\\$"
HISTTIMEFORMAT="%F %T"
保存退出,执行source /etc/profile.d/env.sh 生效

在这里插入图片描述

55、写一个脚本/root/mysqlbak.sh,备份mysql数据库,打成tar包放到/data/下,以备份时间命名,并只保留最近的2个tar包,做一个定时任务,每个月第一个周六的00:01执行/root/mysqlbak.sh。

备份mysql数据库到/data/下,并只保留/data/下最近的2个备份包,
chmod a+x /root/mysqlbak.sh 加上可执行权限

cat /root/mysqlbak.sh
#!/bin/bash
tar -zcvf /data/backupMysql-`date '+%Y%m%d-%H%M%S'`.tar.gz  /var/lib/mysql/*
ls -t /data/* | awk 'NR>2' | xargs rm -rf

每个月第一个周六的00:01执行/root/mysqlbak.sh,
systemctl restart crond 重启服务生效

cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  1  0  *  *  6  root    [ $(date +"\%d") -lt 7 ] && /root/mysqlbak.sh

56、如何将本地80端⼝的请求转发到8080端⼝,当前主机ip为192.168.16.1 ?

iptables -t nat -A PREROUTING -d 192.168.16.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.16.1:8080

57、添加默认路由192.168.1.254,添加到某个网段(192.168.190.0/24)走路由192.168.1.2

route add default gw 192.168.1.254
route add -net 192.168.190.0 netmask 255.255.255.0 gw 192.168.190.2 dev eth1

58、linux下清理系统缓存(cache)并释放内存。

sync
echo 3 > /proc/sys/vm/drop_caches 
drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存

59、Linux命令详解用法_hash
hash 缓存表 系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率

hash                     #显示hash缓存
hash –l                  #显示hash缓存,可作为输入使用
hash –p path name        #将命令全路径path起别名为name
hash –t name             #打印缓存中name的路径
hash –d name             # 清除name缓存
hash –r                  # 清除缓存

60、chattr命令详解
A:即Atime,告诉系统不要修改对这个文件的最后访问时间。
S:即Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:当dump程序执行时,该文件或目录不会被dump备份。
D:检查压缩文件中的错误。
i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
s:彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。
u:当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。
t:文件系统支持尾部合并(tail-merging)。
X:可以直接访问压缩文件的内容。
常用命令展示

chattr +i /etc/my.cnf     #加锁:不能删除、修改、改名/etc/my.cnf文件
lsattr /etc/my.cnf        #显示特定属性
chattr -i /etc/my.cnf     #解锁

在这里插入图片描述

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

grep  -nr  error  /var

62、centos如何修改网卡信息,请至少说出3种方法

1、修改配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33
2、使用 ip 或者 ifconfig 或者 nmcli 命令修改
3、使用命令 nmtui 调用图形化界面修改,redhat可以用 setup 命令,调用图形化界面修改

63、docker中启动所有容器的命令
docker中启动所有容器的命令

docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中停止所有容器的命令

docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中删除所有容器的命令

docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中删除所有镜像的命令

docker rmi $(docker images | awk '{print $3}' |tail -n +2)

docker进入容器名称nginx命令

docker exec -it nginx bash

列出docker容器,显示完整信息

docker ps -a --no-trunc

将系统的文件拷贝到docker容器中

docker cp 本地文件路径 容器ID/容器NAME:容器内路径    ##文件调换下位置即可把容器中的文件拷贝到系统 

获取docker容器nginx的元数据

docker inspect nginx

拉取完镜像后,如何对应镜像的dockerfile

docker histroy 镜像id
docker history --format {{.CreatedBy}} --no-trunc=true 镜像id |sed "s/\/bin\/sh\ -c\ \#(nop)\ //g"|sed "s/\/bin\/sh\ -c/RUN/g" | tac    ##详细查看

查看已运行容器的docker run参数

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod 容器id

64、当前登录用户普通用户xsx ,怎么以管理员 root 来后台启动 docker 服务,例如启动docker命令为 /usr/bin/dockerd

su - root -c "/usr/bin/dockerd &"

65、centos如何修改默认运行级别(centos6及以下没有 systemctl 命令),列出临时修改和永久修改的方法,比如现在默认开机是图形化界面,为节省内存,怎么换成字符界面。

运行级别:
0==> runlevel0.target, poweroff.target==> 关机模式
1 ==> runlevel1.target, rescue.target==>单用户模式
2 ==> runlevel2.target, multi-user.target==>多用户模式,无NFS
3 ==> runlevel3.target, multi-user.target==>多用户模式
4 ==> runlevel4.target, multi-user.target==>不使用的
5 ==> runlevel5.target, graphical.target==>图形化模式
6 ==> runlevel6.target, reboot.target==>重启模式

临时换成字符界面,下次开机默认还是图形化界面:

init 3

临时换成图形化界面:

init 5

关机:

init 0

重启:

init 6

永久换成字符界面,下次重启默认就是字符界面:

systemctl set-default multi-user.target

永久换成图形化界面,下次重启默认就是图形化界面:

systemctl set-default graphical.target

centos6及以下可以修改/etc/inittab文件来修改默认运行级别。

查看默认的运行级别:
查看文件方式

ll  /etc/systemd/system/default.target

使用 systemctl 命令查看

systemctl get-default

查看当前的运行级别:
使用 who 命令方式查看

who  -r

66、Ubuntu 18.04如何添加开机自启。比如开机执行 /usr/local/tomcat/bin/startup.sh 脚本。
buntu 18.04不再使用initd管理系统,改用systemd,包括用systemctl命令来替换了service和chkconfig的功能。
systemd 默认读取 /etc/systemd/system 下的配置文件,该目录下的文件会链接/lib/systemd/system/下的文件。
不同于以往的版本,ubuntu18.04默认不带/etc/rc.local文件,我们需要通过配置来让rc.local.service生效。
然后我们就可以像以前那样,直接把启动脚本写入/etc/rc.local文件,这样机器启动时就会自动运行它。

1、修改自启服务,增加 [Install] 项

sudo vim /lib/systemd/system/rc.local.service
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target
 
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
 
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
cp   /lib/systemd/system/rc.local.service  /etc/systemd/system/rc.local.service
chmod +x /etc/systemd/system/rc.local.service

2、创建 /etc/rc.local 文件,把脚本执行命令写入。

sudo vim /etc/rc.local
#! /bin/bash
sh  /usr/local/tomcat/bin/startup.sh

注意 rc.local 一定得加释伴(shebang)行 #! /bin/bash ,不然服务启动会有问题
3、给 /etc/rc.local 加上执行权限。

sudo chmod +x /etc/rc.local

4、启动 rc.local 服务,并执行开机自启 rc.local 服务。

sudo systemctl start rc.local && sudo systemctl enable rc.local

67、搭建了 tomcat 服务器,写了一个网页,访问路径为 http://192.168.190.178:8080/test/xsx.html ,如何只对 /test下的资源做账户密码验证?
1、在conf中编辑 tomcat-users.xml 文件,增加用户角色,用户名和密码。

<role rolename="user"/>
<user username="xsx" password="123456" roles="user"/>

在这里插入图片描述

2、在网站目录 WEB-INF 中编辑 web.xml 文件,在</web-app>上一行添加以下代码

<security-constraint>
<web-resource-collection>
<web-resource-name>/test/xsx.html</web-resource-name>
<url-pattern>/test/*</url-pattern>
</web-resource-collection>

<auth-constraint>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>user</role-name>
</security-role>
<login-config>
<!-- <auth-method>BASIC</auth-method>-->
<auth-method>DIGEST</auth-method>
<realm-name>/test/xsx.html</realm-name>
</login-config>

在这里插入图片描述

3、重启 tomcat 服务,再次访问 http://192.168.190.178:8080/test/xsx.html 需要账户密码验证
在这里插入图片描述

68、tomcat 服务 如何实现 https ?

属性描述
-genkey在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书
-alias产生别名
-keystore指定密钥库的名称(产生的各类信息将不在.keystore文件中)
-keyalg指定密钥的算法 (如 RSA DSA(如果不指定默认采用DSA))
-validity指定创建的证书有效期多少天
-keysize指定密钥长度
-storepass指定密钥库的密码(获取keystore信息所需的密码)
-keypass指定别名条目的密码(私钥的密码)
-dname指定证书拥有者信息 例如: “CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码”
-list显示密钥库中的证书信息 keytool -list -v -keystore 指定keystore -storepass 密码
-v显示密钥库中的证书详细信息
-export将别名指定的证书导出到文件 keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码
-file参数指定导出到文件的文件名
-delete删除密钥库中某条目 keytool -delete -alias 指定需删除的别 -keystore 指定keystore -storepass 密码
-printcert查看导出的证书信息 keytool -printcert -file yushan.crt
-keypasswd修改密钥库中指定条目口令 keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore sage
-storepasswd修改keystore口令 keytool -storepasswd -keystore /root/xsx.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new xsx(新密码)
-import将已签名数字证书导入密钥库 keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书

1、创建一个证书库

keytool -genkey -alias httpsweb -keypass 12345678  -keysize 1024 -keyalg RSA -validity 360 -keystore "/root/httpsweb.keystore"  -storepass 12345678

在这里插入图片描述
2、找到tomcat下server.xml 中添加以下代码,指定keystoreFile和keystorePass

属性描述
clientAuth如果设为true,表示Tomcat要求所有的SSL客户出示安全证书,对SSL客户进行身份验证
sslProtocol指定套接字(Socket)使用的加密/解密协议,默认值为TLS,用户不应该修改这个默认值。
ciphers指定套接字可用的用于加密的密码清单,多个密码间以逗号(,)分隔。如果此项没有设定,在默认情况下,套接字可以使用任意一个可用的密码。
keystorePass不设置默认changeit
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" />
          <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="/root/httpsweb.keystore"
               keystorePass="12345678"  />

在这里插入图片描述

3、重启 tomcat 服务,访问测试
在这里插入图片描述
在httpsweb.keystore在导入一张证书https.crt

keytool -import -alias https -file https.crt -keystore httpsweb.keystore

证书查看

keytool -list -keystore httpsweb.keystore -rfc

在这里插入图片描述

69、如何让 tomcat 在网页上显示文件目录,如何修改 tomcat 默认图标?
tomcat 默认网页不会显示文件目录
在这里插入图片描述

修改 conf/web.xml 文件,搜索 listings,找到<param-value>true</param-value>,改为 true,重启 tomcat 后网页即可显示目录。
在这里插入图片描述
删除 webapps/ROOT/下 favicon.ico 文件,将自己要改的图标弄成 ico 格式上传上去,重启 tomcat 即可。
在这里插入图片描述

备注:如果想使用 tomcat 作为centos的yum源,除了将rpm包放到tomcat上,还需在提供yum源的相关路径上创建yum源(软件仓库), 生成repodata 目录和数据,以我上面的环境为例。

createrepo  /usr/local/tomcat/webapps/ROOT/centos/7/os/x86_64/

其他机器base.repo配置

vim /etc/yum.repos.d/base.repo
[base]
name=base
baseurl=http://192.168.190.178:8080/centos/7/os/x86_64/
#baseurl=file:///mnt/
gpgcheck=0

70、如何配置java环境变量,比如我得 java 安装目录在 /home/koal/jdk1.8.0_221/

vim /etc/profile.d/env.sh
export JAVA_HOME=/home/koal/jdk1.8.0_221
export PATH=$JAVA_HOME:$PATH
source /etc/profile.d/env.sh

在这里插入图片描述

71、如何离线安装docker
离线安装包下载地址 https://download.docker.com/linux/static/stable/x86_64/
我这边下载的是docker-20.10.9.tgz 下载地址https://download.csdn.net/download/weixin_45548465/87513150
解压

tar xzvf docker-20.10.9.tgz
cp docker/* /usr/bin/

添加环境变量

vim /etc/profile.d/env.sh
export PATH=/use/local/docker:$PATH
.  /etc/profile.d/env.sh

自定义docker服务

vim /etc/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

给文件增加可执行权限

chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload 

启动docker 并设置开机自启

systemctl start docker
systemctl enable docker.service

查看docker服务状态

systemctl status docker

在这里插入图片描述

72、UOS(debian系列)如何配置网卡ens33静态ip(192.168.190.7),如何配置本地apt源。
配置静态ip

vim /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
auto ens33
iface ens33 inet static
address 192.168.190.7/24
gateway 192.168.190.2
systemctl restart networking

配置本地apt源

mount /dev/sr0 /mnt
vim /etc/apt/sources.list
## Generated by deepin-installer
#deb https://enterprise-packages.chinauos.com/server-enterprise fou/1040 main contrib non-free
#deb-src https://enterprise-packages.chinauos.com/server-enterprise fou/1040 main contrib non-free
deb [trusted=yes] file:///mnt fou main

更新软件包,下载 lrzsz

apt-get update
apt-get install lrzsz
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux运维经典面试题总结 的相关文章

  • Fedora dnf 更新不起作用?

    当我尝试使用 update 命令更新 Fedora 22 时 sudo dnf update 我收到以下错误 错误 无法同步存储库 更新 的缓存 无法准备内部镜像列表 Curl 错误 6 无法解析主机名 无法解析主机 mirrors fed
  • linux命令中括号的用途是什么[重复]

    这个问题在这里已经有答案了 我在 Linux 终端中运行以下命令 谁能告诉我 Linux 终端中括号和以下命令的用途是什么 echo GET HTTP 1 0 echo 主机 www google com echo 数控 www googl
  • 使用 posix_spawn 启动进程

    我正在使用以下代码在 Linux 中启动新进程 pid t processID char argV 192 168 1 40 char 0 int status 1 status posix spawn processID home use
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file
  • 从c调用汇编函数

    我试图从 c 调用汇编函数 但我不断收到错误 text globl integrate type integrate function integrate push ebp mov esp ebp mov 0 edi start loop
  • 错误:命令“c++”失败,退出状态为 1

    所以我尝试按照以下说明安装 Pyv8https andrewwilkinson wordpress com 2012 01 23 integrating python and javascript with pyv8 https andre
  • 如何在 Linux 中重新添加 unicode 字节顺序标记?

    我有一个相当大的 SQL 文件 它以 FFFE 的字节顺序标记开头 我使用 unicode 感知的 linux 分割工具将此文件分割成 100 000 行块 但是当将这些传递回窗口时 它确实not与第一个部分以外的任何部分一样 只是它具有
  • 运行此处编译的 C 程序会导致在另一台服务器上找不到 GLIBC 库错误 - 是我的错还是他们的错?

    此处编译的 C 程序在我们的 Ubuntu 服务器上运行良好 但是当其他人尝试在他们的特定 Linux 服务器上运行它时 他们会收到以下错误 myprog install lib tls libc so 6 version GLIBC 2
  • 在 debian wheezy amd64 上安装 ia32-libs

    我正在使用 Debian 7 喘息 amd64 uname a Linux tzwm debian 3 2 0 4 amd64 1 SMP Debian 3 2 51 1 x86 64 GNU Linux 我想安装ia32 libs在我的
  • 使用 ProcessBuilder 运行 shell 脚本

    我正在尝试使用 Java 和 ProcessBuilder 运行脚本 当我尝试运行时 我收到以下消息 error 2 没有这样的文件或目录 我不知道我做错了什么 但这是我的代码 ps 我尝试只执行不带参数的脚本 错误是相同的 String
  • 计算 TCP 重传次数

    我想知道在LINUX中是否有一种方法可以计算一个流中发生的TCP重传的次数 无论是在客户端还是服务器端 好像netstat s解决了我的目的
  • 为什么docker容器提示“权限被拒绝”?

    我使用以下命令来运行 docker 容器 并从主机映射目录 root database 到容器 tmp install database docker run it name oracle install v root database t
  • 可以作为命令行参数传递多少数据?

    在 Linux 下生成进程时可以发送多少字节作为命令行参数 gahooa 推荐了一篇好文章http www in ulm de mascheck various argmax http www in ulm de mascheck vari
  • 如何列出 nginx 中的所有虚拟主机

    有没有一个命令可以列出 CentOS 上 nginx 下运行的所有虚拟主机或服务器 我想将结果通过管道传输到文本文件以用于报告目的 我正在寻找与我用于 Apache 的命令类似的命令 apachectl S 2 gt 1 grep 端口 8
  • 在非实时操作系统/内核上执行接近实时任务的最佳方法是什么?

    在一台 GNU Linux 机器上 如果想要执行 实时 亚毫秒级时间关键 任务 您几乎总是必须经历漫长 复杂且容易出现问题的内核补丁过程 以提供足够的支持 1 http en wikipedia org wiki RTLinux Backg
  • 了解 Linux oom-killer 日志

    我的应用程序被 oom killer 杀死了 它是在实时 USB 上运行的 Ubuntu 11 10 无需交换 PC 具有 1 Gig 的 RAM 唯一运行的应用程序 除了所有内置的 Ubuntu 东西 是我的程序 flasherav 请注
  • 如何在linux中使用iptables将http和https流量转发到透明代理[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题似乎不是关于主要由程序员使用的特定编程问题 软件算法或软件工具 help on topic 如果您认为该问题与主题相关另一个 St
  • 如何使用 go1.6.2 构建 linux 32 位

    有没有任何组合GOARCH and GOOS我可以设置哪些值来构建 ELF 32 位二进制文 件 GOOS linux and GOARCH 386 更多示例 架构 32 bit gt GOARCH 386 64 bit gt GOARCH
  • 在嵌入式系统上将内核控制台发送到哪里?

    我正在开发一个嵌入式系统 该系统当前通过串行端口 1 上的控制台输出启动 Linux 使用启动加载程序中的控制台启动参数 然而 最终我们将使用这个串行端口 内核控制台输出的最佳解决方案是什么 dev null 能否以某种方式将其放在 pty
  • 如何回忆上一个 bash 命令的参数?

    Bash 有没有办法回忆上一个命令的参数 我通常这样做vi file c其次是gcc file c Bash 有没有办法回忆上一个命令的参数 您可以使用 or 调用上一个命令的最后一个参数 Also Alt can be used to r

随机推荐

  • 人工智能——分类器性能指标之ROC曲线、AUC值

    文章目录 ROC曲线ROC曲线概念ROC曲线坐标系ROC曲线重要概念案例 xff1a 画ROC曲线 AUC值为什么使用Roc和Auc评价分类器 二分类模型预测的结果是否足够好 xff0c ROC和AUC是重要指标 ROC曲线 ROC曲线概念
  • Ubuntu18.04美化桌面(主题、图标)

    首先 xff0c 安装主题配置工具Tweaks xff0c 命令如下 xff1a sudo apt get install gnome tweak tool 之后在软件菜单中找到Tweaks图标 xff0c 打开该软件 xff0c 界面如下
  • Redis 事务支持回滚吗?

    文章目录 Redis 事务支持回滚吗 xff1f 官方解释DISCARD 命令取消事务 Redis 事务支持回滚吗 xff1f 首选 xff0c Redis 事务不支持回滚 MySQL 在执行事务时 xff0c 会提供回滚机制 xff0c
  • Docker 安装 mysql 8.0.29

    文章目录 安装拉取镜像启动容器 配置 xff08 可跳过 xff0c 建议弄上 xff09 使用启动控制台登录navicat远程登录 删除 安装 拉取镜像 span class token function docker span pull
  • SpringBoot 启动打印 Banner:佛祖保佑,永无BUG!

    最近新学了一招 打印完了 xff0c 一点bug不出 xff0c 果然 xff0c 程序的尽头是玄学 教程 在Resources目录下新建 banner txt 输入内容如下 span class token comment ooOoo s
  • 一文就懂AQS!

    文章目录 AQS介绍AQS概念AQS模式分类AQS核心思想 AQS源码结构CLH同步队列state同步状态独占式同步状态获取与释放流程图总结 xff1a 共享式同步状态获取与释放 看了很多帖子 xff0c 原理说啥的都有 xff0c 算了还
  • 手把手教你构建源码级组件——Java互斥不可重入锁

    文章目录 构造同步组件的步骤1 定义内部类Syn2 继承同步器 xff0c 重写指定方法3 调用同步器方法 互斥不可重入锁实现代码实现测试Demo运行结果结果分析 构造同步组件的步骤 之前的学习中我们学习了AQS的原理 xff0c 其中有许
  • 手把手教你构建源码级组件——Java指定共享线程数目的共享锁

    文章目录 构造同步组件的步骤1 定义内部类Syn2 继承同步器 xff0c 重写指定方法3 调用同步器方法 指定共享线程数目的共享锁实现代码实现测试Demo运行结果结果分析 构造同步组件的步骤 之前的学习中我们学习了AQS的原理 xff0c
  • Anaconda下载及安装保姆级教程(详细图文)

    文章目录 先导知识Anaconda 下载Anaconda 安装Anaconda 配置环境变量测试配置 Anaconda 其他操作安装第三方包卸载第三方包查看环境包信息导入导出环境其他命令 先导知识 Anaconda指的是一个开源的Pytho
  • 解决微信支付申请扫描提示“操作超时,请重新扫码确认问题”

    文章目录 问题原因解决 问题 在申请微信支付账号的时候 xff0c 按照微信网站的提示 操作超时 xff0c 请重新扫码确认 原因 因为浏览器的原因 xff0c 浏览器不兼容 xff0c 醉了 xff0c 这个年代了还有这个兼容的问题 解决
  • npm ERR! cb.apply is not a function npm ERR! A complete log of this run can be found in: npm ERR!

    问题 原因 npm版本过旧 解决 windows下cmd安装指令 xff1a cnpm span class token function install span g span class token function npm span
  • 深度学习从入门到出门(1)——概念与发展概况

    文章目录 深度学习 xff1a 从概念到实践深度学习的起源深度学习的应用场景图像识别自然语言处理推荐系统视频游戏 深度学习的核心思想模型数据优化算法 深度学习的实践方法结论 深度学习 xff1a 从概念到实践 在过去几年里 xff0c 深度
  • ubuntu: su root 报错 su: Authentication failure

    问题 xff1a 输入 sudo su进入root系统 xff0c 输入密码后提示 su Authentication failure 解决方法 xff1a 输入 xff1a sudo passwd root 设置密码 之后重新 sudo
  • 树莓派4b引脚图

  • Ubuntu16.04下安装openssh-server 依赖问题

    1 安装时报依赖错误 因为Ubuntu 自带openssh client xff0c 自带的client和要安装的openssh server 所依赖的client版本不一致导致的 先卸载openssh client 然后在安装即可 sud
  • 《智能控制技术》学习笔记-1.绪论,智能控制定义、分类、发展及应用场景

    一 引言 先修内容 xff1a 经典控制理论 现代控制理论 MATLAB 引入 xff1a 智能理论是新兴学科 xff0c 随着数字计算机和人工智能发展而来 xff0c 发展得益于许多学科 xff1a 人工智能 认知科学 现代自适应控制 最
  • 【STM32】基础篇 ST-Link下载器接线方式和SWD,JTAG协议简介

    在开发STM32等基于arm内核的单片机时 xff0c 选择一款载调试器必不可少 市面上有各式各样的下载调试器可供我们选择 xff0c 常用的下载器包括J Link xff0c ST Link xff0c J Link0B xff0c CM
  • 【Linux学习】正点原子裸机篇 C语言LED实验实现

    上一篇使用汇编语言编写LED等驱动实验 xff0c 在实际工作中较少使用汇编编写嵌入式驱动 xff0c 毕竟汇编过于底层 xff0c 难度较大 绝大部分情况下都是使用C语言编写主体程序 xff0c 只是开始部分使用汇编来初始化C语言环境 x
  • Nginx

    1 基本介绍 Nginx是由俄罗斯的设计师开发的 Nginx不像Apache那样 xff0c 不论功能是否常用 xff0c 统统都给你 自带了 xff0c 虽然功能 很强大 xff0c 但是也很消耗性能 xff0c 而Nginx只是自带了常
  • linux运维经典面试题总结

    1 Linux常见的日志文件都有哪些 xff0c 各自的用途 xff1f 日志轮询配置文件在哪里 xff1f 欢迎界面配置文件在哪里 xff1f 答 xff1a var log messages 内核及公共消息日志 var log cron