Linux常见面试题
- 常见面试题
- 什么是Linux?
- 使用什么命令查看 ip 地址及接口信息?
- 怎么对命令进行取别名?
- 通过什么命令指定命令提示符?
- 查看文件内容有哪些命令
- 当你需要给命令绑定一个宏或者按键的时候,应该怎么做呢?
- 随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?
- 你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?
- 移动文件用哪个命令?改名用哪个命令?
- Linux 下命令有哪几种可使用的通配符?分别代表什么含义?
- Linux 中进程有哪几种状态?在 ps 显示出来的信息中, 分别用什么符号表示的?
- 怎样查看一个 linux 命令的概要与用法?假设你在/bin 目录中偶然看到一个你从没见过的的命令,怎样才能知道它的作用和用法呢?
- 怎么查看当前进程?怎么执行退出?怎么查看当前路径?
- 终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
- 怎么使一个命令在后台运行?
- 把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
- 使用哪一个命令可以查看自己文件系统的磁盘空间配额呢
- 使用什么命令查看用过的命令列表?
- 查看各类环境变量用什么命令?
- du 和 df 的定义,以及区别?
- 数据字典属于哪一个用户的?
常见面试题
在登录Linux时,一个具有唯一进程ID号的shell将被调用,这个ID是PID。
什么是Linux?
Linux是一套免费使用和自由传播的类似Unix操作系统,一般的WEB项目都是部署都是放在Linux操作系统上面。 Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
使用什么命令查看 ip 地址及接口信息?
查看 ip 地址
1:ip命令,可以同时显示IPv4和IPv6地址
命令:ip addr show 或 ip addr 或 ip a
2:hostname命令,可以查看主机名的IP地址
命令:hostname -I
3:ifconfig命令,可以查询和配置网络接口卡
命令:ifconfig -a
查看网络接口信息
ifconfig:查看所有已开启的网络接口
第一部分是以 ensxx 开头的,其中 ensxx 就是网络接口的名字。
mtu:最大数据传送单元大小;
inet:IPv4 地址(也就是我们常说的 IP 地址);
netmask:子网掩码;
broadcast :广播地址;
inet6:IPv6 地址(目前正在普及和应用);
RX:接收包的情况;
TX:发送包的情况;
collisions:数据传输发生冲突的次数。
第二部分是以 lo 开头的。lo 不是一个真正的网络接口,是一个特殊的模拟出来的网络接口,每个系统都有它,叫回环接口(loop)。其各个字段属性是固定的:
inet:127.0.0.1;
netmask:255.0.0.0 …
回环接口为系统提供了一个单机网络环境,一般用于程序调试。许多程序的运行也需要这个接口,一般不会修改该接口。
怎么对命令进行取别名?
# 在命令行使用alias命令临时设置命令别名
alias test1='cd /root/test'
# 打开主目录下的.bashrc
vi ~/.bashrc
# 在文件中写入alias命令,并保存
# 位置在# User specific aliases and functions下面
alias test='cd /root/test'
# 使其永久生效
source ~/.bashrc
# 查看已经设置的命令别名
alias
通过什么命令指定命令提示符?
默认设置为[root@localhost ~]#
# /etc/profile
# 当前用户的配置文件~/.bash_profile
# 以上两个文件都可以
vi /etc/profile
export PS1='[\u@\H \W]'
# 使其生效
source /etc/profile
\u:显示当前用户账号
\h:显示当前主机名
\W:只显示当前路径最后一个目录
\w:显示当前绝对路径(当前用户目录会以~代替)
$PWD:显示当前全路径
$:显示命令行’$'或者’#'符号
#:下达的第几个命令
\d:代表日期,格式为 week day month date,例如:"MonAug1"
\t:显示时间为 24 小时格式,如:HH:MM:SS
\T:显示时间为 12 小时格式
\A:显示时间为 24 小时格式:HH:MM
\v:BASH 的版本信息 如 export PS1=’[\u@\h\w#]$‘
查看文件内容有哪些命令
cat:由第一行开始显示内容,并将所有内容输出
tac:从最后一行倒序显示内容,并将所有内容输出
more:根据窗口大小,一页一页的显示文件内容
less:和more类似,但其优点可以往前翻页,而且进行可以搜索字符
head:只显示头几行
tail:只显示最后几行
nl:类似于cat -n,显示时输出行号
tailf:类似于tail -f
日志文件说明
linux日志文件说明
位置 | 说明 |
---|---|
/var/log/message | 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 |
/var/log/secure | 与安全相关的日志信息 |
/var/log/maillog | 与邮件相关的日志信息 |
/var/log/cron | 与定时任务相关的日志信息 |
/var/log/spooler | 与UUCP和news设备相关的日志信息 |
/var/log/boot.log | 守护进程启动和停止相关的日志消息 |
/var/log/wtmp | 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件 |
tail与head
tail -f test.log 会把日志文件里的最尾部的内容显示在屏幕上,并且不断刷新
tail -fn 100 test.log 循环实时查看最后100行记录(最常用)
tail -100f test.log 实时监控100行日志
# 可以进行条件筛选
tail -fn 100 test.log | grep 关键字
tail test.log 默认显示最后 10 行
tail -n 20 test.log 查询日志尾部最后20行的日志
tail -n +20 test.log 显示文件 test.log 的内容,从第 20 行至文件末尾
head test.log 默认显示前 10 行
head -n 5 test.log 显示 test.log 文件的开头 5 行
head -n -10 test.log 查询日志文件除了最后10行的其他所有日志
head -c 20 test.log 显示文件前 20 个字节
cat,more,less
# -i 忽略大小写
cat -n test.log |grep "debug" -i 查询关键字的日志
# 按行号过滤,查看关键字附近的日志
cat -n test.log |grep "debug" -i 得到关键日志的行号
cat -n test.log |tail -n +90 |head -n 20
# tail -n +90 表示查询90行之后的日志
# head -n 20 则表示在前面的查询结果里再查前20条记录
# 日志内容特别多,打印在屏幕上不方便查看
# 怎样一页一页地查看一个大文件的内容呢?
(1)使用more和less命令
cat -n test.log | more
cat -n test.log | grep "debug" -i | more 这样就分页打印了,通过点击空格键翻页
# ctrl+c 就可以退出more
# 按 q 退出less
(2)使用 >xxx.txt 将其保存到文件中
cat -n test.log | grep "debug" -i > debug.txt
查看文件或目录大小
# du:显示目录或者文件所占空间
# 以K,M,G为单位,方便阅读的格式显示所占用的空间情况
du -h catalina.out
当你需要给命令绑定一个宏或者按键的时候,应该怎么做呢?
获取F12的字符序列获取方法如下:先按下Ctrl+V,然后按下F12 ,我们就可以得到F12的字符序列 ^[[24~
showkey -a 也可以查看按键对应的字符序列。
# 这样,在按F12时,是显示为datetest
bind '"^[[24~":"datetest"'
随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?
写文件命令:vi
向屏幕输出带空格的字符串:echo hello world
你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?
使用 linux 命令 disown -r
可以将所有正在运行的进程移除。
移动文件用哪个命令?改名用哪个命令?
mv,mv
Linux 下命令有哪几种可使用的通配符?分别代表什么含义?
?可替代单个字符。
* 可替代任意多个字符。
方括号 [charset]
可替代 charset 集中的任何单个字符,如[a-z],[abABC]。
Linux 中进程有哪几种状态?在 ps 显示出来的信息中, 分别用什么符号表示的?
(1)不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断,指进程不响应异步信号。
(2)暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。正被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。
(3)就绪状态:在 run_queue 队列里的状态。
(4)运行状态:在 run_queue 队列里的状态。
(5)可中断睡眠状态:处于这个状态的进程因为等待某某事件的发生(比如等待socket 连接、等待信号量),而被挂起。
(6)zombie 状态(僵尸):父亲没有通过 wait 系列的系统调用会顺便将子进程的尸体(task_struct)也释放掉。
(7)退出状态。
符号 | 含义 |
---|---|
D | 不可中断 Uninterruptible(usually IO) |
T | 停止或被追踪 |
R | 正在运行,或在队列中的进程 |
S | 处于休眠状态 |
Z | 僵尸进程 |
W | 进入内存交换(从内核 2.6 开始无效) |
X | 死掉的进程 |
怎样查看一个 linux 命令的概要与用法?假设你在/bin 目录中偶然看到一个你从没见过的的命令,怎样才能知道它的作用和用法呢?
使用命令 whatis 可以先出显示出这个命令的用法简要。
# 查看'zcat'的介绍以及使用简要
whatis zcat
怎么查看当前进程?怎么执行退出?怎么查看当前路径?
查看当前进程:ps
执行退出:exit
查看当前路径:pwd
终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
终端 /dev/tty
黑洞文件 /dev/null
怎么使一个命令在后台运行?
后台运行的两个命令 & 和 ctr+z
①:一般都是使用 & 在命令结尾来让程序自动运行,具体命令 &
。
②:有时候忘记在命令之后加上 &
,又不想停下此命令重新改写。这时可以按 ctrl+z
,把当前程序切入到后台。用 fg
来恢复后台。
nohup /root/run.sh & 在后台执行 root 目录下的 run.sh 脚本
把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
把后台任务调到前台执行: fg
把停下的后台任务在后台执行起来: bg
使用哪一个命令可以查看自己文件系统的磁盘空间配额呢
使用命令 repquota
能够显示出一个文件系统的配额信息。
只有 root 用户才能够查看其它用户的配额。
使用什么命令查看用过的命令列表?
history
查看各类环境变量用什么命令?
查看所有 env
查看某个,如 home: env $HOME
du 和 df 的定义,以及区别?
du 显示目录或文件的大小
df 显示每个所在的文件系统的信息,默认是显示所有文件系统。
(文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为 Meta Data。) du 命令是用户级的程序,它不考虑 Meta Data,而 df 命令则查看文件系统的磁盘分配图并考虑 Meta Data。
df 命令获得真正的文件系统数据,而 du 命令只查看文件系统的部分情况。
数据字典属于哪一个用户的?
数据字典是属于’SYS’用户的,用户‘SYS’ 和 ’SYSEM’是由系统默认自动创建的。