我相信 IT 行业的工程师们都知道 Linux 系统的地位和重要性
我们每时每刻都在使用着 Linux 系统,小到安卓手机、机顶盒,大到飞机的控制系统,政府机构的管理系统,无一不是 Linux 系统
无论技术人员去哪家公司哪家企业就职,接触到最多的肯定是 Linux 系统
今天打算给大家分享一些校招面试中面试官提问频率较高的关于 Linux 系统的面试题
PS:一些涉及命令的面试题所参照的 Linux 操作系统版本为 CentOS7 ,不同操作系统版本(Ubuntu、debian)的 Linux 命令可能会有差别,望知悉
# 方法一
sed -n '1,2p' /etc/passwd
# 方法二
awk 'NR>=1 && NR<=2 {print $0}' /etc/passwd
# 方法一
lscpu 命令
# 方法二
cat /proc/cpuinfo
使用定时任务计划,crontab -e:编写任务计划,wq保存退出
0 0 * * 7 /usr/bin/cp /var/log /tmp
绝对路径:/root/mypath
相对路径:./mypath
当前目录:.
上一层目录:…
主目录:~/ 或 ~
切换目录命令:cd
#方法一
cat /dev/null > myfile
#方法二
echo " " > myfile
使用 find 按照时间戳来查找
find . -type f -newermt '2022-09-1 10:00' ! -newermt '2022-10-15 17:00' | xargs tar -zcf myfile.tar.gz
参数 -newermt 中的 m 代表 mtime,t 代表绝对时间
于此同时还有 -newerat 和 -newerct ,分布表示绝对访问时间和绝对改变时间
ps -eo cmd,lstart,etime
参数:
显示字段:
我们知道,windows 系统的换行符跟 Linux 系统(Unix类系统)的换行符是不一致的
Unix 系统里,每行结尾只有 “<换行>”,即 “\n”;Windows 系统里面,每行结尾是“ <回车><换行>”,即“\r\n”
一个直接后果是,Unix 系统下的文件在 Windows 里打开的话,所有文字会变成一行
而 Windows 里的文件在 Unix 下打开的话,在每行的结尾可能会多出一个 ^M 符号
而我们一般习惯在 windows 系统上面编写脚本编写配置文件再复制粘贴到 Linux 系统上去,如果换行符不对,就极有可能导致出错
所以我们需要将 windows 的换行符替换成 Linux 的换行符
或者直接对文件进行 sed 操作
sed -i 's/^M//g' myfile
grep -Ev "^#|^$" file
top 命令查看系统整体资源使用情况以及进程资源使用情况(按 1 可显示所有 cpu 的使用情况)
top 命令具体输出内容及对应字段解释详见我之前的文章:
uptime 命令查看系统平均负载
[root@localhost ~]# uptime
14:36:05 up 2 days, 2:38, 1 user, load average: 0.00, 0.01, 0.05
这个命令能很快地检查系统平均负载
load average 对应的这三个值是系统计算的 1 分钟、5 分钟、15 分钟的指数加权的动态平均值,可以简单地认为就是这个时间段内的平均值
根据这三个值,我们可以了解系统负载随时间的变化
该文件在磁盘上所占的空间并没有真正释放
在 Linux 中,一个文件在文件系统中的存放分两部分——数据部分(data)和指针部分(inode)
指针位于文件系统的 meta-data 中,数据存储在磁盘中,将文件删除后(例如执行 rm 命令),这个指针就从 meta-data 中消失,而文件的数据部分占用的空间就会被覆盖等后面写入新的内容
如果有进程一直向某个文件写入,虽然删除了该文件,但是由于进程锁定,该文件对应的指针并未从meta-data 中清除,所以内核就认为该文件并未删除,导致磁盘空间并没有释放
举个例子:
如果有有一个进程号为666的进程对 file.txt 一直写入,你删除了 file.txt 但磁盘空间并没有释放,可以通过 /proc/666/fd 来找回该文件
对待这种进程不断对文件进行写操作的情况,如果想要释放该文件的空间,可以对文件进行清空操作,通过这种方法,既能释放文件占用的磁盘空间,又不影响进程对该文件的操作
先来总结:
在老的 Linux 系统上,对一个文件进行读操作会先到 Block buffer,再到 Page cache,即这两个是分开的,这就意味着读取一次文件数据会被 cache 两次
后面有了文件系统之后才将 Block buffer 和 Page cache 统一了:对于文件操作,Page cache 指向
Block buffer,而对于非文件(块设备),则直接是 Block buffer
对文件 I/O 操作影响 cache;裸I/O(Raw I/O)即越过文件系统直接对磁盘进行 I/O 操作影响的是 buffer;直接 I/O(direct I/O)即不越过文件系统但越过 cache 的也会影响 buffer
补充:磁盘和文件的区别
磁盘是一个块设备,可以划分为不同的磁盘分区分区;在磁盘分区之上再创建文件系统,挂载到某个目录,之后才可以在这个目录中读写文件
Linux中一切皆文件,磁盘分区或磁盘在Linux 上对应的就是块设备文件,而我们通常所提到的文件在 Linux 中是普通文件
在命令行末尾加上 &
for i in $(seq 0 3); do ping -c 2 www.baidu.com >> /root/1.txt; done &
jobs -l
kill -15