linux相关面试问题

1、谈谈你对linux系统的理解,为什么使用linux

Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。
支持更多得开源项目。有的工具只有linux上有。
更低的成本。使用linux生态可以避免windows生态版权带来的危机。
linux生态开源项目更多,同时兼容性更强、系统更稳定。
目前常见的大数据平台都是基于Linux系统的,比如Hadoop、Spark,以及基于它们的商用大数据系统。
原文链接:https://blog.csdn.net/tmraz/article/details/121426232

2、lnode节点与文件存储之间的关系

理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector),每个扇区储存512字节(相当于0.5KB)。

操作系统读取硬盘的时候,不会一个扇区一个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
inode号码
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。

这里值得重复一遍,Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。

详情可以查看这个作者的博客

https://blog.csdn.net/weixin_44120785/article/details/120869526

3、nginx、tomcat、weblogic的区别

Tomcat是一个轻量级的Web服务器和应用程序服务器,它具有简单易用的特点。Tomcat支持Servlet、JSP等Java Web开发技术,适用于中小型Web应用程序
WebLogic是一个完整的JavaEE应用程序服务器,它具有强大的功能和灵活的配置。WebLogic支持分布式应用程序部署、负载均衡、高可用性、安全性等特性,适用于大型企业级Java应用程序
Nginx是一个高性能的Web服务器和反向代理服务器,它具有高并发能力、低延迟和高可靠性的特点。Nginx支持负载均衡、反向代理、HTTP缓存等特性,适用于构建高性能、高并发、低延迟的Web应用程序。
应用场景:
WebLogic适用于大型企业级Java应用程序,例如电子商务、金融服务、电信等行业的应用程序。WebLogic具有出色的可扩展性、高可靠性和安全性,适用于对性能、可靠性和安全性有严格要求的应用程序。
Tomcat适用于中小型Web应用程序,例如博客、社交网络、企业内部应用程序等。Tomcat具有轻量级、易于使用 和配置的特点,适用于对性能要求不是特别高的应用程序。

Nginx适用于构建高性能、高并发、低延迟的Web应用程序,例如电子商务、社交网络等需要支持大量并发用户访问的应用程序。Nginx具有高性能、高可靠性和可扩展性的特点,适用于对性能和可靠性有严格要求的应用程序。

5、写一个shell脚本实现,每天晚上凌晨十二点将前一天的Catalina.out 日志转存到另一个磁盘上,并以前一天的日期命名,完成之后删除前一天的Catalina.out日志

#!/bin/bash

# 获取昨天的日期
yesterday=$(date -d "yesterday" +"%Y%m%d")

# 源日志文件路径
log_file="/path/to/Catalina.out"

# 目标存储路径
destination="/path/to/destination"

# 备份日志文件路径
backup_file="${destination}/Catalina_${yesterday}.log"

# 将日志文件复制到目标存储路径并重命名为昨天的日期
cp "${log_file}" "${backup_file}"

# 清空日志文件
echo "" > "${log_file}"

将脚本保存为一个.sh文件(例如backup_log.sh),然后使用crontab设置定时任务,每天晚上12点执行脚本:

crontab -e

在打开的文件中添加以下内容:

0 0 * * * /bin/bash /path/to/backup_log.sh

保存文件后,脚本将在每天的凌晨12点执行,实现将前一天的Catalina.out日志文件备份到指定目录,并删除原日志文件的功能。
6、如何实现shell脚本中切换用户自动填充密码
Expect是建立在tcl基础上的一个工具,Expect 是用来进行自动化控制和测试的工具。主要解决shell脚本中不可交互的问题:
使用expect之前需要先安装
yum –y intall expect

基本命令
send:向进程发送字符串,用于模拟用户的输入 该命令不能自动回车换行,一般要加 \r(回车)

expect:expect的一个内部命令,判断上次输出结果里是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回。只能捕捉由spawn启动的进程的输出

spawn:启动进程,并跟踪后续交互信息

interact:执行完成后保持交互状态,把控制权交给控制台

Timeout:指定超时时间,过期则继续执行后续指令

exp_continue:允许expect继续向下执行指令

send_user:回显命令,相当于echo

$argv 参数数组:Expect脚本可以接受从bash传递的参数.可以使用[lindex $argv
n]获得,n从0开始,分别表示第一个,第二个,第三个…参数

For example:在多台服务器上创建目录

cat ip.txt
192.168.213.138 1
192.168.213.140 1
#!/bin/bash
# 循环在指定的服务器上创建目录
#!/bin/sh
while read ip pass
do
 /usr/bin/expect << EOF &>/dev/null
 spawn ssh root@$ip
 expect {
   "yes/no:" {send "yes\r";exp_continue}
   "password:" {send "1\r"}
}
expect "#" {send "mkdir /root/stt;exit\r"}
expect eof
EOF
echo "$ip服务器目录已创建完毕!"
done <ip.txt

你可能感兴趣的:(linux,运维,tomcat,nginx)