1. 操作系统
1.1 什么是操作系统
操作系统是管理计算机硬件与软件资源的计算机程序。简单理解就是人与计算机硬件之间的 中介 。
1.2 操作系统分类
桌面操作系统
- Windows:用户量大
- macOS:适合开发,设计人员
- Linux:软件较少
服务器操作系统
- Linux:占有率高,90%以上的服务器都使用Linux系统
- Windows server:收费,占有率较低
嵌入式操作系统
- Linux:常见的比如摄像头、手表、车载系统等
移动设备操作系统
- Android:基于Linux
-
2. Linux简介
2.1 什么是Linux
Linux是一款多用户,多任务的命令行式的服务器型操作系统
多用户:允许多个用户同时登录
- 多任务:允许同时运行多个程序
- 命令行:主要采用命令的方式操作
-
2.2 Linux的优缺点
优点:
运行速度快
- 安全性好(一般不用装安全管家等软件)
- 开源
- 占有率高
缺点:
- 界面相对比较简陋
- 操作难度大
-
2.3 Linux的发行版本
什么是发行版本?
从技术上来说,Linux只是一个 内核,并不是一套完整的操作系统。一些厂商将Linux内核与各种软件和文档包装起来,并提供系统安装界面和系统配置,设定等工具,就构成了Linux的发行版本。
市面上的主流发行版本如下: Redhat:小红帽,企业级Linux发行版本,收费
- Centos:与Redhat相似度97%,免费
- Ubuntu:乌班图,界面比较美观的Linux发行版本
- SUSE:华为中使用较多
-
2.4 学习Linux的重点
Linux的安装
- Linux的命令
在工作中需要经常使用Linux搭建项目环境、查看运行日志等操作,所以才有必要学习Linux。
2.5 Linux的组成部分
3. 安装Linux
3.1 安装VMware
VMware是一款windows平台的专业虚拟机软件 ,可以在windows上安装多个其他的系统,并且能够同时运行。
3.2 CentOS安装步骤
3.2.1 新建虚拟机
3.2.2 虚拟机设置
3.2.3 启动虚拟机
3.3 打开终端
在桌面鼠标右键,选择 在终端中打开,即可打开终端
4. 基础知识
4.1 常见目录
- /:根目录,最顶层的目录
- ~:家目录,不同用户的家目录不同,root用户的家目录为 /root,普通用户为 /home
- .: 当前目录
- .. : 父目录(即上层目录)
什么是根目录?
- 根目录就是最顶层目录,比如 D:\壁纸 这个路径中,D盘就是一个根目录
- windows中可以有多个盘符,那就意味着,可以有多个根目录
- 但是,Linux只有一个根目录,根目录用 / 表示
4.2 路径
什么是路径?
路径就是文件在系统中储存的位置
在Linux中,路径可以分为以下两大类:
- 绝对路径:以根目录开始的路径
- 相对路径:不以根目录开始的路径
为什么要学习路径?
Linux一般情况下是以命令的方式使用居多,由于命令行中是没有类似windows等系统的图形化界面的,所以在进行操作文件时,需要用路径去访问。
路径演练
路径图示
注意:路径中除了第一根斜线外,其他的都是路径分隔符
4.3 基础命令
whoami 显示当前登录的用户
pwd 显示当前所在位置的绝对路径
ls 显示当前位置的内容
ls -a 显示当前位置的所有内容,包含隐藏文件
ll 显示当前位置的内容(详情)
cd 切换指定目录,后面跟路径
clear 清屏
5. 目录操作
创建目录
mkdir a 创建目录a
mkdir b c d 创建b、c、d三个目录(可以多个,用空格分隔)
mkdir -p /a/a1/a2 创建多级目录
删除目录
rmdir b 删除空目录b
rmdir c d 删除c,d两个空目录
rm -rf a 删除非空目录a
rm -rf * 删除当前路径下所有内容(慎用)
复制,移动,重命名
cp -r a b 将a目录复制到b目录(b不存在则自动创建)
cp -r a a.bak 备份a目录(.bak为备份文件扩展名)
mv a b 将a目录移动到b目录(b存在时)
mv a b 将a目录重命名为b(b不存在时)
mv a .a 将a目录隐藏
mv .a a 将a目录取消隐藏
其他目录操作
ls -l 列表形式查看当前位置所有内容,简写ll
ls -a 查看当前位置所有内容,包含隐藏内容
tree 以树状结构查看当前目录内容
tree -a 查看a目录的目录结构
du -sh 查看当前目录的大小
du -sh a 查看a目录的大小
du -sh /home 查看指定路径目录的大小
6. 文件操作
创建文件
touch a.txt 创建a.txt文件(空文件)
touch b c 创建多个文件
touch /he.txt 在根目录下创建he.txt
touch .a 创建隐藏文件
注意:
- 在Linux中,「文件拓展名」需要自己手动写
- 如果在指定目录下创建文件时,目录不存在,则创建失败
编辑文件
基本上所有的Linux发行版本都内置了「vi编辑器」,而对于「vi」来说,「vim」加入了语法高亮等特性,更适合编程。但他俩本质上是相差不多的。
「vi的三种模式」
- 命令模式:用来输入各种操作命令,如:跳转,删除,复制等
- 编辑模式:通过指定按键切换到编辑模式,编辑文件内容
- 末行模式:主要用来保存,退出等操作
「使用vi编辑器打开文件」
vi a 打开并编辑a文件,如果a文件不存在则自动创建
命令模式
gg 跳转到第1行
G 跳转最最后一行
ngg 跳转到第n行
yy 复制1行
nyy 向下复制n行
dd 剪切1行
ndd 向下剪切n行
p(小写) 向下粘贴
P(大写) 向上粘贴
u 撤销
x 删除当前字符
/abc 向下查找abc
?abc 向上查找abc
^ 跳转到行首
$ 跳转到行尾
编辑模式
i 光标前插入
a 光标后插入
o 插入新的一行,从行首开始输入
键盘按「ESC」键退出编辑模式
末行模式
在命令模式下,输入「 :」进入末行模式
:w 保存
:q 退出
:wq 保存并退出
:w a 将文件另存为a
:q! 强制退出
:set nu 显示行号
:set nonu 取消显示行号
:%s:abc:def:g 将文件中的abd替换为def
:3,5s:abc:def:g 将文件中的3~5行中的abc替换为def
:5,$s:abc:def:g 将文件中5~最后一行中的abc替换为def
删除文件
rm a 删除文件a
rm a b 同时删除文件a和b
rm -rf * 删除当前路径下所有文件和目录(除隐藏文件外)
复制文件
cp file1 dir1 将文件file1复制到目录dir1
cp file1 file2 将文件file1复制,并命名为file2
cp file1 file1.bak 将文件file备份
移动/重命名
mv file1 dir1 将文件file1移动到dir1目录
mv file1 file2 将文件file1重命名为file2
mv file1 .file1 隐藏文件file1
其他文件命令
wc -l f 查看文件f的行数
grep -n abc f 查看f文件中包含abc的行,并显示行号
cat f1 查看文件f1的内容
cat f1 > f2 将f1的结果覆盖到f2
cat f1 >> f2 将f1的结果追加到f2
cat /dev/null > f1 清空文件f1
find / -name abc 从根目录开始查找名字为abc的文件
find ~ -name "*abc*" 从家目录开始查找名字包含abc的文件
head -n a.txt 查看a.txt的前n行,n是一个数字
tail -n a.txt 查看a.txt的最后n行,n是一个数字
head -10 a.txt|tail -1 查看a.txt文件的第十行
7. 打包压缩
zip
「zip」是一种压缩文件的格式,用法如下:
zip f.zip f1 f2 将f1,f2压缩成f.zip
unzip f.zip 解压f.zip到当前位置
unzip f.zip -d /home 解压f.zip解压到/home目录
gzip
压缩命令,将文件压缩成「.gz」格式的压缩包
gzip f1 压缩f1为f1.gz
gzip f1 f2 同时压缩f1,f2为f1.gz,f2.gz(压缩多个文件)
gzip -d f1.gz 解压缩
gunzip f1.gz 解压缩
gzip -l f1.gz 查看压缩比例
gzip -n f1 按照指定级别压缩文件,n为1~9的数字,数字越大,压缩级别越大
tar
- 打包命令,将多个文件打包为「.tar」格式
- 配合「gzip」可以打包并压缩为「.tar.gz」格式文件
tar -cvf x.tar x1 x2 将x1、x2打包为x.tar
tar -xvf x.tar 解包x.tar
tar -czvf x.tar.gz x1 x2 将x1、x2打包并且压缩为x.tar.gz
tar -xzvf x.tar.gz 将x.tar.gz拆包并且解压
tar -xzvf x.tar.gz -C /home 将x.tar.gz拆包并解压到/home目录
tar -tzvf x.tar.gz 查看压缩包中的内容
8. 用户&组&权限
用户
「Linux」是一个「多用户」的操作系统,任何需要使用系统资源的用户,都必须向「管理员」申请一个账户,然后使用该账户登入系统。 ```shell cat /etc/passwd 查看用户信息 useradd user1 创建user1用户 usermod -l user1 yonghu1 将user1用户改名为yonghu1 usermod -u 777 user1 将user1用户的id改为777 usermod -g 9999 user1 将user1用户所属组改为9999组 userdel user1 删除用户user1(不会删除主目录) userdel -r user1 彻底删除user1(删除主目录) id user1 查看user1的信息
su user1 切换到user1用户 passwd 修改当前用户的密码 passwd user1 修改user1的密码(需要管理员权限) exit 返回上一个用户
用户组<br />每个用户都归属一个用户组,系统可以对一个用户组中的所有用户「集中管理」
```shell
cat /etc/group 查看组信息
groupadd diyizu 创建组
groupmod -n onezu diyizu 将diyizu重命名为onezu
groupmod -g 9999 onezu 修改onezu的组id为9999
groupdel onezu 删除onezu用户组
权限
chown ly f1 修改f1的拥有者为ly
chgrp zu2 f1 修改f1所属的组为zu2
chown ly:zu2 f1 同时修改f1的所属用户和组
chown -R ly:zu2 a 同时修改a目录及其子目录、子文件的所属用户和用户组
「权限图解」:
- 红色表示所属用户的权限
- 绿色表示所属组的权限
- 蓝色表示其他用户组的权限
「rwx」含义:
字母 | 代表权限 | 数值 |
---|---|---|
r(read) | 读 | 4 |
w(write) | 写 | 2 |
x(execute) | 执行 | 1 |
「修改权限命令详解」:
chmod u-w,g+w,o+w-rx f1 将文件f1自己减去读的权限,组内增加写的权限,其他组增加写、减去读和执行权限
chmod u=r,g=w,o=x 自己读,组内写,其他执行
chmod 777 a1 自己、组内、其他都具有读写执行的权限
chmod -R 777 a 将a目录及该目录下所有内容的权限都修改成所有人可读可写可执行
9. 网络命令
ifconfig 查看IP地址
ifconfig eth0 1115 netmask 2220 临时修改IP
ifup eth0 启动网卡
ifdown eth0 关闭网卡
service network start 启动网络
service network stop 停止网络
service network restart 重启网络
netstat -an 查看端口
netstat -an|grep 1521 查看1521端口是否被占用
setup 永久修改ip,在设置中修改
ssh ip 远程连接ip
10. 系统命令
cat /etc/centos-release 查看系统版本
halt 关机
init 0 关机
shutdown -h now 关机,now可以换成具体时间,如12:00
reboot 重启
init 6 重启
shutdown -r now 重启
date 显示当前时间
date -s “2020-03-29 11:11:11” 修改时间
cal 显示日历
ps -ef 查看进程
ps -ef|grep java 查看java相关的进程
kill pid 杀掉指定pid进程
kill -9 pid 强制杀掉指定进程
free -m 查看内存
df -h 查看磁盘情况
top 动态监控系统资源
vmstat 2 3 打印系统资源,每隔2s打印一次,共3次
history 显示命令历史
./a.sh 执行可执行文件(拥有执行权限)
11. 拓展
- 通过文件内关键字查找文件
假如:你想在/home目录下的所有普通文件中搜索查找包含”crushlinux” 这个词的文件
find /home -name \* -type f -print | xargs grep "crushlinux"
- 提取ip地址
12. 设置swap
一般设置swap空间为系统自有内存的2倍
创建一个4G文件
fallocate -l 4G /swapfile
查看该文件大小
du -sh swapfile
修改该文件只能被root用户读写
chmod 600 /swapfile
使该文件成为swap文件
mkswap /swapfile
使用该swap(只是临时)
swapon /swapfile
修改fstab文件使该swap永久生效 ```shell
打开该配置文件
vi /etc/fstab
在文件末尾插入如下内容,服务器每次重启都会检查该文件并自动启用swap
/swapfile swap swap sw 0 0 ```