Linux面试题
推荐终端工具
- SecureCRT(远程连接linux的工具)
- xshell(远程连接linux的工具)
- winscp(windows和linux文件相互拷贝软件)
挂载的含义
Linux下,mount挂载的作用,就是将一个设备(通常是存储设备)挂接到一个已存在的目录(此目录必须是空目录)上。访问这个目录就是访问该存储设备。linux操作系统将所有的设备都看作文件,它将整个计算机的资源都整合成一个大的文件目录。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。挂载就是把设备放在一个目录下,让系统知道怎么管理这个设备里的文件,了解这个存储设备的可读写特性之类的过程。
linux小细节
- 区分大小写(包括文件名称,目录名称)
- tab建可以自动补全
- 所有内容以文件形式保存,包括硬件
- linux不考拓展名区分文件,有的扩展名可能只是为看着方便,不写linux也认识。所以很多window下的病毒linux不认识,也就安全点,这也是很多软件需要单独面向linux开发的原因吧。
- 所有的存储设备都必须挂载之后用户才能使用,包括硬盘、u盘和光盘。(挂载的概念简单说就是,u盘的文件目录是属于u盘本身的,在挂载命令行是找不到的,因此linux会将开辟一个属于自己的文件目录(相当于分了一块区域),将u盘目录放进去,可以理解为合二为一。此过程即挂载。)
- windows 下的程序不能直接在linux中安装和运行。
- 远程服务器不允许关机,只能重启。(关机了只能去服务器当地启动,可能你就被开了)
- 重启时应该关闭服务。
- 设置防火墙不要把自己踢出去了(可以设置个定时器,五分钟取消防火墙,等自己测试好了再取消这个定时器)
- 合理分配权限。
- 定期备份重要数据和日志(不要把鸡蛋放在同一个篮子,比如在一个房间里备份就不太好,隔的近容易一块丢失)。
常用命令(重要)
ls/ll
注意:
- ls查看当前目录下的”显示“文件,ls -a 是查看当前目录所有文件,也就是把.开头的文件,也就是隐藏文件查找出来了,隐藏文件主要是系统文件,藏起来的意义就是告诉用户没有什么重要修改不要随意修改。ls -l的l可以理解为long,显示鲜目录下所有文件更长的信息,如下图。 ls -ld是查看当前目录的长信息。d可以理解为directory。 ls -i 查看该目录的inode(i节点)信息。
上图一共有7列,解释一下部分列。
第一列 文件类型 。 - 代表文件,d代表是目录,l代表软链接。
第二列是文件引用次数
第三列是文件所有者(创建者)
第四列是文件所属组(使用者,很多人)
第五列是文件大小,默认是k单位,可以用ls -lh来显示文件大小 , h可以理解为human,人性化显示
第六列是文件最新修改时间
cd
mkdir(创建目录,此命令不能越级创建比如/tmp/test/test1.因为没有test这个目录,但使用mkdir可以)、rmdir (remove)删除某一个目录,这个一般目录下有子目录就不能删除,一般不用这个。一般用rm -rf来进行递归无限制的删除。
rm 删除文件。rm -f 强制删除,没有删除提示。
cp、 文件复制 .形如 cp /xx /xx /xx
cp -r 复制目录
mv 剪切和改名。 用来为文件或目录改名、或将文件或目录移入其它位置。
touch 创建文件
cat 查看文件内容。 cat -n (number)内容有行号。tac倒着显示
ps -ef | grep xxx、 检查某进程是否存在
kill、free-m、
tar -zcvf 文件名.tar.gz 先打包后压缩 (.tar.gz文件) ,一般使用这个。v是显示压缩信息,可要可不要
tar -zxvf file.tar.gz 解压
gzip 文件名 压缩文件生成.gz压缩包
gunzip 解压.gz文件
ping ip地址 实现连通。 可以加 -c 3 指定值通信三次
chmod 权限管理命令 chmod 640 意思是rw r - 分别代表读写 写 无权限。4是读,2是写,1是执行(如果是文件的话执行可以理解为可以cd进去某个目录,一般有执行就有读。因为进去不能读没有意义,能读不能进去也没有意义)。 6就是读写,0就是没有权限。(注意的是即使你拥有某个文件的全部权限,但你只拥有该文件所属目录的查看和执行权限,那也不能删除这个文件,但可以查看和修改该文件。总结一下就是杀狗看主人,而不是打,打相当于修改,杀代表删除)
查看进程:(例:如何查看所有xx进程)
ps -ef | grep xxx
ps -aux | grep xxx(-aux显示所有状态)
**编辑 vi/vim : **
vi x.log 编辑你的日志文件
i 写入
:wq 保存退出
:q! 或者 ctrl+c 退出不保存
Shift+g 跳至当前文本最后一行,看最新的日志,都在最下面
useradd 添加用户
passwd lcl 为lcl修改密码
who 查看所有用户信息
top⭐
显示系统中各个进程的资源占用状况,可以看是否有 CPU 占用过大的进程。
less 和 more
less(读奈斯) 与 more 类似,但使用 less 可以随意浏览文件(pageup向上翻页),并且可以在页面使用 “/关键字” 来显示要搜索的词。而 more (用空格来翻页)仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
tail⭐
head -n 查看前几行 tail -n查看末尾几行(默认是10行)。
tail -f 动态显示末尾几行
查看日志:
tail -f *.log : 适用于实时查看日志,开发环境还行,生产就算了,日志会很多。
tail -f error.log :生产中一般用这个实时看异常日志
-f :循环读取 ,用于查阅正在改变的日志文件。
netstat⭐
用于显示网络状态。
netstat -tlun 查看本机监听的端口
-a (all)显示所有选项,netstat默认不显示LISTEN相关
-n 拒绝显示别名,能显示数字的全部转化成数字。(重要)
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计 (重要)
grep 查找⭐
grep 是必备日志分析命令
grep -r ‘关键字如商品ID’ *.log (使用频率最高)
**grep ‘关键字如商品ID’ *.log | grep 免费商品(在管道符前条件结果中,在加条件筛选下) **
grep ‘关键字如商品ID’ *.log >> anan.txt 【相关日志输入到一个txt中,下载到本地慢慢看,我最喜欢】
grep “被查找的字符串” 文件名
grep -n 2019-10-24 00:01:11' *.log
可以查找 *.log文件中,查到时间内的所有信息
查找特定文件 find
find 路径 -name "需要查找的文件名"
比如:find / -name “xxx.txt” 就可以得到文件名所在的目录
*是通配符
管道操作符 |
可将指令连接起来,前一个指令的输出作为后一个指令的输入
杀僵尸进程
什么是僵尸进程(todo)(产生原因以及解决办法)
僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源
我们都知道进程的工作原理。我们启动一个程序,开始我们的任务,然后等任务结束了,我们就停止这个进程。 进程停止后, 该进程就会从进程表中移除。
部分程序员,肯定喜欢下面命令
ps -ef | grep java 【先查java进程ID】
kill -9 java进程ID 【生产环境谨慎使用】
对文件内容做统计 awk ⭐
依次处理文件的每一行,并读取里面的每一个字段,可用作统计。
$ awk 动作 文件名
批量替换 sed
sed 配合正则表达式批量替换文本内容
rpm 和yum包管理工具
rpm是命令管理工具 yum是在线管理工具
rpm -ivh xxx 安装某包(但前提是要有 xxx.rpm包了)