目录
- 前言
- 一、基础概念
- 二、常用命令
- 后记
前言
本篇主要介绍Linux服务器的相关内容。
“基础知识”是本专栏的第一个部分,本篇博文是第八篇博文,如有需要,可:
- 点击这里,返回本专栏的索引文章
- 点击这里,返回上一篇《【Java校招面试】基础知识(七)——数据库》
一、基础概念
01. GNU/Linux
Linux操作系统的全称是GNU/Linux
。GNU/Linux是一种自由、开放源代码的操作系统,由GNU
项目和Linux
内核组成。
- GNU: 是一个自由软件计划,它由理查德·斯托曼于1983年启动,并得到了全球范围内的自由软件社区的支持和贡献。GNU项目开发了很多自由软件,如
GNU编译器(GCC)
、GNU调试器(GDB)
和GNU核心工具集(Coreutils)
等。 - Linux: 是一个开源的、基于Unix的操作系统内核。它最初由芬兰的林纳斯·托瓦兹在1991年开发,目前已成为世界上最流行的操作系统之一。Linux内核被许多不同的操作系统使用,包括Ubuntu、Debian、Fedora和Red Hat等。Linux开发者社区提供了大量的软件和工具,使得Linux成为了一个非常强大和灵活的操作系统。
GNU
和Linux
在GNU/Linux操作系统中承担的角色是分别提供操作系统中的大部分软件和操作系统内核。它们的合作使得GNU/Linux成为了一个完全自由的、高效的和功能强大的操作系统。
02. 为什么大多数企业和个人选择Linux作为服务器的操作系统
Linux作为服务器的操作系统,主要是因为以下几个优势:
1) 开源免费: Linux是一个开源免费的操作系统,可以免费使用、修改和分发,这降低了成本。
2) 稳定性高: Linux系统的稳定性非常高,因为它有一个良好的内核和良好的系统架构。它可以持续运行数月甚至数年,不需要频繁地重启。
3) 安全性好: Linux系统的安全性非常好,因为它有一个强大的安全模型和许多安全工具,可以保护服务器免受黑客攻击。
4) 可定制性强: Linux系统非常灵活,可以根据需要进行定制和配置,以满足不同的需求。
5) 社区支持广泛: Linux有一个庞大的社区,可以提供广泛的支持和帮助,例如开发者、用户和技术专家等。
总之,Linux的这些优势使得它成为了一个非常受欢迎的选择。
03. Linux系统的体系结构
Linux的体系结构主要分为用户态(用户上层活动)
和内核态
;
1) 内核: 本质是一段管理计算机硬件设备的程序;
2) 系统调用: 内核的访问接口,是一种不能再简化的操作;
3) 公用函数库: 系统调用的组合拳;
4) Shell: 命令解释器,可编程。
04. 文件权限
首先查看两个文件的权限描述信息
每个文件的权限描述信息都是10位的字符串。以第一个文件drwxr-xr-x
为准,我们按照1/3/3/3
将其分为四个部分:
1) d——文件类型:
-
: 普通文件d
: 目录文件b
: 块设备文件c
: 字符设备l
: 符号链接文件p
: 管道文件s
: 套接字文件
2) rwx——文件拥有者(Owner)的权限
r
: read,读文件的权限w
: write,写文件的权限x
: execute,执行文件的权限-
: 在对应的位置上,表示无对应权限。如r--
表示只读,rw-
表示可读可写不可执行…
3) r-x——文件拥有着者所在的用户组其他人(Group)的权限
对应位置上r/w/x/-
的意义同上,表示用户组其他人对该文件的权限
4) r-x——其他人(Other)的权限
对应位置上r/w/x/-
的意义同上,表示其他人对该文件的权限
二、常用命令
01. pwd
pwd可以输出我们当前所在的路径
02. ls
ls用于输出当前目录下的所有文件(夹)
03. cat
cat用于将文件的内容直接打印出来,一般只用于查看内容比较少的文件,如果文件内容比较多,控制台会输出过多的内容。
04. vim
vim用于查看和编辑文件内容,不同于命令行,它是一个独立的编辑器界面。
语法:vim 文件名
1) 按 i
键进入编辑模式,可在光标所在的位置输入内容。编辑模式的标志是左下方的 -- INSERT --
2) 按 Esc
键可以退出编辑模式
3) 在非编辑模式下,输入 :q
可以退出vim
编辑器,q是quit(退出)的缩写。有以下几种情况:
a) 未修改文件内容,:q
可以直接退出;
b) 修改了文件内容,:q
提示不可以退出,要使用:q!
,叹号表示强制,这样退出之后会丢失修改的内容,即文件内容不会发生更改;
c) 修改了文件内容,想要保留修改的新内容,要使用:wq
,w是write(写)的缩写,这样退出之后会保留修改的内容,即文件内容被覆盖为最新的版本。
4) 在非编辑模式下,输入 :set number
或简写为 set nu
,可以为编辑器添加上行号
5) 在非编辑模式下,输入 :行号
可以跳转到指定的行,如:21
6) 在非编辑模式下,输入 :/关键字
可以在文件中按关键字进行搜索,并跳转到对应的位置,如:/License
所有符合的关键字都会高亮,同时光标会处在第一个匹配的位置。
此时:
- 按下大写字母
N
键,前往上一个匹配项 - 按下小写字母
n
键,前往下一个匹配项
7) 在非编辑模式下,输入 dd
可以删除光标当前所在行的内容
8) 在非编辑模式下,输入 :%d
可以删除所有的内容
9) 为python代码添加语法高亮
- 第一步: 安装
vim-enhanced
——sudo yum install vim-enhanced
- 第二步: 获取
vim
插件——curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
- 第三步: 把启动插件的命令写入
vim
的配置文件中,见10)
10) 有的选项可以设置为vim
的默认配置,不需要每次打开都手动设置一遍,比如默认显示行号等
vim ~/.vimrc
- 按
i
进入编辑模式 - 写入以下内容:
" 设置默认可以通过退格键删除内容
set backspace=indent,eol,start
" 设置默认显示行号
set number
" 设置默认搜索内容高亮
set hlsearch
" 设置默认启用python语法高亮
call plug#begin('~/.vim/plugged')
Plug 'vim-python/python-syntax'
call plug#end()
syntax on
wq
写入并退出vim
编辑器
05. tail
tail用于从一个文件的最后监控文件的更新,它会将文件的更新内容即时输出在控制台中
语法: tail -f 文件名
06. grep
grep的全拼是Global Regular Expression Print,即全局正则表达式打印,用于向控制台打印从一段文本中通过正则表达式匹配到的行。
语法: grep "正则表达式" 文件名或文本内容
参数: -v "想要过滤的内容"
——可以过滤掉包含指定内容的匹配结果
07. 管道操作符|
管道操作符可以把多个命令连接起来,把左侧命令的输出作为右侧命令的输入,依次执行。
比如我们把tail
和grep
连接起来举个例子: 监控debug.log
文件的更新,输出其中包含System Error
的行
tail -f debug.log | grep "System Error"
这时tail -f debug.log
的输出就会被输入给grep "System Error"
,达到了我们仅监控自己想要的内容,过滤掉其他内容的目的。
08. chmod
chmod用于修改一个文件的权限。
严格来说,这不是一个“常用”的命令,因为很少有人会去修改一个文件或文件夹的权限。讲这个命令主要是因为它精妙的设计值得一讲。
前文中提到,对于一个文件,每个角色的权限由3位组成,---
即什么权限也没有,rwx
即可读可写可执行。
chmod命令将一个角色是否有对应位置的权限记为为0
或1
,如---
= 000
,rwx
= 111
,r-x
= 101
,…
因为二进制数右边是低位,左边是高位,我们以bin
表示二进制,ord
表示十进制,将字符串
转化为2进制数
,再转化为10进制数
则:
---
= 00 0 b i n 000_{bin} 000bin = 0 o r d 0_{ord} 0ordr-x
= 10 1 b i n 101_{bin} 101bin = 5 o r d 5_{ord} 5ordrwx
= 11 1 b i n 111_{bin} 111bin = 7 o r d 7_{ord} 7ord- …
假设我们要修改一个名为my.sh
的文件权限为拥有者可读可写可执行,同用户组的其他人可读可执行,其他人仅执行。
- 权限的字符串表示为:
rwx r-x --x
- 二进制表示为:
111 101 001
- 十进制表示为:
751
因此,命令写作chmod 751 my.sh
后记
GNU / Linux系统有丰富的应用工具,所以知识点和实用命令不胜枚举。但也不需要一次性全部都记住,上述的这些面试常考的记忆一下,更多的还是要常用,自然就能记住了。
在你需要开展更多的服务器工作,并逐渐熟练起来时:
- 可以通过
nohup
或者screen
命令保证你需要长时间执行的命令不会因为断开服务器链接就被挂起 - 可以通过
top
和htop
命令查看服务器单核和多核的CPU占用率、内存占用率、进程监控等 - 可以通过
ll
查看当前目录下的所有文件其名称、权限、大小、更新日期等 - 可以通过
du -h --max-depth=1
查看当前目录下所有文件及文件夹的大小 - 可以通过
ps -ef | grep "debug"
查看所有名称或启动命令包含debug
的进程情况 - …
这些都不在这里一一展开细讲了,如果你有兴趣或者真的需要用到的时候,再去查,然后多用,自然就记得住了。