1. 什么是linux?
linux是一种操作系统,类似我们常用的windows系统。
操作系统是对硬件资源的一种抽象,提供用户对硬件资源调用的接口。
一般来说linux提供指令操作(也有配有界面的系统),而windows提供图形界面操作。
关于linux的目录结构参考知乎:https://zhuanlan.zhihu.com/p/108932753
对比举例:
(1) 执行程序:
windows: 双击应用程序
lunux:【指令名】 应用名 例: python3 test1.py 执行名为test1的python程序
(2)切换目录:
windows:点击进入文件夹 D:\百度网盘
linux:cd /usr/local 进入/usr/local的文件目录下
在windows中的 cmd 同样可以使用指令操作
./ 表示相对路径,. 表示当前的路径,/ 接后面指定的路径
/ 表示绝对路劲,以 / 开头,表示上图目录开始的路径(/root /usr /etc等)
例如:当前我在 /root/home 路径下
进入到 /root/home/data 路径下的操作:
cd ./data 或者
cd /root/home/data
2. 如何拥有一台linux服务器?
(1)单系统安装:
在服务器上直接安装linux操作系统即可。一般采购服务器默认为linux。
(2) 多系统安装:
在个人电脑上安装双系统,启动电脑时可选择使用的操作系统。
(3)本地虚拟机安装:
使用Vmware这样的虚拟化软件,在本机windows系统之上,使用本机资源(CPU核数,内存空间,硬盘资源等) 生成新的虚拟机。
即建立在windows之上的linux系统
(4)云服务获取:
通过公有云供应商(阿里云等)购买云服务器,选择需要的服务器资源。利用Xshell或者WeTerm这样的工具来远程连接并进行访问控制。
3. 常用linux指令
(1)文件相关:
cd 目录切换指令,同样适用于windows中
pwd 显示当前路径
ls 查看当前目录文件
tree 查看当前的目录文件树
chmod 文件权限管理
文件权限分为 文件所有者权限 所属group权限 其他group用户权限
权限内容分为 读 写 执行
对应的参数为 4 2 1
某一个文件的权限为755则表示,该文件可以被所有用户读 执行,但是只能被所有者修改
drwxrwxrwx
第一位代表文件属性:
普通文件的文件权限第一个字符为“-”
目录文件的文件权限第一个字符为“d”
字符设备文件的文件权限第一个字符为“c”;块设备文件的文件权限第一个字符为“b”
符号链接文件的文件权限第一个字符为“s”
第2~4位代表文件所有者权限:r可读 w可写 x可执行
第5~7位代表所属group用户的权限
第8~10位代表其他group用户权限
mkdir 新建文件夹
ln 建立文件链接
ln [参数][源文件或目录][目标文件或目录]
默认硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
-s 为软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
mv 剪切粘贴 cp 赋值粘贴
mv patha pathb 将patha移动到pathb下
(2)系统资源相关:
free 查看系统总内存以及已经使用了的内存量
iostat 查看CPU的使用情况
netstat 查看服务器端口占用情况
uptime 查看平均负载
vmstat 查看服务器整体性能
df 查看磁盘空间
(3)进程相关:
ps 查看进程状态(常用 -aux)
shutdown 关机 reboot 重启
kill -9/kill 【pid】 结束进程
pid就是进程编号,这两种方法都可以杀死进程
区别:
linux进程间可通过signal通信
kill 发送的是 sigterm信号,可以被进程捕获,进而进程自己终止
kill -9 发送的是sigkill信号,无法被进程捕获,而是由操作系统接收然后直接终止进程
kill属于优雅的终止进程方式
top 查看 进程 对 CPU 、内存等 资源的占用情况
(4)网络相关:
ifconfig 查看本机IP等网络信息
ping 向远程主机发送ping请求测试联通
nslookup 查看域名解析
traceroute 对访问做路由追踪
tcpdump 抓包分析工具
(5)文本分析相关:
vi/vim 新建文档(类似windows记事本)
很重要的文本编辑工具
教程:https://www.linuxprobe.com/linux-vi-vim.html
cat 查看文本内容
head/tail -n 查看一个文件的正数/倒数 x行内容
grep 匹配指令,匹配满足后面条件的内容
例如寻找系统中运行的python进程
ps -aux | grep python
| 表示一个管道,用前面得到的信息继续做后面的任务
sed 自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等
参考:https://www.runoob.com/linux/linux-comm-sed.html
awk 是一种处理文本文件的语言,是一个强大的文本分析工具
参考: https://www.runoob.com/linux/linux-comm-awk.html
wc 用来计算文本内字数等信息
参考:https://www.runoob.com/linux/linux-comm-wc.html
(6)其他:
yum install 下载安装文件指令包
tar -zxvf 解压压缩包(类似windows 7-zip)
tar czvf 打包文件
rz 上传本地文件到linux服务器
sz 下载本地文件到linux服务器
(-bye 参数表示以二进制传输)
history 查看历史操作记录
4. linux面试真题
(1) 查看一个文件的100~200行的内容
head [filename] -n 200 | tail -n 100
查看该文件前200行,然后再选择最后100行。
(2)如何寻找linux内的僵尸进程
top可以查看进程占用资源情况
使用 ps -A -ostat,ppid,pid,cmd |grep -e '^[Zz]'
可以查到僵尸进程
Linux进程状态:R (TASK_RUNNING),可执行状态&运行状态(在run_queue队列里的状态)
Linux进程状态:S (TASK_INTERRUPTIBLE),可中断的睡眠状态, 可处理signal
Linux进程状态:D (TASK_UNINTERRUPTIBLE),不可中断的睡眠状态, 可处理signal, 有延迟
Linux进程状态:T (TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态, 不可处理signal, 因为根本没有时间片运行代码
Linux进程状态:Z (TASK_DEAD - EXIT_ZOMBIE),退出状态,进程成为僵尸进程。不可被kill, 即不响应任务信号, 无法用SIGKILL杀死