网络连接概念
- IP地址时一种逻辑地址,用来标识网络中一个个主机
- IP地址 = 网络地址 + 主机地址
- IP地址是一个 4 * 8bit (1字节) 由 0/1 组成的数字串(IP协议)
- 子网掩码NETMASK
- 子网掩码只有一个功能,就是将IP地址划分为 网络地址 + 主机地址
- 子网掩码与 IP地址进行与运算(都为1 的则结果为1,否则为 0)
- 默认网关 GETWAY
- 连接两个不同的网络的设备都可以叫网关设备;网关的作用就是实现两个网络之间进行通讯与控制
- 网关的地址就是网关设备的IP地址
- 域名服务器DNS
- DNS是域名服务器,用来解析域名的(域名与IP之间的解析)
- 如果没有这东西,登录某个网站就必须输入该网站的IP地址,有了DNS就可以直接输入网址
网络连接
- 桥接模式
- 同一个网段,IP容易冲突
- NAT模式
- 在当前主机下建立新的子网络,确保子网络IP不会和其他IP冲突
设置网络连接
删除 UUID一行
修改BOOTPROTO=static、NOBOOT=yes
添加IPADDR、NETMASK、GATEWAY、DNS1
网络配置
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp # dhcp:动态分配,改成 static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eno1
UUID=a3744ad9-f101-42fc-875a-c33b6b1bd61b
DEVICE=eno1
ONBOOT=yes
#IP地址(追加)
IPADDR=192.168.131.200
#网关(追加)
GATEWAY=192.168.131.2
#域名解析器(追加)
DNS1=192.168.131.2
重启网络服务
systemctl restart network #重启网络
reboot # 重启系统
设置主机名与hosts映射
在 Linux中的 /etc/hosts 文件中,可以设置IP映射关系
172.16.72.238 owner
ping owner
PING owner (172.16.72.238) 56(84) bytes of data.
64 bytes from owner (172.16.72.238): icmp_seq=1 ttl=124 time=13.1 ms
64 bytes from owner (172.16.72.238): icmp_seq=2 ttl=124 time=12.7 ms
64 bytes from owner (172.16.72.238): icmp_seq=3 ttl=124 time=12.6 ms
网络服务设置
systemctl start network #开启网络
systemctl restart network #重启网络
systemctl stop network #关闭网络
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
#设置成static
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=ab7855db-6a29-42dc-a901-ad68baec3db5
DEVICE=ens33
ONBOOT=yes #自动连接网络
#IP
IPADDR=192.168.41.123
#网关
GATEWAY=192.168.41.2
#DNS
DNS1=192.168.41.2
查看网络状况
netstat -anp
常用命令
系统服务命令
- systemctl start 服务名:启动服务
- systemctl stop 服务名:关闭服务(临时的)
- systemctl status 服务名:查看服务状态
- systemctl restart 服务名:重启服务
- systemctl disable 服务名:关闭服务自启动
- systemctl enable 服务名:开启服务自启动
- systemctl --type service:查看正在运行的服务
- systemctl list-unit-files:查看所有服务器的自启配置
其他命令
- useradd:libai 添加用户
- passwd:libai 给libai添加密码用户添加密码
- whereis file-name:查看文件
- whoami:查看当前用户是谁
- ll -a:查看隐藏文件
- echo $$:显示当前进程
- shutdown -h/-r now:立即关机/重启
- reboot:重启计算机
- sync:把内存的数据同步到磁盘中
特殊字符
- $:代表变量
- *:代表通配符
- ~:代表当前用户的主目录(root的主目录是/root,普通用户的主目录是 /home/)
- -:一个缩写参数(一个杠杠)
- --:一个单词参数(两个杠杠)
Linux文件系统
Linux下一切皆文件
Linux文件目录
# 挂载磁盘,将硬盘3挂载到/usr/upload下
mount /dev/disk3 /usr/upload
usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于Windows下的program files目录
/usr/local:一般用于安装软件
/opt:用于存放软件的安装包,这些安装包安装一般都安装在 /usr/local/目录下
var:这个目录存放着在不断扩充着的东西,我们习惯将那些经常被修改的文件存放在该目录下,比如运行各种日志文件
bin ->usr/bin:这个目录存放经常使用的命令
sbin ->超级管理员使用的命令
boot:这个目录存放启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
etc:这个目录存放所有的系统管理所需要的配置文件
dev:dev是device(设备)的缩写,该目录下存放的是Linux外部设备,Linux中的设备也是以文件形式存在的
root:该目录为系统管理员目录,root是具有超越权限的用户
home:普通用户的主目录,在Linux中,每个用户都有一个自己的文件夹目录,一般该文件夹以用户名的账号命名
lib ->usr/lib:这个,目录存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件
,几乎所有的应用程序都需要用到这些共享库
mnt:系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将光驱挂载在/mnt/上,然后进入
该目录就可以查看光驱里的内容
tmp:这个目录是用来存放一些临时文件的
操作文件
#创建文件夹
mkdir dir
#创建文件
touch file
#查看文件目录
ll
ls
ll -a #查看所有文件(包含隐藏文件)
vi与vim
- 正常模式
以vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用「上下左右」按键来移动光标,你可以使用「删除宇符」或「删除整行」 来处理档案容,也可以使用复制、粘贴J来处理你的文件数据。
- 插入模式
按下 i,I,o, O, a, A, r, R等任何一个字母之后才会进入编辑模式,一般来说按 i 即可.
- 命令行模式
按下esc 或者 ctrl + [ 进入正常模式,按下冒号:,进入命令行模式,在这个模式当中,可以提供你相关指令, 完成读取、存盘、替换、离开vim、显示行号等的动作则是在此模式中达成的!
快捷键
-
拷贝当前行:yy,拷贝当前行向下5行:5yy,并粘贴(输入p)
-
删除当前行:dd,删除当前行向下5行:5dd
-
设置行号:以冒号开头,set nu
//设置行号 :set nu //取消行号 :set nonu
-
查找文件中的某个单词:以斜杠开头,输入关键词,按 n 键查找下一个
/abc
-
首行,尾行
//首行 gg //尾行 G //行操作 h、j、k、l:左、下、上、右 //以数字开头则表示跳跃多少行列:10h:向左跳跃10个空格
-
跳转多少行,跳转第35行:
35+shift+g
-
撤回/恢复:
#撤回 u #恢复 CTRL + r
用户管理
用户添加删除
#添加用户,默认在home目录下创建同名目录
useradd 用户名
#设置密码
passwd 用户名
#删除用户,但是保留主目录
userdel 用户名
#删除用户及主目录
userdel -r 用户名
查看用户信息
#查看用户信息
id root
uid=0(root) gid=0(root) 组=0(root)
用户组
#新增用户组
groupadd 组名
#删除用户组
groupdel 组名
#添加用户时直接分配组
useradd 用户名 -g 用户组名
#修改用户的组
usermod 用户名 -g 用户组名
用户和组相关文件
/etc/passwd 文件
用户( user )的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
/etc/shadow 文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group 文件
组(group)的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
实用指令
运行级别
0:关机
1:单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用的运行级别是 3 和 5,也可以指定默认运行级别
#切换级别
init 0 #关机
#查看当前级别
systemctl get-default
#设置默认级别
systemctl set-default multi-user.target #设置多用户网络级别
systemctl set-default graphical.target #设置图形化界面
找回root密码
仅Centos7版本后有效
- 重启系统,在进入登记页面前,选择core,然后按 e 键
- 进入后找到 UTF-8,在后面输入 init=/bin/sh,然后快捷键 CTRL+x 进入单用户模式
- 在光标闪烁的位置中输入:mount -o remount,rw /
- 在新的一行输入:passwd,然后回车输入新密码(密码长度最好8位以上,但不是必须的)密码修改成功后,会显示passwd字样说明密码修改成功
- 在光标闪烁的位置中输入:touch /.autorelabel
- 继续在闪烁的位置输入:exec /sbin/init (这个过程有点长,耐心等待),完成后系统会自动重启,新的密码就生效了
帮助指令
#获取指令 ll 的帮助信息
man ls
help ls
文件目录指令
#创建目录
mkdir one
#创建多级目录
mkdir one/two/three -p
#删除目录、文件。-r:递归,-f:强制
rm -rf 文件/目录
#拷贝文件/目录。-r:递归,
cp 拷贝源 拷贝到哪里
#强制覆盖同名文件
\cp 拷贝源 拷贝到哪里
#分屏查看文件内容。空白键 向下翻页,pageup 向上翻页,q 退出
less 文件名
#查看文件前10行(默认)
head 文件名
head 文件名 -n 5 #指定查看前5行
#查看文件后10行(默认)
tail 文件名
tail 文件名 -n 5 #指定查看后5行
#输出内容到控制台
echo $PATH
# 重定向 >
echo 'hello world' > 文件名 #将 hello world 内容输入到文件中
echo 'hello world' >> 文件名 #将 hello world 内容追加到文件中
ll > 文件名 #将查询到的结果写入到文件中,如果文件不存在则自动创建
# 软连接,类似于快捷键
ln -s 源文件或目录 软连接名
# 删除软连接
rm 软连接名 -f
#查看历史命令
history
history 10 #查看10条历史命令记录
#执行历史命令
!历史命令编号 #如:!23,执行历史第23条命令
#时间指令
date
date "+%Y-%m-%d %H:%M:%S"
#设置日期时间
date -s "2021-12-21 21:09:55"
#查看日历
cal
#查看本年度日历
cal 2021
#搜索查找
find 搜索目录 -name 文件名
#查看指令位置
which 指令名称
#查看文件
locate 文件名 #在执行前,需要先执行 updatedb
#管道 | 与 grep
ll | grep temp
cat one.txt | grep two -n # -n 可以显示内容所在的行号
压缩与解压
#压缩
gzip 文件
zip 文件
tar -zxvf 压缩包 -C 解压到哪里
#解压
gunzip 压缩包
unzip 压缩包
tar -zcvf 压缩包名字 需要压缩的文件或目录
# tar的参数
t:列出文件
f:指定文件名
不管是解压还是压缩,都要参数 z
组管理与权限管理
组修改
Linux中,每个用户必须属于一个组(group)
文件所有者,一般为文件创建者
# 修改文件所有者
chown 用户名 文件名 # 将该文件所有者修改为当前用户名
# 修改文件所在组
chgrp 组名 文件名 # 将该文件所有者修改为当前用户名
权限
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
第0位,用来确定文件类型(d,-,l,c,b)
- d:代表目录
- -:代表普通文件
- l:代表连接
- c:代表字符设备文件,鼠标,键盘
- b:块设备,硬盘
第1-3位,确定所有者拥有该文件的权限
第4-6位,确定所属组拥有该文件的权限
第7-9位,确定其他用户拥有该文件的权限
权限解释rwx,r=4,w=2,x=1
作用在文件上
-
r:代表可读取文件
-
w:代表可写入文件内容
-
x:代表可执行该文件
作用在目录上
-
r:代表可读取查看目录
-
w:代表可修改目录
-
x:代表可进入该目录
其他说明
1:如果是文件,则表示硬链接数;如果是目录则表示子目录数
权限修改
# chmod 指令
# 第一种方式:+、-、= 变更权限
# u:表示所有者 g:表示所属组 o:代表其他人 a:代表所有人
chmod u=rwx,g=rx,o=x 文件或目录名 #给所属者赋予读写执行权限,所属组赋予读执行权限,其他人执行权限
chmod o+w 文件或目录名 #给其他人添加写入权限
chmod a-x 文件或目录名 #给所有人都取消执行权限
定时调度
基本语法
crontab 【选项】
选项 | 说明 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab定时任务 |
-r | 删除当前用户所有的crontab定时任务 |
设置调度文件:/etc/crontab
设置个人任务调度。执行crontab -e 命令
接着输入:*/1 * * * * ll > /tmp/to.txt
重启调度任务
service crond restart
项目 | 含义 | 范围 |
---|---|---|
第一个 * | 一个小时中第几分钟 | 0-59 |
第二个 * | 一天中第几小时 | 0-23 |
第三个 * | 一个月中第几天 | 1-31 |
第四个 * | 一年中第几个月 | 1-12 |
第五个 * | 一周中周几 | 0-7(0和7都代表星期天) |
特殊符号的说明
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个 * ,就代表一小时中每分钟都执行一次 |
, | 代表不连续的时间。比如:“0 8,12,16 * * *”,就代表每天第8小时0分钟,12小时0分钟,16小时0分钟执行一次 |
- | 代表连续的时间。比如:“0 5 * * 1-6”,就代表每周一到周六每天5点0分执行一次 |
*/n | 代表每隔多久执行一次。比如:“*/10 * * * *”,就代表每隔10分钟就执行一遍 |
at定时任务
at命令是一次性定时计划任务,at守护进程atd会以后台模式运行,检查作业队列
默认情况下,atd守护进程每60秒检查一次队列,有队列作业时,会检查队列作业时间,如果时间与当前时间匹配,则运行次作业
在使用at命令时,一定要保证atd进程的启动,可以使用 ps -ef | grep atd 来查看
命令:at 【选项】【时间】
CTRL+D 结束at命令的输入,需要输入两次
进程
基本介绍
ps -a:显示当前终端的所有进程信息
ps -u:以用户的格式显示进程信息
ps -x:显示后台进程运行的参数
命令
#查看进程 -e 显示全部进程 -f 显示全部格式
ps -ef | grep xxx
#终止进程
kill 【选项】进程号(通过进程号杀死/终止进程)
killall 进程名(通过进程名杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
#常用选项
# -9:表示强迫进程立即停止
服务管理(service)
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld , sshd 防火墙等) ,因此我们又称为守护进程,是Linux中非常重要的知识点。
service管理指令
# CentOS7.0后,很多服务不再使用service,而是systemctl
service 服务名 [start | stop | restart | reload | status]
可以通过查看 /etc/init.d 目录来判断是否可以使用service指令,显示绿色目录的则表示可以使用
查看系统服务
ll /etc/init.d
#或者如下
setup
#选择系统服务,前面带了 * 号的,都是启用了服务自启动
#按 tab 键退出
服务自启动
systemctl管理命令
可以查看 /usr/lib/systemd/system 文件夹,来查看有哪些服务可以使用
systemctl 来控制
基本语法:systemctl [start | stop | restart | status | disable | enable]
服务名
systemctl list-unit-files (查看服务开机启动状态)
systemctl is-enabled 服务名(查询某个服务是否自启动)
通过chkconfig命令可以给服务的各个运行级别设置自启动/关闭
chkconfig指令管理的服务在/etc/init.d 查看
注意: Centos7.0后,很多服务使用systemctl管理
基本语法(Centos7已经不再使用一下命令)
# 使用细节:chkconfig重新设置服务后自启动或关闭,需要重启机器 reboot 生效
chkconfig --list
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off #对服务名 在 级别5 设置自启动/关闭
防火墙打开或关闭指定端口
firewall-cmd --permanent --add-port=端口/协议 #开启端口
firewall-cmd --permanent --remove-port=端口/协议 #关闭端口
#不管是关闭还是开启,都需要重新载入才能生效:
firewall-cmd --reload
#查询端口是否开放
firewall-cmd --query-port=端口/协议
# 查询端口
netstat -anp
# 使用案例
# 开启端口:111
firewall-cmd --add-port=111/tcp
firewall-cmd --reload
# 关闭端口:111
firewall-cmd --remove-port=111/tcp
firewall-cmd --reload
包管理
rpm管理
rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager ( RedHat软件包管理工具)的缩写,类似windows的setup.exe ,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。
Linux的分发版本都有采用( suse,redhat, centos等等) ,可以算是公认的行业标准了。
# 查询指令,查询所有rpm安装的软件包
rpm -qa | grep firefox
firefox-68.10.0-1.el7.centos.x86_64
#名称:firefox
#版本号:68.10.0
#适用操作系统:1.el7.centos.x86系统
#如果是 i686、i386表示32位系统,noarch表示32,64版本通用,64表示64位操作系统
#查询是否安装Firefox软件包
rpm -q firefox
#查询Firefox软件包的信息
rpm -qi firefox
#查询Firefox软件安装时的附带文件信息
rpm -ql firefox
#查询文件所属的软件包
rpm -qf 文件名
#rpm包卸载
rpm -e 包名
#强制删除
rpm -e --nodeps 包名
#rpm安装
rpm -ivh 包名全路径
#i=install 安装
#v=verbose 提示
#h=hash 进度条
yum
Yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装 ,可以自动处理依赖性关系 ,并且一 次安装所有依赖的软件包。
yum基本指令
#查看有没有对应的安装包
yum list | grep 软件名
#下载安装
yum install 软件名
Shell编程
shell脚本,约定俗成以 .sh 结尾的文件
# 文件开头默认要写上这句话
#!/bin/bash
echo "hello world"
执行该文件方式
-
#赋予可执行权限 chmod u+x helle.sh #执行脚本 ./hello.sh
-
#直接执行脚本 sh hello.sh
变量
变量介绍
- Linux Shell中的变量分为,系统变量和用户自定义变量。
- 系统变量: $HOME、$PWD、$SHELL、 $USER等等,比如: echo $HOME等等.
- 显示当前shell中所有变量: set
变量定义
定义变量:变量=值
撤销变量: unset变量
声明静态变量: readonly 变量,注意:不能unset
变量定义规则
- 变量名称可以由宇母、数字和下划线组成,但是不能以数字开头。5A=200(x)
- 等号两侧不能有空格
- 变量名称一般习惯为大写这是规范
将命令的返回值赋值给变量
#1、反引号
echo A=`date`
#2、$()
echo A=$(date)
#二者等价
环境变量
基本语法
- export变量名=变量值(功能描述:将shell变量输出为环境变量/全局变量)
- source配置文件(功能描述:让修改后的配置信息立即生效)
- echo $变量名(功能描述:查询环境变量的值)
多行注释
:>>!
被注释的内容
!
位置参数
基本语法
- $n ( 功能描述: n为数字, $0代表命令本身,$1-$9代表第一到第九个参数 ,十以上的参数,十以上的参数需要用大括号包含,如${10} )
- $* (功能描述:这个变量代表命令行中所有的参数, $*把所有的参数看成一个整体)
- $@ (功能描述:这个变量也代表命令行中所有的参数,不过$ @把每个参数区分对待)
- $# (功能描述:这个变量代表命令行中所有参数的个数)
hello.sh脚本
#!/bin/bash
echo "0=$0,1=$1,2=$2,10=${10}"
echo "参数个数:$#"
echo "命令行中所有 参数:$@"
echo "所有s 参数:$*"
#执行脚本
sh hello.sh 100 200 300
#结果
0=/tmp/hello.sh,1=100,2=200,10=
参数个数:3
命令行中所有 参数:100 200 300
所有s 参数:100 200 300
预定义变量
- $$ (功能描述:当前进程的进程号( PID) )
- $! (功能描述:后台运行的最后一个进程的进程号( PID) )
- $? (功能描述:最后一-次执行的命令的返回状态。如果这个变量的值为0 ,证明上一 个命令正确执行
如果这个变量的值为非0 (具体是哪个数,由命令自己来决定) ,则证明.上一个命令执行不正确了。)
运算符
-
$((运算式)) 或 $[运算式] 或 用反引号扩 expr 运算式
-
乘:\* 除:/
条件判断
多分支
case流程控制
#基础语法
case $1 in
1)
echo "输入的是一"
;;
2)
echo "输入的是二"
;;
*)
echo "输入的是未知数字"
;;
esac
for循环
for i in "$*"
do
echo num is $i
done
echo "-----------------------"
for j in "$@"
do
echo num is $j
done
while循环
read读取控制台输入
基本语法
read 【选项】【参数】
选项:
- -p:指定读取值时的提示符
- -t:指定读取值时等待的时间,如果没有在指定时间内输入,就不再等待了
参数
- 变量:指定读取值的变量名
#!/bin/bash
# hello.sh
read -p "请输入第一个参数:" n1
echo "控制台输入的第一个参数是:$n1"
read -t 5 -p "请输入第二个参数:" n2
echo "控制台输入的第二个参数是:$n2"
函数
自定义函数
read -p "请输入第一个参数:" n1
read -t 5 -p "请输入第二个参数:" n2
function getSum(){
echo "控制台输入的第一个参数是:$n1"
echo "控制台输入的第二个参数是:$n2"
SUM=$[$n1+$n2]
echo "两数和为:$SUM"
}
getSum $n1 $n2
标签:文件,教程,入门,查看,echo,systemctl,参数,Linux,目录
From: https://www.cnblogs.com/letgofishing/p/17749715.html