102、远程连接、网络、shell文件管理
今日内容概要
- 远程连接
- 网络
- shell文件管理
今日内容概要
远程连接
1.远程链接软件(centos虚拟机开启ssh服务的,监听了22端口)
win:
finalshell
xshell :收费的,个人版免费
cmd
2.快照
保存这一时刻,后期恢复到这里
可以拍摄多个快照
网络
网络配置
1.子网掩码
1.一种用来指明一个IP地址的哪些位标识的是主机所在的网络地址以及哪些位标识的是主机地址的位掩码(255.255.255.0)
2..dhcp:动态主机配置协议 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)允许服务器向客户端动态分配 IP 地址
3.网关:就是连接设备与设备之间的桥梁
4.DNS:指域名系统。 将域名和IP地址相互映射
2.mac网络配置
网址:https://blog.csdn.net/hadues/article/details/129214087
https://blog.51cto.com/u_15687422/5389794
3.win上有网络模式
1.桥接:跟宿主机在同一个网段
2.Nat地址转换:虚拟机自有一套网络
1.win上直接选它
2.mac上选新建 vmnet3
3.pd:host-only
3.仅主机
DHCP工作原理
DHCP是一种使网络管理员能够集中管理和自动分配IP网络地址的通信协议。在IP网络中,每个链接Internet的设备都需要分配唯一的IP地址,DHCP使网络管理员可以从中心节点监控和分配IP地址。
DHCP使用了租约的概念,称为计算机IP地址的有效期,租期时间的长短取决于连接Internet时间的长短,透过较短的租期,DHCP能够在一个计算机比IP地址多的环境中动态地重新配置网络。
DHCP支持为计算机分配静态地址,如需要永久性IP地址的Web服务器。
如果之前装机没配好--->后期可以再配置
1.vmware网段设置好
1.虚拟机选用了这个nat地址转换
2.虚拟机中,使用命令和修改文件
ls /etc/sysconfig/network-scripts
ifcfg-ens160 #ifcfg开头的文件,如果有多个网卡,有多个ifcfg-ensxx文件
vi ifcfg-ens160
TYPE=Ethernet
DEFROUTE=yes
NAME=ens32
UUID=cc56788f-4d01-4848-82d1-f8c4dab9aa86
DEVICE=ens32
----------------------------------------
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.100
GATEWAY=10.0.0.254
DNS1=119.29.29.29
DNS2=114.114.114
-修改完后重启网卡
systemctl restart network #重启网卡
ip addr # 查看ip地址
3.保存一个模板机
-shutdown now #关机
- 克隆一个虚拟机(完整克隆)
- 开启,进入,修改ip 10.0.0.100
-关机
-以后想再复制一个虚拟机,直接基于模板机克隆即可
shell
1.shell是什么?
Bash Shell是一个命令解释器(python解释器),它在操作系统的最外层,负责用户程序与内核进行交互操作的一种接口,将用户输入的命令翻译给操作系统,并将处理后的结果输出至屏幕
没有图形化界面了
远程链接工具,链接上,就打开了一个shell窗口,可以输入命令
2.进入和退出:bash exit
3.shell 能干什么
使用Shell实现对Linux系统的大部分管理,例如:
1.文件管理(文件创建,移动,复制,删除,编辑…)
2.权限管理(不同用户不通权限)
3.用户管理(创建,删除….)
4.磁盘管理(挂载)
5.网络管理
6.软件管理
原来win上通过 点点点 完成的操作,现在都用bash命令来操作
shell的使用
1.直接输入命令 –> 效率低 –>适合少量的工作
ls
pwd
2.Shell Script(shell 脚本) –> 效率高–>适合复杂重复性的工作
1.django项目部署:
uwsgi -x xx.xml
celery work,beat
2.例如:创建100个用户,单纯输入命令需要执行100次,而Shell脚本只需要几行命令即可完成100个用户的创建
1.vi test.sh
2.
for i in {1..100}
do
echo "create test$i"
done
-方式一:chmod +x test.sh #加入执行权限
./test.sh # 可以执行
-方式二:
bash test.sh
Shell提示符
1.[root@nana ~]# 解释
1.$ = 普通用户, # = root用户(超级管理员)
2.root:当前登录用户
3.@ :没有意义
4.nana:主机名称,如果很长会显示不全,通过hostname查看
5.~:当前用户所在家目录 root用户家路径是 /root
6.#:通常指超级管理员
7.$:普通用户
2.
[root@nana ~]# whoami
root
[root@web01 ~]# useradd jack
[root@web01 ~]# passwd jack
Changing password for user jack.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[root@web01 ~]# su jack
[root@web01 ~]# cd root 提示没有权限
3.主机名
hostname # 查看主机名
4.创建用户(先听)
useradd lqz # 在/home 路径下创建一个根用户同名的文件夹--->这个用户家路径
passwd lqz # 给用户设置密码
使用lqz登录 --->final-shell重新使用nana链接
root用户链接了,切换成nana用户:su nana # 要不要输入密码,取决于你是谁
5.whoami:看我是谁
Shell基础语法
命令行bash shell, 为用户提供输入, 执行命令的界面
1.命令 选项 参数:command [-options] [arguments]
2.
[root@lqz ~]# ls #命令
[root@lqz ~]# ls -a #命令+选项
[root@lqz ~]# ls -a /home/ #命令+选项+参数
ls -a -l
ls -la
ls --all
ls --list
ls -c
ls --color
ls -a /tmp
ls -al # 等同于 ls -l 等同于 ll
3.命令: 整条shell命令的主体
4.选项: 用于调节命令的输出效果
以 “-”引导短格式选项(单个字符),例如“-l”
以“--”引导长格式选项(多个字符),例如“--color”
多个短格式选项可以写在一起,只用一个“-”引导,例如“-al”
5.参数: 命令操作的对象,如文件、目录名等
6.选项和参数可以出现位置调换,命令,选项,参数之间要至少有一个空格
7. 命令必须开头, 选项和参数位置可以发生变化
shell 补全
tab键可以实现命令补全,路径补全,在实际生产中tab补全往往是我们使用的最多的, 因为可以减少执行命令以及路径出错率。
1.敲了命令,按tab,如果有多种选择,都会列出来,如果没有了,只有这一个,直接补齐
2.查看本机ip:ip addr
3.使用ifconfig:找不到,外部命令,第三方软件支持
yum install net-tools -y
ifconfig # 查看ip了
win:ipconfig
4.问题:
刚刚不能上网了---->dns有问题--->解决:加了个dns2
把yum源改成了阿里云的源---->
1.cd /etc/yum.repos.d
2.下载http://mirrors.aliyun.com/repo/Centos-7.repo,上传到 /etc/yum.repos.d # 下载Centos-7.repo 放在这个路径下即可
3.yum clean all
4.yum makecache
shell命令快捷键
Ctrl + a 光标跳转至正在输入的命令行的首部
Ctrl + e 光标跳转至正在输入的命令行的尾部
Ctrl + c 终止前台运行的程序
Ctrl + z 将任务暂停,挂至后台
Ctrl + l 清屏,和clear命令等效。
Ctrl + k 删除从光标到行末的所有字符
Ctrl + u 删除从光标到行首的所有字符
Ctrl + r 搜索历史命令, 利用关键字,Tab建选中
Ctrl + w 按单词或空格进行向前删除
Ctrl + 左右建 按单词或空格进行向前向后跳
ps:在命令行前加面加 "#" 则该命令不会被执行
命令History
1.-w 保存命令历史到历史文件
2.-c 清空命令历史记录, 不会情况文件
3.-d 删除命令历史的第 N 条行
4.使用双 !! 可执行上一条执行过的命令
[root@nana ~]# ls
lqz.com
[root@nana ~]# !!
ls
lqz.com
5.输入!6, 执行history命令历史中第 6 行命令
[root@nana ~]# !6
touch nana.com
6.使用!cat, 调用history命令历史最近一次执行过的cat命令
[root@nana ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
[root@nana ~]# !cat # 最近一次
cat /etc/sysconfig/network-scripts/ifcfg-eth0
[root@nana ~]# ls /etc/passwd
#调用上一条命令的最后参数或选项, 按下ESC松开, 然后按下 "."
[root@nana ~]# cat
[root@nana ~]# cat /etc/passwd
#第二种方式, 输入!$
[root@nana ~]# ls !$
ls /etc/passwd
/etc/passwd
7.history -d 100 删除第100条历史记录
8. history -c 清空记录(保存到文件中的还有)
9.history -w 保存历史集合,保存到当前用户的家目录 .bash_history
10.> .bash_history 清空文件的保存(操作完,不让别人看你执行的命令)
命令别名
命令别名将用户经常使用的复杂命令简单化, 可以用"alias 别名名称=命令"
命令创建属于自己的命令别名, 若要取消一个命令别名,则是用unalias 别名名称
命令。
1.定义临时别名, wk为查看eth0网卡别名
[root@nana ~]# alias wk='ifconfig'
2.alias 查看一下是否成功,发现系统内置了很多
[root@nana ~]# wk
3.取消别名(都是临时的)
[root@nana ~]# unalias wk
4.如果定义命令本身, 会执行什么?
[root@nana ~]# alias ifconfig='ifconfig eth0'
5.绝对路径执行, 调用命令本身
[root@nana ~]# /sbin/ifconfig
6.通过转义字符, 调用命令本身
[root@WebServer ~]# ifconfig
7.取消别名
[root@nana ~]# unalias ifconfig
8.永久生效,/etc/bashrc
[root@nana ~]# echo "alias ifconfig='ifconfig eth0'" >> /etc/bashrc
echo "alias nana=ls -al" >> /etc/bashrc # 所有人都生效
echo "alias nana=ls -al" >> /root/bashrc #只针对于root
Bash Shell获取帮助
命令 –help帮助
1. 命令 --help 提示你怎么用
2.
[root@nana ~]# ls --help
用法: [选项]...[文件]...
ls 常见选项
-a #查看目录下的所有文件,包括隐藏文件
-l #以长格式的方式显示文件的详细内容
-h #以人性化的方式显示内容,配合-l使用
-d #只列出目录名,不列出目录以下的内容
-t #按修改时间进行排序
-i #显示文件的inode(该文件在该分区的一个编号)
3.
[root@nana ~]# date --help
Usage: date [OPTION]... [+FORMAT]
or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
[root@nana ~]# date +%F #查看日期
2023-07-27
[root@nana ~]# date -s 12:00 #修改时间
时间不是用来查看,而是有其他的用途
[root@web01 ~]# touch `date +%F`_file.txt
[root@web01 ~]# ls
2019-03-28_file.txt
4.命令 man手册
man ls # 查看ls命令的手册
q退出
空格翻页,上下键翻页
Bash Shell命令流程
1.当我们执行一个命令, 整个命令执行流程如下:
判断命令是否通过绝对路径执行
判断命令是否存在alias别名
判断用户输入的是内部命令还是外部命令
Bash内部命令直接执行,外部命令检测是否存在缓存
通过PATH路径查找命令,有执行,无报错
2.什么是内部命令,什么是外部命令
内部命令: shell程序自带的命令。(linux内置的命令 ls pwd)
外部命令: 在系统PATH变量的某个路径下的可执行程序。(第三方软件支持的 ifconfig)
3.如何检查用户输入的命令是内部命令还是外部命令:type -a 命令
#cd命令属于shell内部命令
[root@linux-node1 ~]# type -a cd
cd is a shell builtin
cd is /usr/bin/cd
#ping属于外部命令, 同时会打印当前命令路径
[root@nana ~]# type -a ping
ping is /bin/ping
4.如果是外置命令,Bash可以通过查找PATH变量,获取该命令的绝对路径。
# 打印当前环境变量目录
[root@nana ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
ps: PATH由多个路径组成,每个路径值之间用冒号间隔,对这些路径的增加和删除操作都将影响到Bash解释器对Linux命令的查找
echo $PATH--->查看环境变量--->任意路径敲命令,都能找到,命令在环境变量中
5.如果是外置命令还会涉及到一个内存缓存,也就是说,当我们出现重复执行相同的命令,会通过缓存调取执行,也就意味着不会搜索PATH路径。
1.表缓存命令所在位置
[root@nana ~]# hash
hits command
1 /usr/bin/tty
3 /sbin/ifconfig
2.已缓存命令,如果移动位置会导致无法找到该命令
[root@nana ~]# mv /sbin/ifconfig /bin/
[root@nana ~]# ifconfig
-bash: /sbin/ifconfig: No such file or directory
3.删除缓存过的ifconfig命令, 即可执行
[root@nana ~]# hash -d ifconfig
[root@nana ~]# ifconfig
4.当然可以清空缓存表
[root@nana ~]# hash -r
5.注意: 命令缓存hash需要注意如下情况:
1.只要执行外部命令1次就会对该命令进行缓存
2.如果将命令移动了位置,该如何执行
a.使用绝对路径执行
b.删除hash表的缓存指令
3.外部命令,一般都在 :/usr/sbin/
6.命令执行流程总结: 当我们执行了一个ping命令之后, 整个命令执行的流程步骤如下:
1.检查执行的命令是否使用的是绝对路径执行的。
2.检查ping命令是否存在alias别名
3.检查ping命令是内部命令还是外部命令
4.如果是内部命令Bash直接执行,如果是外部命令,首先检查Hash缓存,存在则直接调取
5.如果该命令不存在Hash缓存,则通过PATH路径进行逐行查找该命令所在的位置
6.如果PATH路径没有查找到该命令所在的路径,则返回错误码。command not found
文件管理
系统目录结构
几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件, 而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树的分支, 所以该结构又被称为“目录树”。Windows: 以多根的方式组织文件 C: D: Linux:以单根的方式组织文件 /
Centos7的目录结构
存放命令相关的目录
1.存放命令相关的目录
/bin, 普通用户使用的命令 /bin/ls, /bin/date
/sbin,管理员使用的命令 /sbin/service,poweroff,useradd…
只要看到bin路径,就应该意识到放的是可执行文件
which 命令名
whereis 命令名 更全
"""
[root@localhost ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@localhost ~]# which useradd
/usr/sbin/useradd
"""
存放用户相关数据的家目录
1.存放用户相关数据的家目录,比如:windows不同的用户登陆系统显示的桌面背景不一样
/home,普通用户的家目录, 默认为/home/username
2.环境变量的东西不要删,删掉试一下
3./root,超级管理员root的家目录, 普通用户无权操作
"""
[root@localhost ~]# pwd
/root
[root@localhost ~]# useradd tt
[root@localhost ~]# ls /home/
tt
"""
系统文件目录
1.usr,相当于C:Windows
/usr/local,软件安装的目录,相当于C:Program
/usr/bin/,普通用户使用的应用程序(重要)
/usr/sbin,管理员使用的应用程序(重要)
/usr/lib,库文件Glibc 32bit
/usr/lib64,库文件Glibc 64bit
2.
df -h #df -h查看系统中文件的使用情况
Size 分割区总容量
Used 已使用的大小
Avail 剩下的大小
Use% 使用的百分比
Mounted on 路径地址
3.
du -sh * 查看当前目录下各个文件及目录占用空间大小
du -sh /usr/
4.标准是实现自动化的基础
不通主机的相同的软件,都放在相同路径下,便于管理,实现自动化
现在一般安装的软件,不放在/usr/local下了
5.总共有一千来个命令
ls /usr/bin/ | wc -l
ls /usr/sbin/ | wc -l
6.查看命令依赖那些库文件
ldd /bin/ls
7.补充:动态链接库文件
win上能看到 xx.dll
linux上能看到 xx.so
c,c++编写过后,编译后会产生两种东西
可执行文件
动态链接库问题
启动目录
1./boot 存放的系统启动相关的文件,例如:kernel,grub(引导装载程序)
linux内核+GUN软件
启动机器时可以选择的启动模式
ls /boot/
配置文件目录
1./etc,极其重要,后续所有å服务的配置都在这个目录中
2./etc/sysconfig/network-script/ifcfg-,网络配置文件
3./etc/hostname,系统主机名配置文件,主机名很重要,有些特殊服务要依赖主机名,没有主4. 机名会报错起不来;修改了要重启:reboot
5./etc/resolv.conf,dns客户端配置文件,域名解析服务器,一般我们不配置,因为网卡的配置好了,会覆盖掉它,网卡的优先级高
6./etc/hosts,本地域名解析配置文件,域名解析,先找自己的hosts,再去域名解析
7./etc/motd :登录后显示的信息
8./etc/hosts 对应windows C:windows/system32/drivers/etc/hosts,黑客钓鱼网站
9.测试修改
yum install httpd -y
systemctl stop firewalld
echo "lqz NB" >/var/www/html/index.html
systemctl start httpd
可变的目录与临时目录
1./var,存放一些变化文件,比如/var/log/下的日志文件,登陆日志
2./var/tmp,进程产生的临时文件
3./tmp,系统临时目录(类似于公共厕所),谁都可以使用
4.查看登陆日志:cat /var/log/secure #查看登陆时间
6.进程产生的临时文件(360清理垃圾,就是会清理)
设备目录文件
1./dev,存放设备文件,比如硬盘,硬盘分区,光驱,等等
2./dev/sd 硬盘设备
3./dev/null,黑洞设备,只进不出。类似于垃圾回收站
4./dev/random,生成随机数的设备
5./dev/zero,能远远不断的产生数据,类似于取款机,随时随地取钱
1. sda sdb sdc sda1 sdb4
linux中磁盘文件叫sd,第一个硬盘叫a,第二个叫b,sda1表示第一个磁盘的第一个分区,sdb4:第二个硬盘的第四个分区(服务可以插很多硬盘)
2. /dev/null
ls >/dev/null
3. /dev/random 生成随机数
echo $RANDOM
echo lqz_$RANDOM
批量创建随机用户,批量设置密码
4.源源不断取数据
dd if=/dev/zero of=/opt/test.txt bs=1M count=1024
'''
dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
'''
ll /opt/test.txt
ll -h /opt/test.txt
虚拟的文件系统
如对应的进程停止则/proc下对应目录则会被删除
1./proc,反映系统当前进程的实时状态 :process
ps:类似于小汽车的仪表板,能够看到汽车是否有故障,或者是否缺油了。
2.
ls /proc # 可以看到很多id号,pid号,进程号,唯一
ls 进程id号的文件夹
如果进程被关闭,id号的文件夹就没了
id号每次启动都不唯一,只有一个进程唯一,systemd 是进程号1的进程,所有进程都是基于它派生出来的
其他
1.media:提供设备的挂载点,媒体文件
# linux 新增了盘符,需要手动挂载
# 把光盘里的数据,挂载到media目录
mount /dev/cdrom /media/
2.mnt:提供设备的挂载点(同上)
3.opt:第三方工具,第三方软件默认安装的(mysql...)
4.run :下有pid,log结尾的文件
ls /run
cat sshd.pid # 进程运行的pid号,放在文件中
ps aux |grep sshd
# .lock文件的作用,锁机制
# 假设现在执行
yum install tree
# 再开一个窗口执行相同命令
yum install tree
'''
Another app is currently holding the yum lock; waiting for it to exit...
The other application is: yum
Memory : 71 M RSS (470 MB VSZ)
Started: Tue Aug 18 00:26:31 2020 - 00:24 ago
State : Sleeping, pid: 6191
'''
cat /run/yum.pid