LINUX
LINUX概述
是一个操作系统
基于Unix改造
linux的作用
多用户操作,权限
Linux发行版本
Centos
rpm,yum
性能优,消耗低,更适合开发
ubuntu
apt
页面漂亮,硬件兼容,性能较差
linux目录
-
/bin:二进制流文件
-
/boot:启动内核文件
-
/dev:存在在**系统设备文件**。如挂载光驱,cpu,硬盘
-
/etc:**系统配置**文件目录
-
/home:用户目录,每个用户的目录都在这个目录下
-
/lib:/usr/lib: /usr/local/lib:系统**函数库**目录,库目录
-
/lib64:就是存放64位的库目录
-
lost+fount:系统发生错误的记录遗失的目录
-
/mnt: /media:光盘的挂载点
-
/opt:系统按照软件目录
-
/proc:此目录的数据在内存中,如网络状态,系统核心,外部设备等等
-
/root:管理员的home目录
-
/sbin:放置管理员的可执行文件
-
/tmp:临时文件
-
/srv:服务启动后需要访问的数据目录
-
/usr:应用程序存放的目录 相关用户的目录,
- /var:放置心痛执行过程中经常变的文件
文件的类型
文件颜色 | 含义 |
---|---|
蓝色 | 目录 |
绿色 | 可执行文件 |
红色 | 压缩文件 |
浅蓝色 | 链接文件 |
灰色 | 其他文件 |
基本的命令
先查看命令怎么用
ls --help
vim编辑器
:q 退出
:w 保存
普通模式
yy,数字yy,p,数字p,dd,数字dd,u,x,yw,dw,shift + 6,shift + $,(数字)shift + g、
快捷键 | 作用 |
---|---|
(数字)yy,y + shift +4(6) | 复制 |
(数字)dd | 删除 |
u | 回滚上一步 |
p | 粘贴 |
yw | 复制一个单词 |
shift + 4 | |
shift + 6 | |
(数字)shift + g | 光标到最后一行 |
编辑模式
从普通模式进入编辑模式有i,shift + i(大写I),shift + a (大写A),o,大写O,r,大写O
快捷键 | 功能 |
---|---|
i,shift + i | i在光标出进入,大写I光标进入行首 |
a,shift + a | a在下一个字符,大写A光标在进入行末 |
r,shift + r | r取代一个文字,R一直取代 |
o,shift + o | o在下一行新开一行,O在上一行新开一行 |
命令行模式
:w[fileName],:q,:wq,:wq!,ZZ,:set nu ,:set nonu
linux网络
远程连接
SSH远程连接
windows和linux很多情况下都会使用SSH来进行远程连接
主机的虚拟网卡
VM1
VM8
现在我的Linux静态IP
IPADDR=结合自己的虚拟机IP
GATEWAY=网关
DNS1=域名解析器
静态IP
正常的LINUX网络配置,构建一个虚拟子网供虚拟机使用,
但是,虚拟机重新,有可能 虚拟子网的IP就会发生变动,不利于进行分布式管理,所以我们就要把虚拟机的网络IP设置为静态。
也可以直接把虚拟机指定静态IP,在终端修改
cd /etc/sysconfig/network-scripts
vim ./ifcfg-ens33
在第四行中,BOOTPROTO=“dhcp”,就是默认使用动态的IP。
修改为静态的IP,
#IP
IPADDR=自己的IP
#网关
GATEWAY=自己的网关
#域名解析器
DNS1=域名解析器
配置主机名
#查看主机名
hostname
#编辑主机名
vim /etc/hostname
#重启
hostnamectl
编辑主机名对应的IP关系
vim /etc/hosts
继续修改window下的hosts文件
远程登录SSH
cmd命令中
ssh root@hjh100
对于这些我们可以使用xshell来进行保存管理方便下一次进入
系统管理
进程与服务
常驻内存的进程就是服务
服务命令
service 服务名 start|stop| restart|status
新语法centos7
systemctl start|stop|restart|status 服务器名
查看服务名
cd ./usr/lib/systemd/system
.target – 一组服务的集合
.service
注意:
关于centos的网络服务,有两个:network,networkmanager
后者默认使用,推荐使用,两者不可同时开启
系统运行级别
进行系统服务自动开启管理
setup
有*****的为开启自启动
查看当前级别
systemctl get-default
查看服务在各个级别下的开启
#老版本的sysV
chkconfig --list
设置自启动
systemctl 服务名 enable|disable
查看全部是否自启动
systemctl list-unit-files
static为未配置
防火墙
firewalld
先看状态
开启开机自启动防火墙
关闭防火墙
systemctl status firewalld
#停 但是开机还是会自启动
systemctl stop firewalld
#关闭自启动
systemctl disable firewalld
关机重启
shutdown 不立刻关机
shutdown -c取消关机
shutdown 3 3分种后关
shutdown 15:28 在15点28分关机
延迟读写buffer
在关机前,会自动sync,就是把数据从内存同步到硬盘种
sync | 把数据从内存同步到硬盘种 |
---|---|
halt | 停机,关闭系统,不断电 |
poweroff | 电源关掉了 |
shutdown | -h 关机,-H 相当于halt,-r 重启 |
reboot | 重启 |
关机可以用poweroff,或者shutdown now
常见的基本命令
man帮助查询
太多了我们可以直接查看
#查看命令类型
type 命令
#查看命令使用
help 命令
文件目录
pwd–绝对路劲
显示当前工作目录的绝对路劲
pwd
ls–列出目录内容
ls
#两层目录 . 和 ..
ls -a
#两者一样,列出当前文件夹类型,用户名,创建时间,等等
ls -l
ll
#查看编号
ls -i
注:以点开头的文件都是隐藏文件
ls | 列出当前目录 |
---|---|
ls -a | 列出全部,包括子目录 |
ll或ls -l | 列出信息 |
cd–切到某个路劲
支持相对路劲
cd 路劲
cd 当前路劲/
cd ./
cd ../
cd /路劲
su–切换用户
mkdir–创建文件夹
#不自动创建父目录
mkdir 绝对路劲|相对路劲
#自动创建父目录
mkdir -p 绝对路劲|相对路劲
mkdir | 不自动创建父目录 |
---|---|
mkdir -p | 自动创建父目录 |
rmdir–移除目录
#有子目录不哭也直接删除
rmdir
#有子目录可以删除 ,如果删除后目录为空,那把目录也删除
rmdir -p
文件
编辑文件vi或vim,emass
touch–创建空文件
touch 路劲
cp–复制文件夹或文件
cp 路劲文件 复制到那路劲|文件
#若要覆盖文件
\cp 路劲文件 复制到文件
#递归复制整个文件夹
cp -r 复制目录 复制到目录
若复制到文件就是覆盖,原来得文件就没有了
rm删除文件
rm
#递归删除目中得所有文件
rm -r
#强制删除
rm -f
#显示执行过程
rm -v
rm | 删除有提示 |
---|---|
rm -r | 递归删除所有文件 |
rm -f | 删除无提示 |
rm -v | 详细执行过程 |
rm -rf | 结合2和3 |
mv移动文件于文件夹或重命名
mv 文件 移动到目录|文件
若移到得不是目录而是文件就是重命名覆盖
若在当前目录下得文件移动到当前目录新文件名就是重命名
cat查看文件
cat 文件
#加行号
cat -n 文件
more文件内容分屏查看
有点类似vi编辑器
空格 | 翻页 |
---|---|
b | 往前翻页 |
f | 往后翻页 |
= | 当前页 |
:f | |
q | 退出 |
less分屏显示
比more更加强大。分页动态加载,效率高
操作和more差不多
特别
#去到结尾
shift + g
#去开头
g
#下文搜索 n向下查找 N向上查找
/要搜索得内容
#上文搜索 n向上查找 N向下查找
?搜索内容
echo
输出内容到控制台
echo hello,world
#支持转义 \n
ehco -e
>重定向,>>追加
> | 覆盖到某个文件 |
---|---|
>> | 追加到某个文件 |
ll > info
比如现在当前目录无info文件,ll输出并写入到info文件,因为无info文件,所以会自动创建,若有则覆盖
head–显示头部信息
head 文件 | 10行 |
---|---|
head -n 5 文件 | 5行 |
tail尾
tail | 10行 |
---|---|
tail -n 5 文件 | 5行 |
tail -f 文件 | 实时追终更细 |
注意:这个tail要开启两个命令窗可以进行测试,
tail - f 文件进去会一直在里面,然后打开另一个终端,追加信息可看见。
多用于监控文件。
使用vim不会更新
但是如果你使用vim修改文件得话,tail -f 内并不会更新,因为每个文件都会有一个默认得编号,使用ls -i 可以看到,当你是用vim的时候修改文件,那么文件得编号就会修改,而原来得检测还是使用得是修改前的,所以并不会检测到。
ln软链接
与windows的快捷方式相类似。
比如/bin目录就是软链接目录
ln -s 原文件|原目录 软链接名
删除的时候不要使用rm -rf 文件/
不然会删除真实文件,若真实目录被删除,但是软连接不会被删除,但是会变无效
硬链接
与软链接对比他使用的是同一个文件编号,但是软连接不同,他自己是一个独立的文件,有自己的数据块,存放的是原文件的地址,同时也自己的id编号,在使用使用一般使用软连接。
history查看历史指令
history | 全部 |
---|---|
history 10 | 最近10条 |
history -c | 删除历史 |
时间date
date
date + %Y
date + %m
date + %d
date "+%Y-%m-%d %H:%M:%S"
#时间戳 小写s
date +%s
#昨天
date - '1 day ago'
#明天
date - '-1 day ago'
#修改时间
date -s "要修改的时间"
#ntpdate获取服务器时间
ntpdate
#获取日历
cal
date | 时间 |
---|---|
date + %Y | 年 |
date + %m | 月 |
date + %d | 日 |
date “+%Y-%m-%d %H:%M:%S” | 时间格式显示时间 |
date +%s | 时间戳,小写s |
date - ‘1 day ago’ | 昨天,-1就是前天 |
date -s “要修改的时间” | 修改时间 |
cal | 日历 |
用户管理命令
用户
useradd 用户名
useradd -g 组名 用户名
#设置新密码
passwd 用户名
#id显示投个人的信息,验证用户是否存在
id 用户名
#查看创建了那些用户,其中有很多系统创建的用户
/etc/passwd
#切换用户
su 用户名
#查看当前用户
whoami
#删除用户
userdel 用户名
useradd | 添加用户 |
---|---|
id 用户名 | 查看用户是否存在 |
/etc/passwd | 查看所有用户,里面包括很多系统用户 |
su 用户名 | 切换用户 |
whoami | 查看当前用户 |
passwd 用户名 | 修改用户的秘密 |
useradd -g 组名 用户名 | 添加用户带组 |
userdel 用户名 | 删除用户,若带-r把目录也删 |
sudo赋予临时权限
修改sudoers文件 ,在/etc/sudoers
sudo 命令
用户管理组
默认一人一组,但是一个用户可以默认加入多个组
#新建组
groupadd 组名
#修改一个用户的组
usermod -g 组名 用户名
#修改组
groupmod -n 修改后的名 修改前的名
#查看所有组
/etc/group
#删除用户组
groupdel 组名
注意:wheel组也是管理组,能够sudo临时授权
groupadd | 添加组 |
---|---|
usermod -g 组名 用户名 | 修改用户的组 |
groupmod -n 修改后名 修改前名 | 修改组名 |
/etc/group | 查看所有组 |
groupdel 组名 | 删除组 |
关于文件权限的管理
linux的文件属性,ll可以查看文件的属性数字(0-9)
第一个字母-是文件,d是文件夹,l是链接类
0文件类型,1-3本用户权限,4-6组权限,7-9其他用户权限
UGO,r(读)w(写)x(执行)
10位权限 硬链接数|子文件夹数 创建用户 创建用户组 文件大小 创建时间 文件名
修改文件的权限
#方式1
chmod [{ugoa}{+-=}{rwx}] 文件或目录
#方式2 r=4 w=2 x=1
chmod [mode=421] [文件或目录]
chmod 644
chmod 777
#用在目录上,同时递归修改他的子目录
chmod -R 数字
修改文件所有者
#修改人
chown 修改后的用户名 文件或目录
#修改组
chgrp 修改后的组 文件或目录
find查找文件
find指令将从指令目录向下递归遍历每个子目录
#查找root所有目录下的info
find /root -name info
#查找所有后缀是.cfg的文件
find -name "*.cfg"
#在home目录下查询所有tony的文件
find /home -user tony
find [限定路劲] -name | 按照名查 |
---|---|
find -user | 按照所属用户查 |
find -size | 按照大小查 |
locate快速定位文件路劲
利用事先建立数据库,查询较块,查找时应该更新数据库
#更新数据库
updatedb
#所有包括了tmp的目录和文件
locate tmp
grep过滤查找
grep对内容进行查找
#显示匹配行及行号
grep -n 查找内容 要查找的文件
管道操作符 |
#在列出当前目录时进行过滤
ls | grep -n .cfg
#wc 统计行数,词数,字节数
wc info
#
grep -n boot /root | wc
压缩和压缩类
gizp/gunzip
gizp --》 *.gz 压缩命令
gunzip 文件.gz 解压缩命令
gzip | 压缩 |
---|---|
gunzip | 解压缩 |
-
只能压缩文件不能压缩目录
-
不保留原来文件
-
多个文件多个压缩包
zip和unzip
- 可以进行目录压缩
- 不影响原来文件
zip | 压缩 |
---|---|
unzip [-d] | 解压缩。还可以压缩到那个文件 |
tar打包
tar [选项] xxx.tar.gz
tar -c | 打包文件 |
---|---|
tar -v | 显示详细信息 |
tar -f | 指定压缩后的文件名 |
tar -z | 打包同时压缩,结合gzip |
tar -x | 解包.tar文件 |
tar -C | 解压打指定目录 |
#aaa.cfg info 公共/ 这些全部打包在temp.tar.gz这个压缩包里
tar -zcvf temp.tar.gz aaa.cfg info 公共/
#把temp.tar.gz 解压缩到/temp
tar -zxvf temp.tar.gz -C /temp
磁盘管理
tree
#树状列举
yum install tree
du查看所有
du会包括所有的子目录
du 目录
-h | 显示字节数 |
---|---|
-a | 包括文件 |
-c | 显示总和 |
-s | 只显示总和 |
-max-depth=n | 显示子目录深度为第n层 |
du -sh
查看当前文件夹的总大小
df查看磁盘空间大小
df -hc dxyhbm t
free查看内存
#查看内存字节数
free -h
lsblk列出设备挂载
lsblk
mount/umount挂载与卸载
#挂载
mount 实际位置 挂载点位置
mount /dev/cdrom /mnt
#卸载 实际位置和挂载点随便一个都行
umount /dev/cdrom
磁盘的分区fdisk
#查看分区情况
fdisk -l
#对新增硬盘进行分区操作
fdisk 硬盘设备名
进程管理
前台进程和后台进程,一般后面又个d都是守护进程
d.service就是守护系统进程的服务,比如sshd.service。
查看进程
systemctl start|stop|restart|status 服务名
#查看进程 很有限,只显示用户调用的线程
ps
#查看所有进程 使用less
ps aux | less
#基本使用
ps aux | grep xxx 查看系统中的所用进程
ps -ef | grep xxx 查看子夫进程之前的关系
a | 列出带有终端的所有用户的进程 |
---|---|
x | 列出当前用户的所有进程 |
u | 面向用户友好的显示风格 |
-e | 列出所有进程 |
-u | 列出某个用户关联的所有进程 |
-f | 显示完整格式的进程列表 |
USER | 用户名 |
---|---|
PID | 用户ID |
%CPU | CPU占用 |
%MEM | 占用内存空间 |
VSZ | 占用虚拟内存 |
CMMAND | 调用命令 |
START | 开始时间 |
STAT | 状态:R运行,S睡眠 |
RSS | 占用实际内存 |
STAT:S睡眠,R运行,Z僵尸,T暂停,s有子进程,l多进程,<优先级高,N优先级低
注:如果查看CPU和内存使用-aux,如果看父进程使用-ef
结束进程
kill 进程号|进程名称
kill -9 强迫进程结束
kill all 进程名
查看进程树
理清楚父子关系
pstree
#有pid
pstree -p
top实时监控线程
top
#按cpu排序
shift p
#监测某个进程
top -p 线程号
#不显示僵尸进程和闲置进程
top -i
#踢掉线程
k
网络连接和Ip信息
Ping
netstat
显示网络状态和端口占用信息
基本语法
#查看该进程网络信息
netstat -anp|grep 端口号
#查看网络端口号占用情况
netstat -nlp|grep 端口号
-a | 显示所有正在监听和为监听套接字 |
---|---|
-a | 拒绝监视别名,能显示数字的全部转化成数字 |
-l | 列出在监听的服务状态 |
-p | 标识显示哪个进程在调用 |
crontab定时任务
其守护进程为crond,为自启动
crontab -e -l -r
-e | 编辑crontab定时任务 |
---|---|
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |
软件的安装
rpm
#查看已经按照的文件
rpm -qa
#查看火狐
rpm -qa | grep firefox
#带详细信息
rpm -qi firefox
#卸载
rpm -e rpm软件包
#不考虑依赖直接卸载
rpm -e --nodeps 软件包
#按照
rpm -i
rpm --nodeps
rpm -qa | 查看全部 |
---|---|
rpm -qi | 查看详细信息 |
rpm -e --nodes | 强制卸载 |
rpm -i --nodes | 强制按照 |
rpm -ivh rpm包 | 显示进度条按照 |
yum直接下载全部依赖
就是一键化按照
yum -y install|update|remove|check-update|list|clean|delist
- -y是全部回答为yes
install | 安装 |
---|---|
update | 更新 |
check-update | 检查可以更新 |
remove | 删除 |
list | 列出信息 |
delist | 显示依赖关系 |
clean | 清楚过期缓存 |
可以去修改国外镜像,因为国外下载比较慢
/etc/yum.repos.d/CentOS-base.repo
shell脚本
开头格式
一帮对于shell脚本都是以**#!/bin/bash**开始
sh执行脚本
sh 路劲文件
#也可以把文件改为可以执行,要使用相对路劲
./路劲文件
#source
source 路劲文件
#.
. 路劲文件
`
crontab -e -l -r
| -e | 编辑crontab定时任务 |
| ---- | ----------------------------- |
| -l | 查询crontab任务 |
| -r | 删除当前用户所有的crontab任务 |
[外链图片转存中...(img-8zE4AXxL-1660996285396)]
## 软件的安装
### rpm
```cmd
#查看已经按照的文件
rpm -qa
#查看火狐
rpm -qa | grep firefox
#带详细信息
rpm -qi firefox
#卸载
rpm -e rpm软件包
#不考虑依赖直接卸载
rpm -e --nodeps 软件包
#按照
rpm -i
rpm --nodeps
rpm -qa | 查看全部 |
---|---|
rpm -qi | 查看详细信息 |
rpm -e --nodes | 强制卸载 |
rpm -i --nodes | 强制按照 |
rpm -ivh rpm包 | 显示进度条按照 |
yum直接下载全部依赖
就是一键化按照
yum -y install|update|remove|check-update|list|clean|delist
- -y是全部回答为yes
install | 安装 |
---|---|
update | 更新 |
check-update | 检查可以更新 |
remove | 删除 |
list | 列出信息 |
delist | 显示依赖关系 |
clean | 清楚过期缓存 |
可以去修改国外镜像,因为国外下载比较慢
/etc/yum.repos.d/CentOS-base.repo
shell脚本
开头格式
一帮对于shell脚本都是以**#!/bin/bash**开始
sh执行脚本
sh 路劲文件
#也可以把文件改为可以执行,要使用相对路劲
./路劲文件
#source
source 路劲文件
#.
. 路劲文件